当前位置: 首页>C++>正文

c++實現復數的加減乘除,【C++】輔助C++計算復數(代碼解釋的很清楚)

c++實現復數的加減乘除,【C++】輔助C++計算復數(代碼解釋的很清楚)

????????數運算法則有:加減法、乘除法,乘積,商,次冪,n次方根,指數,對數,正弦,余弦,模和幅角。兩個復數的和依然是復數,它的實部是原來兩個復數實部的和,它的虛部是原來兩個虛部的和。復數的加法滿足交換律和結合律。此外,復數作為冪和對數的底數、指數、真數時,其運算規則可由歐拉公式e^iθ=cos θ+i sin θ(弧度制)推導而得。

?加法法則

復數的加法按照以下規定的法則進行:設z1=a+bi,z2=c+di是任意兩個復數,

則它們的和是 (a+bi)+(c+di)=(a+c)+(b+d)i。

兩個復數的和依然是復數,它的實部是原來兩個復數實部的和,它的虛部是原來兩個虛部的和。

復數的加法滿足交換律和結合律,

c++實現復數的加減乘除。即對任意復數z1,z2,z3,有: z1+z2=z2+z1;(z1+z2)+z3=z1+(z2+z3)。

減法法則

復數的減法按照以下規定的法則進行:設z1=a+bi,z2=c+di是任意兩個復數,

則它們的差是 (a+bi)-(c+di)=(a-c)+(b-d)i。

兩個復數的差依然是復數,它的實部是原來兩個復數實部的差,它的虛部是原來兩個虛部的差。

乘法法則

規定復數的乘法按照以下的法則進行:

c++復數怎么表示。設z1=a+bi,z2=c+di(a、b、c、d∈R)是任意兩個復數,那么它們的積(a+bi)(c+di)=(ac-bd)+(bc+ad)i。

其實就是把兩個復數相乘,類似兩個多項式相乘,展開得: ac+adi+bci+bdi2,因為i2=-1,所以結果是(ac-bd)+(bc+ad)i 。兩個復數的積仍然是一個復數。

在極坐標下,復數可用模長r與幅角θ表示為(r,θ)。對于復數a+bi,r=√(a2+b2),θ=arctan(b/a)。此時,復數相乘表現為幅角相加,模長相乘。

除法法則

復數除法定義:滿足(c+di)(x+yi)=(a+bi)的復數x+yi(x,y∈R)叫復數a+bi除以復數c+di的商。

運算方法:可以把除法換算成乘法做,在分子分母同時乘上分母的共軛。所謂共軛你可以理解為加減號的變換,互為共軛的兩個復數相乘是個實常數。

除法運算規則:

復數角度計算公式。①設復數a+bi(a,b∈R),除以c+di(c,d∈R),其商為x+yi(x,y∈R),

圖1 分母實數化

即(a+bi)÷(c+di)=x+yi

∵(x+yi)(c+di)=(cx-dy)+(dx+cy)i

∴(cx-dy)+(dx+cy)i=a+bi

由復數相等定義可知 cx-dy=a dx+cy=b

復數的模怎么算?解這個方程組,得 x=(ac+bd)/(c2+d2) y=(bc-ad)/(c2+d2)

于是有:(a+bi)/(c+di)=(ac+bd)/(c2+d2) +((bc-ad)/(c2+d2))i

? ? ? ? 接下來利用C++編出最會計的計算方法。計算代碼如下:

//復數的運算類
#include<iostream> 
# include<cmath>
using namespace std;
//復數的計算類
class complex
{private:double R;	//復數的實部 double I;	//復數的虛部public:complex(double real=0,double image=0)  //構造函數 {R=real;I=image;}void print()	//復數輸出{cout<<"("<<R<<","<<I<<")" ;    //輸出為(R,I)return ; } double Cabs()	//復數的模 {double y;y=sqrt(R*R+I*I);return 0;}double angle()	//復數幅角 {double y;y=atan2(I,R);return y;}complex operator + (complex& c2)	//復數加法;重載運算符+ {complex c;c.R=R+c2.R;c.I=I+c2.I;return c;}complex operator - (complex& c2)	//復數減法;重載運算符-{complex c;c.R=R-c2.R;c.I=I-c2.I;return c;}complex operator * (complex& c2)	//復數乘法;重載運算符 *{complex c;double p,q,s;p=R*c2.R;q=I*c2.I;s=(R+I)*(c2.R+c2.I);c.R=p-q;c.I=s-p-q;return c;}complex operator / (complex& c2)	//復數除;重載運算符 /{complex c;double p,q,s,w;p=R*c2.R;q=-I*c2.I;s=(R+I)*(c2.R-c2.I);w=(c2.R)*(c2.R)+(c2.I)*(c2.I);if(w+1.0 !=1.0){c.R=(p-q)/w;c.I=(s-p-q)/w;}else {c.R=1e+300;c.I=1e+300;}return c;}complex Power(int n)	//復數乘冪{complex c;double r,q;q=atan2(I,R);r=sqrt(R*R+I*I );if(r+1.0 !=1.0){r=n*log(r);r=exp(r);}c.R =r*cos(n*q);c.I =r*sin(n*q);return c;} void Root(int n,complex *p)	//復數的 n 次方根{complex c;int k;double r,q,t;if(n<1)	return ;q=atan2(I,R);r=sqrt(R*R+I*I);if(r+1.0 !=1.0){r=(1.0/n)*log(r);r=exp(r);}for(k=0;k<n;k++){t=(2.0*k*3.1415926987+q)/n;c.R=r*cos(t);c.I=r*sin(t);p[k]=c;}} complex Exp()	//復數指數{complex c;double p;p=exp(R);c.R=p*cos(I);c.I=p*sin(I);return c;} complex Log()	//復數對數{complex c;double p;p=R*R+I*I;p=log(sqrt(p));c.R =p;c.I =atan2(I,R);return c;	} complex Sin()	//復數正弦{complex c;double p,q;p=exp(I);q=exp(-I);c.R =sin(R)*(p+q)/2;c.I =cos(R)*(p-q)/2;return c;	} complex Cos()	//復數余弦{complex c;double p,q;p=exp(I);q=exp(-I);c.R =cos(R)*(p+q)/2;c.I =-sin(R)*(p-q)/2;return c;	} 		} ;

接下來對復數進行實力計算,在計算的過程中充分利用類

//實例計算 
#include<iostream>
#include<cmath>
#include"復數運算類.h"
using namespace std;
int main()
{int i;double a,b;complex c1,c2,c3,c,p[5];cin>>a>>b;	 //輸入c1的實部和虛部 c1=complex(a,b); cout<<"c1="; c1.print(); cout<<endl;cin>>a>>b;	 //輸入c2的實部和虛部 c2=complex(a,b); cout<<"c2="; c2.print(); cout<<endl;cin>>a>>b;	 //輸入c2的實部和虛部 c3=complex(a,b); cout<<"c3="; c3.print(); cout<<endl;c=c1+c2;cout<<"c1+c2="; c.print();cout<<endl; c=c1-c2;cout<<"c1-c2="; c.print();cout<<endl; c=c1*c2;cout<<"c1*c2="; c.print();cout<<endl;c=c1/c2;cout<<"c1/c2="; c.print();cout<<endl;c=c3.Power(-3);cout<<"c3的-5次方="; c.print();cout<<endl;cout<<"c3的8次方為:"<<endl;c3.Root(8,p);for(i=0;i<8;i++){p[i].print();cout<<endl;	} c=c3.Exp();cout<<"exp(c3)=";c.print();cout<<endl;c=c3.Log();cout<<"log(c3)=";c.print();cout<<endl;c=c3.Sin();cout<<"sin(c3)=";c.print();cout<<endl;c=c3.Cos();cout<<"cos(c3)=";c.print();cout<<endl;return 0;
}

其中第一行為鍵盤輸入

計算器如何算復數帶j,則,計算結果為:

https://www.nshth.com/cplus/338382.html
>

相关文章:

  • c實現復數的加減乘除
  • c復數怎么表示
  • 復數角度計算公式
  • 復數的模怎么算
  • 計算器如何算復數帶j
  • 數控輔助代碼
  • 輔助軟件編程
  • 復數
  • 樹莓派的控制方法,第二篇 樹莓派基本外設基礎篇
  • 手機如何連接外設,iOS連接外設的幾種方式
  • switch可以外接鍵鼠嗎,別再給手機外接OTG鍵鼠玩刺激戰場了:其實還能這樣操作
  • [阿發你好]C/C++學習指南
  • 輸入法哪個最好用,wsl2中安裝中文輸入法
  • 字符串中引入變量方法,字符串處理、變量初始值處理、擴展的腳本技巧、正則表達式
  • 某計算機內存容量是512kb,某計算機主存容量為512kb,Cache容量為16kb,每塊有16個字,每字32位。 (1...
  • 中國工商網商標查詢,工商局爬蟲 商標網爬蟲
  • iOS真機調試TestFlight安裝及提交App Store審核教程
  • 蘋果app上架流程,小白如何在ios中安裝ios上架
  • 蘋果彈出提交表格是什么,蘋果TestFlight測試操作圖文教程(測試后提交App Store審核)
  • 四門外語傍身:外語,讓我的大學如此完美
  • D3D Surface/Texture SDL DDraw渲染視頻的區別和疑問
  • 手機VR播放器,Android VR Player(全景視頻播放器) [10]: VR全景視頻渲染播放的實現(exoplayer,glsurfaceview,o
  • Qt渲染視頻常見問題(視頻渲染窗口上子窗口設置透明出現陰影問題、主窗口縮放導致視頻渲染窗口部分出現視頻閃爍問題)
  • 視頻解析網站源碼,ijkplayer源碼分析 視頻渲染流程
  • 一分鐘的視頻渲染要多久,基礎教程|如何在數分鐘時間內渲染超清精美視頻?
  • Metal(六) 案例之視頻文件的渲染
  • flutter開發小程序,最強整理!寫給程序員的Flutter詳細教程,大廠直通車!
  • c++黑客編程揭秘與防范,C/C++截獲騰訊QQ網絡聊天系統內容和登錄密碼,教你做一個黑客!
  • 支付行業具體做什么,做支付需要了解哪些行業知識
  • 5大底層邏輯,淺談HyperLogLog底層算法邏輯
  • c++實現復數的加減乘除,【C++】輔助C++計算復數(代碼解釋的很清楚)
  • nlogn的算法有哪些,算法運行時間1、logN、N、NlogN 、N^2、N^3、2^n之間的比較
  • 開源圖片庫,幾種常用圖像處理開源庫簡介及使用總結
  • 圖像處理和計算機視覺,《圖像處理與計算機視覺算法及應用》讀后感
  • gps定位,側邊欄固定定位到版心兩側
  • css版心怎么設置,[css]版心和布局流程
  • 瀏覽器多個窗口怎么設置在一個頁面,網頁多種版心適應多屏幕技巧
  • 前端學習之版心和布局流程