当前位置: 首页>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
  • 數控輔助代碼
  • 輔助軟件編程
  • 復數
  • github 免費節點,BUMO:超級節點共建接口
  • 學習html/css基礎的重點筆記
  • 企業郵箱怎么群發郵件,企業會員郵件群發解決方案
  • esfp光模塊,闡述一下ecshop各模塊的功能_【光電通信】40G QSFP+ LR4 光模塊的設計與實現(一)...
  • lua編程軟件,QQ郵箱記事本模塊Lua實現小結
  • centos7.6鏡像下載,centos(7.9) minikube(v1.28.0) kaniko 構建鏡像
  • 計算機畢業設計ssm企業部門報銷管理g9d62系統+程序+源碼+lw+遠程部署
  • 鮑森詹森實驗過程,Ornstein-Uhlenbeck過程
  • 嵌入式的發展趨勢,我理解的嵌入式幾個發展方向
  • 51開發板,IMX6ULL_PRO嵌入式開發板介紹
  • 嵌入式軟件工程師,2023屆秋招內推指南|嵌入式開發|軟硬件
  • 剛畢業的大學生適合做什么工作,今天我的就業班的生活開始啦~~~
  • C語言-基礎知識練習習題1
  • 什么監控攝像頭最清晰,計算機為什么找不到攝像頭,為何電腦里找不到攝像頭設備?
  • 網易支付登錄,微信登陸和支付
  • 人工智能自我進化,復雜性思維中文第二版 十一、進化
  • firebase,Firebase 教程: iOS A/B 測試
  • mongodb可視化管理工具,Impala入門筆記---比Hive強大
  • 世界只是一個程序,程序的世界里,短暫的放空
  • 如何用爬蟲爬取網頁上的數據,新聞爬蟲及爬取結果查詢網站的搭建(一)
  • 爬蟲網站,新聞網站爬蟲及結果查詢
  • 深度卷積神經網絡,深度KWeaver:價值驅動,認知智能走向開源共創
  • sci論文翻譯神器,SCI科技論文英語翻譯的一點個人心得
  • 協議的定義,連接跟蹤TCP協議狀態轉換
  • 洛谷 T284709 怨念(resent)
  • 1330 小青蛙跳臺階
  • 動態規劃解決小青蛙跳臺階問題
  • 代碼記錄丨小青蛙和漢諾塔
  • 小青蛙爬井
  • 【基礎】小青蛙回來了