这个单元包含复数处理,是通过一个自定义变体类型进行的。
复数的原始格式是矩形[x + yi] , 但是提供了对极坐标格式 [r*CIS(theta)]的有限转换支持。
这个单元中的一些函数、概念或常量由 Earl F. Glynn (www.efg2.com)提供,接着,他又作了如下的致谢..
这个UNIT(单元)中的一些想法是从《一个用于复数的Pascal工具》借来的,Pascal、Ada、& Modula-2杂志, 1985年5月/6月 ,第23-29页。
很多复数的公式都是从第4章开始的,《数学函数的手册》 (第九次印刷), Abramowitz和Stegun(编辑),多佛,1972年。
这个单元的一些函数和概念已经被交叉检查了: Wolfram Research的数学功能网站(functions.wolfram.com).
复数的原始格式是矩形[x + yi] , 但是提供了对极坐标格式 [r*CIS(theta)]的有限转换支持。
这个单元中的一些函数、概念或常量由 Earl F. Glynn (www.efg2.com)提供,接着,他又作了如下的致谢..
这个UNIT(单元)中的一些想法是从《一个用于复数的Pascal工具》借来的,Pascal、Ada、& Modula-2杂志, 1985年5月/6月 ,第23-29页。
很多复数的公式都是从第4章开始的,《数学函数的手册》 (第九次印刷), Abramowitz和Stegun(编辑),多佛,1972年。
这个单元的一些函数和概念已经被交叉检查了: Wolfram Research的数学功能网站(functions.wolfram.com).
Matthias Thoma提供了额外的帮助和概念。
1 复数变体创建实用工具 8个
function VarComplexCreate: Variant; overload;
function VarComplexCreate(const AReal: Double): Variant; overload;
function VarComplexCreate(const AReal, AImaginary: Double): Variant; overload;
function VarComplexCreate(const AText: string): Variant; overload;
function VarComplex: TVarType;
function VarIsComplex(const AValue: Variant): Boolean;
function VarAsComplex(const AValue: Variant): Variant;
function VarComplexSimplify(const AValue: Variant): Variant;
2 复数变体支持 18个
function VarComplexAbsSqr(const AValue: Variant): Double;
function VarComplexAbs(const AValue: Variant): Double;
function VarComplexAngle(const AValue: Variant): Double;
function VarComplexSign(const AValue: Variant): Variant;
function VarComplexConjugate(const AValue: Variant): Variant;
function VarComplexInverse(const AValue: Variant): Variant;
function VarComplexExp(const AValue: Variant): Variant;
function VarComplexLn(const AValue: Variant): Variant;
function VarComplexLog2(const AValue: Variant): Variant;
function VarComplexLog10(const AValue: Variant): Variant;
function VarComplexLogN(const AValue: Variant; const X: Double): Variant;
function VarComplexSqr(const AValue: Variant): Variant;
function VarComplexSqrt(const AValue: Variant): Variant;
function VarComplexPower(const AValue, APower: Variant): Variant;
function VarComplexTimesPosI(const AValue: Variant): Variant;
function VarComplexTimesNegI(const AValue: Variant): Variant;
function VarComplexTimesImaginary(const AValue: Variant; const AFactor: Double): Variant;
function VarComplexTimesReal(const AValue: Variant; const AFactor: Double): Variant;
3 复数变体三角学支持 26个
function VarComplexCos(const AValue: Variant): Variant;
function VarComplexSin(const AValue: Variant): Variant;
function VarComplexTan(const AValue: Variant): Variant;
function VarComplexCot(const AValue: Variant): Variant;
function VarComplexSec(const AValue: Variant): Variant;
function VarComplexCsc(const AValue: Variant): Variant;
function VarComplexArcCos(const AValue: Variant): Variant;
function VarComplexArcSin(const AValue: Variant): Variant;
function VarComplexArcTan(const AValue: Variant): Variant;
function VarComplexArcCot(const AValue: Variant): Variant;
function VarComplexArcSec(const AValue: Variant): Variant;
function VarComplexArcCsc(const AValue: Variant): Variant;
function VarComplexCosH(const AValue: Variant): Variant;
function VarComplexSinH(const AValue: Variant): Variant;
function VarComplexTanH(const AValue: Variant): Variant;
function VarComplexCotH(const AValue: Variant): Variant;
function VarComplexSecH(const AValue: Variant): Variant;
function VarComplexCscH(const AValue: Variant): Variant;
function VarComplexArcCosH(const AValue: Variant): Variant;
function VarComplexArcSinH(const AValue: Variant): Variant;
function VarComplexArcTanH(const AValue: Variant): Variant;
function VarComplexArcCotH(const AValue: Variant): Variant;
function VarComplexArcSecH(const AValue: Variant): Variant;
function VarComplexArcCscH(const AValue: Variant): Variant;
procedure VarComplexToPolar(const AValue: Variant; var ARadius, ATheta: Double; AFixTheta: Boolean = True);
function VarComplexFromPolar(const ARadius, ATheta: Double): Variant;
4 变量定义
var
ComplexNumberSymbol: string = 'i'; //复数的数学标号
ComplexNumberSymbolBeforeImaginary: Boolean = False; //虚数之前的是否有复数的数学标号
ComplexNumberDefuzzAtZero: Boolean = True;