C語言中的復數-C基礎


復數:

   復數比較詳細的內容請參考:復數代數

  C支持復數的數學計算,復數Z可以在笛卡爾坐標表示為:Z=x+y*I;其中x和y是實數,I是虛數單位。數x被稱為實部,數y為虛部。在c語言中,一個復數是有浮點類型表示的實部和虛部。兩部分都具有相同的類型,無論是float,double或者long double。

  1. float _complex:實虛都為float
  2. double _complex:實虛都為double
  3. long double _complex:實虛都為long double

如果在c 源文件中包含了頭文件 complex.h ,complex.h定義了complex 和 I宏。宏定義complex和一個關鍵字_complex 同義。我們可以用complex代替_complex.

下面是個簡單的例子,運行在debian 7 (32bit)

代碼截圖:

    

 運行結果:

詳細代碼:

  1 /*
  2  * Title : Complex Numbers
  3  * Description: Work with complex numbers in c
  4  * Author:Eric.Lee
  5  *
  6  */
  7 #include<stdio.h>
  8 #include<complex.h>
  9 
 10 #define Get_Array_Length(tempArray)(sizeof(tempArray)/sizeof(tempArray[0]))
 11 
 12 void GetResult(char operate,double complex x,double complex y)
 13 {
 14     double complex result = 0+0*I;
 15     switch(operate)
 16     {
 17         case '+':
 18             result = x+y;
 19             break;
 20         case '-':
 21             result = x-y;
 22             break;
 23         case '*':
 24             result = x*y;
 25             break;
 26         case '/':
 27             result =x/y;
 28             break;
 29         default:
 30             break;
 31     }
 32     printf("double complex x %c double complex y=%.2f+%.2fi\n",operate,creal(result),cimag(result));
 33 
 34 }
 35 
 36 int main()
 37 {
 38     double complex  x = 10.0+15.0*I;
 39     double complex y = 20.0-5.0*I;
 40 
 41     printf("working with complex number:\n");
 42     printf("Starting values:x=%.2f+%.2fi\ty=%.2f +%.2fi\n",creal(x),cimag(x),creal(y),cimag(y));
 43     char operates[] = {'+','-','*','/'};
 44     char * op = operates;
 45     int i = 0;
 46     int operateLength = Get_Array_Length(operates);
 47     for(i=0;i<=operateLength-1;i++)
 48     {
 49         GetResult(*(op++),x,y);
 50     }
 51 
 52     return 0;
 53 }    
View Code

creal(x):得到復數的實部(對於 double),如果對於float,使用crealf(x),如果對於long double ,請使用 creall(x)

cimag(x):得到復數的虛部(對於double),如果對於float,使用crealf(x),如果對於long double ,請使用 creall(x)

此外還有一點值得注意的是:

              cos(), exp()sqrt()同樣也會有對應得復數方法,例如:ccos(),cexp(),csqrt()

 

本人是個初學者,如果博客中有任何錯誤或者有更好的技術知識,請多多指教!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM