Feedback
# re: 复数类实现 - kb
2005-07-29 00:08
Flair@ZJU
:p, so many hidden bugs... anyway, it's nice to have a try.
Here is a good reference: org.apache.commons.math.complex.Complex 回复 更多评论
# re: 复数类实现 - kb
2005-07-29 00:51
第二小组
.......so many hidden bugs......?
Really?
看来我的代码还是很烂啊.
可不可以指点一下?让我也长长记性. 回复 更多评论
# re: 复数类实现 - kb
2005-07-29 01:06
第二小组
刚才看了一下org.apache.commons.math.complex.Complex ,
确实感觉出差距来了,但不知道它内部是如何实现的,那样的话会更好的理解.其实很多的复数算法我都不知道是怎么算的,比如pow,sqrt,tan,etc...... 回复 更多评论
# re: 复数类实现 - kb
2005-07-29 01:54
Flair@ZJU
# 复数类实现
2006-10-19 17:19
坚持到底[匿名]
/*复数类的实现:湖南农业大学信息科学技术学院计算机科学与技术八班(坚持到底) 2006-10-19 */
/*复数加法公式:(a+bi)+(c+di)=(a+c)+(b+d)i*/
/*复数减法公式:(a+bi)-(c+di)=(a-c)+(b-d)i*/
/*复数乘法公式:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i*/
/*复数除法公式:(a+bi)/(c+di)=[(ac+bd)/(c*c+d*d)]+[(bc-ad)/(c*c+d*d)]i*/
public class ComplexNumber {
//属性部分定义
//定义复数部分实部
double m_dRealpart;
//定义复数部分虚部
double m_dImaginpart;
//定义一个中间变量
double R_dRealpart;
//定义一个除法实部
double Realpart;
//方法部分定义
//构造函数实现部分
public ComplexNumber (double r,double I){
this.m_dRealpart=r;
this.m_dImaginpart=I;
}
//获取复数实部值
double getRealpart(){
return this.m_dRealpart;
}
//获取复数虚部值
double getImaginpart(){
return this.m_dImaginpart;
}
//设置复数实部值
void setRealpart(double temp){
this.m_dRealpart=temp;
}
//设置复数虚部值
void setImaginpart(double temp){
this.m_dImaginpart=temp;
}
//两个复数对象加法运算
ComplexNumber complexAdd(ComplexNumber c){
this.m_dRealpart=this.m_dRealpart+c.m_dRealpart;
this.m_dImaginpart=this.m_dImaginpart+c.m_dImaginpart;
return this;
}
//两个复数对象的减法运算
ComplexNumber complexMinus(ComplexNumber c){
this.m_dRealpart=this.m_dRealpart-c.m_dRealpart;
this.m_dImaginpart=this.m_dImaginpart-c.m_dImaginpart;
return this;
}
//两个复数对象的乘法运算
ComplexNumber complexChen(ComplexNumber c){
R_dRealpart=this.m_dRealpart;
this.m_dRealpart=this.m_dRealpart*c.m_dRealpart-this.m_dImaginpart*c.m_dImaginpart;
this.m_dImaginpart=R_dRealpart*c.m_dImaginpart+c.m_dRealpart*this.m_dImaginpart;
return this;
}
//两个复数对象的除法运算
ComplexNumber complexChu(ComplexNumber c){
Realpart=this.m_dRealpart;
this.m_dRealpart=(Realpart*c.m_dRealpart+this.m_dImaginpart*c.m_dImaginpart)/(c.m_dRealpart*c.m_dRealpart+c.m_dImaginpart*c.m_dImaginpart);
this.m_dImaginpart=(this.m_dImaginpart*c.m_dRealpart-Realpart*c.m_dImaginpart)/(c.m_dRealpart*c.m_dRealpart+c.m_dImaginpart*c.m_dImaginpart);
return this;
}
//构造一个a+bi的字符串形式
public String toString(){
String strTemp="";
strTemp=this.m_dRealpart+"+"+
this.m_dImaginpart+"i";
return strTemp;
}
public static void main(String[] args) {
//输出两个复数相加结果
ComplexNumber complex1 = new ComplexNumber(10.0,10.0);
System.out.println("m_dRealPart:"+complex1.m_dRealpart);
ComplexNumber complex2 = new ComplexNumber(3.0,5.0);
System.out.println("\n\ncomplex1:"+complex1.toString());
System.out.println("complex2:"+complex2.toString());
complex1.complexAdd(complex2);
System.out.println("complex1+complex2=" + complex1.toString());
//输出两个复数相减结果
ComplexNumber complex3 = new ComplexNumber(10.0,10.0);
System.out.println("\n\ncomplex3:"+complex3.toString());
System.out.println("complex2:"+complex2.toString());
complex3.complexMinus(complex2);
System.out.println("complex3-complex2="+complex3.toString());
//输出两个复数相乘结果
ComplexNumber complex4 = new ComplexNumber(-1.0,2.0);
System.out.println("\n\ncomplex4:"+complex4.toString());
ComplexNumber complex5 = new ComplexNumber(2.0,-3.0);
System.out.println("complex5:"+complex5.toString());
complex4.complexChen(complex5);
System.out.println("complex4*complex5="+complex4.toString());
//输出两个复数相除结果
ComplexNumber complex6 = new ComplexNumber(1.0,2.0);
System.out.println("\n\ncomplex6:"+complex6.toString());
ComplexNumber complex7 = new ComplexNumber(2.0,3.0);
System.out.println("complex7:"+complex7.toString());
complex6.complexChu(complex7);
System.out.println("complex6/complex7="+complex6.toString());
}
}
回复 更多评论
# 复数类实现
2006-10-19 17:22
坚持到底[匿名]
//file: ComplexNumber.java
/*复数类的实现:湖南农业大学信息科学技术学院计算机科学与技术八班(坚持到底) 2006-10-19 */
/*复数加法公式:(a+bi)+(c+di)=(a+c)+(b+d)i*/
/*复数减法公式:(a+bi)-(c+di)=(a-c)+(b-d)i*/
/*复数乘法公式:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i*/
/*复数除法公式:(a+bi)/(c+di)=[(ac+bd)/(c*c+d*d)]+[(bc-ad)/(c*c+d*d)]i*/
public class ComplexNumber {
//属性部分定义
//定义复数部分实部
double m_dRealpart;
//定义复数部分虚部
double m_dImaginpart;
//定义一个中间变量
double R_dRealpart;
//定义一个除法实部
double Realpart;
//方法部分定义
//构造函数实现部分
public ComplexNumber (double r,double I){
this.m_dRealpart=r;
this.m_dImaginpart=I;
}
//获取复数实部值
double getRealpart(){
return this.m_dRealpart;
}
//获取复数虚部值
double getImaginpart(){
return this.m_dImaginpart;
}
//设置复数实部值
void setRealpart(double temp){
this.m_dRealpart=temp;
}
//设置复数虚部值
void setImaginpart(double temp){
this.m_dImaginpart=temp;
}
//两个复数对象加法运算
ComplexNumber complexAdd(ComplexNumber c){
this.m_dRealpart=this.m_dRealpart+c.m_dRealpart;
this.m_dImaginpart=this.m_dImaginpart+c.m_dImaginpart;
return this;
}
//两个复数对象的减法运算
ComplexNumber complexMinus(ComplexNumber c){
this.m_dRealpart=this.m_dRealpart-c.m_dRealpart;
this.m_dImaginpart=this.m_dImaginpart-c.m_dImaginpart;
return this;
}
//两个复数对象的乘法运算
ComplexNumber complexChen(ComplexNumber c){
R_dRealpart=this.m_dRealpart;
this.m_dRealpart=this.m_dRealpart*c.m_dRealpart-this.m_dImaginpart*c.m_dImaginpart;
this.m_dImaginpart=R_dRealpart*c.m_dImaginpart+c.m_dRealpart*this.m_dImaginpart;
return this;
}
//两个复数对象的除法运算
ComplexNumber complexChu(ComplexNumber c){
Realpart=this.m_dRealpart;
this.m_dRealpart=(Realpart*c.m_dRealpart+this.m_dImaginpart*c.m_dImaginpart)/(c.m_dRealpart*c.m_dRealpart+c.m_dImaginpart*c.m_dImaginpart);
this.m_dImaginpart=(this.m_dImaginpart*c.m_dRealpart-Realpart*c.m_dImaginpart)/(c.m_dRealpart*c.m_dRealpart+c.m_dImaginpart*c.m_dImaginpart);
return this;
}
//构造一个a+bi的字符串形式
public String toString(){
String strTemp="";
strTemp=this.m_dRealpart+"+"+
this.m_dImaginpart+"i";
return strTemp;
}
public static void main(String[] args) {
//输出两个复数相加结果
ComplexNumber complex1 = new ComplexNumber(10.0,10.0);
System.out.println("m_dRealPart:"+complex1.m_dRealpart);
ComplexNumber complex2 = new ComplexNumber(3.0,5.0);
System.out.println("\n\ncomplex1:"+complex1.toString());
System.out.println("complex2:"+complex2.toString());
complex1.complexAdd(complex2);
System.out.println("complex1+complex2=" + complex1.toString());
//输出两个复数相减结果
ComplexNumber complex3 = new ComplexNumber(10.0,10.0);
System.out.println("\n\ncomplex3:"+complex3.toString());
System.out.println("complex2:"+complex2.toString());
complex3.complexMinus(complex2);
System.out.println("complex3-complex2="+complex3.toString());
//输出两个复数相乘结果
ComplexNumber complex4 = new ComplexNumber(-1.0,2.0);
System.out.println("\n\ncomplex4:"+complex4.toString());
ComplexNumber complex5 = new ComplexNumber(2.0,-3.0);
System.out.println("complex5:"+complex5.toString());
complex4.complexChen(complex5);
System.out.println("complex4*complex5="+complex4.toString());
//输出两个复数相除结果
ComplexNumber complex6 = new ComplexNumber(1.0,2.0);
System.out.println("\n\ncomplex6:"+complex6.toString());
ComplexNumber complex7 = new ComplexNumber(2.0,3.0);
System.out.println("complex7:"+complex7.toString());
complex6.complexChu(complex7);
System.out.println("complex6/complex7="+complex6.toString());
}
}
回复 更多评论