|||
1 背景:
电气工程中经常要进行复数运算,如果采用Matlab计算当然很方便的。但是,如果希望开发具有自主知识产权的软件,则VB、Delphi、VC是比较好的选择。根据我们对可视化语言的理解和应用,我们采用Delphi语言。然而,Delphi中复数的使用当然有其特殊之处。
2 所用的函数:
所有的复数使用都要包含VarCmplx程序文件,所以必须在uses中使用:
Uses VarCmplx;
(1) 复数的定义:
复数的类型称作Variant,如Z表示阻抗,则可以:
Var
Z:Variant; //定义Z为复数类型;
(2) 建立复数函数:VarComplexCreate()
function VarComplexCreate(const AReal, AImaginary: Double): Variant; overload;
function VarComplexCreate(const AReal: Double): Variant; overload;
function VarComplexCreate: Variant; overload;
function VarComplexCreate(const AText: string): Variant; overload;
注意的是,overload,其实也不要太理睬它,就是一个函数被多例程调用,由系统自动识别,这为编程带来极大的方便。
如:创造复数(1+2i)可以通过两种方法:
Z:=VarComplexCreate(1,2); //第一种的应用;
或 Z:=varComplexCreate(‘1+2i’); //第三种的应用;
(3) 其它相关函数
求幅值:function VarComplexAbs(const AValue: Variant): Double;
求幅角:function VarComplexAngle(const AValue: Variant): Double;
其它相关函数均可以help获得。
这里要注意:参数之间类型的匹配问题。
(4) 复数的输出:
没想到,复数的输出反倒这么容易和方便,直接和运算得到的复数匹配,如复数Z直接可以输出至编辑框:
Z:=varCreateCmplex(‘1+2i’);
Edit1.text:=Z; //这个太方便了。
3 一个求解算例:
Button1对应的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
Z1,Z2,Z3,Z4,Z5,Z6:Variant;
Abs1,Angle1:Double;
String1:String;
begin
Z1:=varComplexCreate('1+2i');
Z2:=varComplexCreate(2,3);
Z3:=Z1+Z2;
Z4:=Z1-Z2;
Z5:=Z1*Z2;
Z6:=Z1/Z2;
Edit1.Text:=varComplexCreate('1+2i');
Edit2.Text:=Z1-Z2;
Edit3.Text:=Z1*Z2;
Edit4.Text:=Z1/Z2;
Abs1:=varComplexAbs(Z1);
Angle1:=varComplexAngle(Z1);
Edit7.Text:=FloatToStr(Abs1);
Edit8.Text:=FloatToStr(Angle1);
end;
4 总结:
Delphi复数运算几乎和实数一样方便,也不要害怕,尤其输出更方便;想寻找帮助,关键词一般都按照varComplx开始,后面单词就可以猜测了。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 06:34
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社