注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

Delphi_XE2 Math单元函数09-2  

2015-04-18 12:03:00|  分类: delphixe7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Delphi_XE2 Math单元函数09-2

在一次调用中计算算术平均值(Mean)和标准偏差;24)函数PopnStdDev(constDat;总体标准差(STDP);Sqrt(PopnVar;??;(Xi?i?1N2?X)N;25)函数Variance(constData:;采样方差(样本方差)(VARS);TotalVa;S2?(Xi?;i?1N2?X);N?1;26)函数PopnVariance


在一次调用中计算算术平均值(Mean)和标准偏差(StdDev)

24) 函数 PopnStdDev(const Data: array of Extended): Extended;

总体标准差(STDP);Sqrt(PopnVariance(Data)),用于商业和财务的计算 总体标准差:

??

(Xi?i?1N2?X)N

25) 函数 Variance(const Data: array of Extended): Extended;

采样方差(样本方差)(VARS);TotalVariance(Data) /( N-1)) 样本方差:

S2?(Xi?

i?1N2 ?X)

N?1

26) 函数 PopnVariance(const Data: array of Extended): Extended;

总体方差:(VAR or VARP): TotalVariance/ N }; 总体方差:;

?2?(Xi?

i?1N2?X)

N

27) 函数 TotalVariance(const Data: array of Extended): Extended;

总方差:SUM(i=1,N)[(X(i) - Mean)**2] ;

2

?(Xi?

i?1N?X)

28) 函数 Norm(const Data: array of Extended): Extended;

计算向量X的二范数,返回值=Sqrt(a2+b2+…..)

?Xi?

i?1N2

29) 过程 MomentSkewKurtosis(const Data: array of Double; var M1, M2, M3, M4, Skew,

Kurtosis: Extended);

MomentSkewKurtosis::计算统计分解的核心因数,此过程仅此一种类型。

M1:平均值(Mean)

M2:方差(Variance)

Skew:反映分布的对称性[M3 / (M2(3/2))]

Kurtosis:反映分布的平坦性[M4 / Sqr(M2)]

30) 函数 RandG(Mean, StdDev: Extended): Extended;

RandG:产生一个随机数,符合高斯分布StdDev,其平均值为Mean,用于模拟数据抽

取样品误差

八、 普通/混杂函数

1. 极端测试:

。 NaN 用于判断计算中出现的错误情况,表示“不明确的数值结果”

就像一个无限大,一个 NaN双精度值有一个7FF的指数,但 NaN 值有一个不是0的分数域。

1) 函数 IsNan(const AValue: Double): Boolean; overload;

2) 函数 IsNan(const AValue: Single): Boolean; overload;

3) 函数 IsNan(const AValue: Extended): Boolean; overload;

测试是否为“无穷大”

就像一个NaN,一个无穷大的双精度值具有一个 7FF指数,但无穷大的值有一个0的分数域。无穷大的值可以是正的或负的,在高位指定其符号位。

4) 函数 IsInfinite(const AValue: Double): Boolean;

5) 函数 IsInfinite (const AValue: Single): Boolean; overload;

6) 函数 IsInfinite (const AValue: Extended): Boolean; overload;

2. 简单符号测试

判断Avlue的符号,返回-1,0,1。

type

TValueSign = -1..1;

const

NegativeValue = Low(TValueSign);

ZeroValue = 0;

PositiveValue = High(TValueSign);

1) 函数 Sign(const AValue: Integer): TValueSign; overload;

2) 函数 Sign(const AValue: Int64): TValueSign; overload;

3) 函数 Sign(const AValue: Double): TValueSign; overload;

4) 函数 Sign(const AValue: Single): TValueSign; overload;

5) 函数 Sign(const AValue: Extended): TValueSign; overload;

3. 浮点数比较

type

TValueRelationship = -1..1;

const

LessThanValue = Low(TValueRelationship);

EqualsValue = 0;

EqualsValue = High(TValueRelationship);

对于CompareFloat 和 SameFloa,如果epsilon没有给出(或者是0),我们将试图使用一个合理的基于浮点类型的精度来计算。

1) 函数 CompareValue(const A, B: Extended; Epsilon: Extended = 0): TValueRelationship;

根据大小返回三个常量(LessThanValue(-1)、(0)、overload; A与B比较,EqualsValue

)中的一个。 c(1)

2) 函数 CompareValue(const A, B: Double; Epsilon: Double = 0): TValueRelationship;

overload;

3) 函数 CompareValue(const A, B: Single; Epsilon: Single = 0): TValueRelationship;

overload;

4) 函数 CompareValue(const A, B: Integer): TValueRelationship; overload;

5) 函数 CompareValue(const A, B: Int64): TValueRelationship; overload;

6) 函数 CompareValue(const A, B:UInt64): TValueRelationship; overload;

7) 函数 SameValue(const A, B: Extended; Epsilon: Extended = 0): Boolean; overload; 检查

A和B的误差是否不超过Epsilon

8) 函数 SameValue(const A, B: Double; Epsilon: Double = 0): Boolean; overload;

9) 函数 SameValue(const A, B: Single; Epsilon: Single = 0): Boolean; overload;

4. 零测试

。 IsZero: 若A为0(非常非常接近于0或者不超过Epsilon)则返回“真”

1) 函数 IsZero(const A: Extended; Epsilon: Extended = 0): Boolean; overload;

2) 函数 IsZero(const A: Double; Epsilon: Double = 0): Boolean; overload;

3) 函数 IsZero(const A: Single; Epsilon: Single = 0): Boolean; overload;

5. 简单易用的条件函数

根据Boolean表达式的值返回两个可能值中的一个

1) 函数 IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = 0): Integer;

overload;inline;

2) 函数 IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64 = 0): Int64;

overload; inline;

3) 函数 IfThen(AValue: Boolean; const ATrue: UInt64; const AFalse: UInt64 = 0): UInt64;

overload; inline;

4) 函数 IfThen(AValue: Boolean; const ATrue: Single; const AFalse:Single = 0.0):Single;

overload; inline;

5) 函数 IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double = 0.0):

Double; overload; inline;

6) 函数 IfThen(AValue: Boolean; const ATrue: Extended; const AFalse:Extended =

0.0):Extended; overload; inline;

6. 各种随机函数

1) 函数 RandomRange(const AFrom, ATo: Integer): Integer; 在两个指定极值之间随机返

回一个数

2) 函数 RandomFrom(const AValues: array of Integer): Integer; overload; 从一个数组中随

机选择一个数值。

3) 函数 RandomFrom(const AValues: array of Int64): Int64; overload;

4) 函数 RandomFrom(const AValues: array of UInt64): UInt64; overload;

5) 函数 RandomFrom(const AValues: array of Double): Double; overload;

6) 函数 RandomFrom(const AValues: array of Single): Single; overload;

7) 函数 RandomFrom(const AValues: array of Extended): Extended; overload;

7. 范围测试函数

测试Avalue是否在Amin 和Amax之间

1) 函数 InRange(const AValue, AMin, AMax: Integer): Boolean; overload;

2) 函数 InRange(const AValue, AMin, AMax: Int64): Boolean; overload;

3) 函数 InRange(const AValue, AMin, AMax: UInt64): Boolean; overload;

4) 函数 InRange(const AValue, AMin, AMax: Single): Boolean; overload;

5) 函数 InRange(const AValue, AMin, AMax: Double): Boolean; overload;

6) 函数 InRange(const AValue, AMin, AMax: Extended): Boolean; overload;

8. 范围切断函数

迫使AValue处于AMin和AMax之间,若在范围之外,返回的是数值自己或上下限。

1) 函数 EnsureRange(const AValue, AMin, AMax: Integer): Integer; overload;

2) 函数 EnsureRange(const AValue, AMin, AMax: Int64): Int64; overload;

3) 函数 EnsureRange(const AValue, AMin, AMax: UInt64): UInt64; overload;

4) 函数 EnsureRange(const AValue, AMin, AMax: Single): Single; overload;

5) 函数 EnsureRange(const AValue, AMin, AMax: Double): Double; overload;

6) 函数 EnsureRange(const AValue, AMin, AMax: Extended): Extended; overload; 7)

9. 16、64位无符号整数除法一次调用得出整除结果和余数

十、过程 DivMod(Dividend: Cardinal; Divisor: Word; var Result, Remainder: Word); 十一、 过程 DivMod(Dividend:Uint64; Divisor: Uint64; var Result, Remainder: Uint64);

10. 舍入(圆整)到指定数位或10的幂权数。

Adigit是要舍入的10的权数,负数表示小数点后的位数。例Roundto(123827,3)=124000

ADigit 在37 到-37范围之中,下面是一些示例

3 = 10^3 = 1000 =千分位

2 = 10^2 = 100 =百分位

1 = 10^1 = 10 = 十分位

-1 = 10^-1 = 1/10 = 十分之一

-2 = 10^-2 = 1/100 = 百分之一

-3 = 10^-3 = 1/1000 = 千分之一

type

TRoundToRange = -37..37;

TRoundToEXRangeExtended = -20..20;

银行家舍入法:整数部分,偶数舍(2.5=2),奇数入(1.5=2)

1) 函数 RoundTo(const AValue: Extended const ADigit: TRoundToEXRangeExtended):

Extended;

RoundTo函数的变量遵循对称算术舍入运算法则(如果(实数的小数部分)Frac(X) <

否则,如果X>0返回X+1,如果X<0返回X-1)。其缺省凑整到1/100。0.5则返回X;

注:浮点舍入模式影响本函数的行为。

2) 函数 SimpleRoundTo(const AValue: Single; const ADigit: TRoundToRange = -2): Single;

算术舍入法:四舍五入(0.5=1,1.5=2,2.5=3)

3) 函数 SimpleRoundTo(const AValue: Double; const ADigit: TRoundToRange = -2):

Double;

4) 函数 SimpleRoundTo(const AValue:Extended; const ADigit: TRoundToRange = -2):

Extended;

九、 金融函数

遵循Quattro Pro标准,

参数约定:金钱收入为正,支出为负 (举例来说,借款人偿还贷款则借款人为负)。利率是每个支付期,11%的年利率,相当于每个月(11 / 100) / 12 = 0.00916667

type

TPaymentTime = (ptEndOfPeriod(期末), ptStartOfPeriod(期初));

1) 函数 DoubleDecliningBalance(const Cost, Salvage: Extended; Life, Period: Integer):

Extended;

{ Double Declining Balance (DDB) 双倍余额递减折旧法;Cost资产原值,Salvage 残值,Life资产寿命年限,Period欲求折旧的期次 } 计算指定期次Period内的折旧值(例如第2年的折旧额)。按下式计算,固定资产折旧年限到期前两年内,将资产账面净值扣除预计净残值后的净额平均摊销

2年折旧率??100%折旧年限

年折旧额?资产账面净值?年折旧率

三亿文库3y.uu456.com包含各类专业文献、文学作品欣赏、各类资格考试、幼儿教育、小学教育、生活休闲娱乐、Delphi_XE2 Math单元函数09等内容。

  评论这张
 
阅读(341)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017