天天看點

Excel或C語言複數運算

内容包括電路複數應用場景,基本性質運算、二進制運算、三角函數運算,C語言複數運算示例。紫色文字是超連結,點選自動跳轉至相關博文。持續更新,原創不易。

目錄:

一、簡介

二、複數基本性質運算

三、複數二進制運算

四、複數三角函數運算

五、C語言複數運算

------------------------------------------------------------------------------------------------------

一、簡介

在電路設計中我們會遇到一些諸如交流信号過電容、電感,阻抗計算等情況,可以借助Excel中複數計算函數。

Excel或C語言複數運算
Excel或C語言複數運算

------------------------------------------------------------------------------------------------------

二、複數基本性質運算

=COMPLEX(-0.5,0.87,"i")建立複數-0.5+0.87i。此處的i在電子中常用作j,可用=COMPLEX(-0.5,0.87,"j")。

Excel或C語言複數運算

=IMAGINARY(A2)求出複數的虛部,即虛數i前面的系數。

=IMREAL(A2)求出複數的實部,即實數部分。

=IMABS(A2)求出模,即複數的絕對值。注意:模由公式√(x²+y²)得到,其中x實部,y虛部。

=IMARGUMENT(A2)求出複數的輻角,注意是弧度值。

=DEGREES(IMARGUMENT(A2))将弧度轉換成角度。

Excel或C語言複數運算
Excel或C語言複數運算

=IMCONJUGATE(A2)求出共轭複數。

------------------------------------------------------------------------------------------------------

三、複數二進制運算

注:對包含公式的單元格引用若報錯,參見“Excel進階使用技巧彙總之18、絕對引用與相對引用”

=IMSUM(A2,B2)得到複數的和。

注:兩個複數虛數字母風格的書寫要一緻。

例如:(1+2i) +(3-4j) 在Excel中是不規範的,計算不出來結果。

Excel或C語言複數運算

=IMSUB(A2,B2)求出複數的差。

=IMPRODUCT(A2,B2)求出複數的乘積。

Excel或C語言複數運算

注:IMPRODUCT支援多個複數之間相乘(最多支援255個)

=IMDIV(A2,B2)求出兩個複數之間的商。

Excel或C語言複數運算

=IMPOWER(A2,1)求出複數的整數幂。

注意,後面的參數可以是複數,即求出複數的倒數

=IMEXP(A2)求出複數的指數(e為底)

=IMLN(A2)求出複數的自然對數。

類似地,可以用對數函數公式

=IMLOG10(A2)

=IMLOG2(A2)

分别求出10為底的對數,2為底的對數。

=IMSQRT(A2)求出複數的平方根。

其實,也可以用Excel公式=IMPOWER(A2,0.5)得到同樣的計算結果,換句話說Excel的IMPOWER公式,也支援計算複數的小數形式的幂。

------------------------------------------------------------------------------------------------------

四、複數三角函數運算

=IMSIN(A2)求出複數的正弦值。

=IMCOS(A2)求出複數的餘弦值。

如果需要正切(正弦函數除以餘弦函數)、餘切(正切函數的倒數)

另外,像雙曲函數、正割、餘割函數也可以求解。比較遺憾的是Excel不支援複數求反三角函數值(比如arctan)。

------------------------------------------------------------------------------------------------------

五、C語言複數運算

#include "stdio.h"

#include "complex.h"  //加入此頭檔案需要C99模式支援,詳見“Keil編譯軟體的使用彙總之十六、支援C99模式”

int main(void)

{

   complex double a = 1.0 + 2.0*I, b = 3.0 + 4.0*I; //a = 1 + 2i, b = 3 + 4i

   complex double s_1 = a + b; //加

   complex double s_2 = a - b; //減

   complex double s_3 = a * b; //乘

   complex double s_4 = a / b; //除

   printf("s_1的實部為%f, 虛部為%f, 模為%f\n", creal(s_1), cimag(s_1), cabs(s_1));

   printf("s_2的實部為%f, 虛部為%f, 模為%f\n", creal(s_2), cimag(s_2), cabs(s_2));

   printf("s_3的實部為%f, 虛部為%f, 模為%f\n", creal(s_3), cimag(s_3), cabs(s_3));

   printf("s_4的實部為%f, 虛部為%f, 模為%f\n", creal(s_4), cimag(s_4), cabs(s_4));

}

complex.h中所包含的常用函數除了基本的加減乘除之外,complex.h中還包含以下函數:

複數的實部creal()

複數的虛部cimag()

模cabs()

相位carg()

指數cexp()

自然對數clog()

幂cpow()

平方根csqrt()

複共轭cong()

正弦csin()

餘弦ccos()

正切ctan()

反正弦casin()

反餘弦cacos()

反正切catan()

雙曲正弦csinh()

雙曲餘弦ccosh()

雙曲正切ctanh()

反雙曲正弦casinh()

反雙曲餘弦cacosh()

反雙曲正切catanh()

說明:以上函數預設為雙精度版本,在函數名後加f(即float)表示單精度版本,加l(即long)表示長雙精度版本。

------------------------------------------------------------------------------------------------------