内容包括電路複數應用場景,基本性質運算、二進制運算、三角函數運算,C語言複數運算示例。紫色文字是超連結,點選自動跳轉至相關博文。持續更新,原創不易。
目錄:
一、簡介
二、複數基本性質運算
三、複數二進制運算
四、複數三角函數運算
五、C語言複數運算
------------------------------------------------------------------------------------------------------
一、簡介
在電路設計中我們會遇到一些諸如交流信号過電容、電感,阻抗計算等情況,可以借助Excel中複數計算函數。
------------------------------------------------------------------------------------------------------
二、複數基本性質運算
=COMPLEX(-0.5,0.87,"i")建立複數-0.5+0.87i。此處的i在電子中常用作j,可用=COMPLEX(-0.5,0.87,"j")。
=IMAGINARY(A2)求出複數的虛部,即虛數i前面的系數。
=IMREAL(A2)求出複數的實部,即實數部分。
=IMABS(A2)求出模,即複數的絕對值。注意:模由公式√(x²+y²)得到,其中x實部,y虛部。
=IMARGUMENT(A2)求出複數的輻角,注意是弧度值。
=DEGREES(IMARGUMENT(A2))将弧度轉換成角度。
=IMCONJUGATE(A2)求出共轭複數。
------------------------------------------------------------------------------------------------------
三、複數二進制運算
注:對包含公式的單元格引用若報錯,參見“Excel進階使用技巧彙總之18、絕對引用與相對引用”
=IMSUM(A2,B2)得到複數的和。
注:兩個複數虛數字母風格的書寫要一緻。
例如:(1+2i) +(3-4j) 在Excel中是不規範的,計算不出來結果。
=IMSUB(A2,B2)求出複數的差。
=IMPRODUCT(A2,B2)求出複數的乘積。
注:IMPRODUCT支援多個複數之間相乘(最多支援255個)
=IMDIV(A2,B2)求出兩個複數之間的商。
=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)表示長雙精度版本。
------------------------------------------------------------------------------------------------------