復數類實現 - kb
一共三個文件:
ComplexException.java : Complex類所應的異常
Complex.java : Complex類實現
TestComplex.java : 測試Complex類




















































































































































































































































































































輸出結果如下:














posted on 2005-07-28 22:44 第二小組 閱讀(2058) 評論(6) 編輯 收藏 所屬分類: 小組交流
一共三個文件:
ComplexException.java : Complex類所應的異常
Complex.java : Complex類實現
TestComplex.java : 測試Complex類
posted on 2005-07-28 22:44 第二小組 閱讀(2058) 評論(6) 編輯 收藏 所屬分類: 小組交流
:p, so many hidden bugs... anyway, it's nice to have a try.
Here is a good reference: org.apache.commons.math.complex.Complex 回復 更多評論
.......so many hidden bugs......?
Really?
看來我的代碼還是很爛啊.
可不可以指點一下?讓我也長長記性. 回復 更多評論
剛才看了一下org.apache.commons.math.complex.Complex ,
確實感覺出差距來了,但不知道它內部是如何實現的,那樣的話會更好的理解.其實很多的復數算法我都不知道是怎么算的,比如pow,sqrt,tan,etc...... 回復 更多評論
U cannot see the src code..?
Just download it from http://jakarta.apache.org/site/downloads/downloads_commons-math.cgi 回復 更多評論
/*復數類的實現:湖南農業大學信息科學技術學院計算機科學與技術八班(堅持到底) 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());
}
}
回復 更多評論
//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());
}
}
回復 更多評論
只有注冊用戶登錄后才能發表評論。 | ||
![]() |
||
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關文章:
|
||