关于如何在 cpp 中用复数,我猜大家想的一定是complex这个东西(虽然我都没听说过这是什么),但是我就是不用它来搞复数乘法,我就来一个“纯实数假扮虚数运算”。
但我们先把格式搞清楚,而一个标准的格式是这样的:R+Ii(R为实数位,I为虚数位),以及若里面有一个是 0 的话,我们就把它去掉,若都是 0,那么只剩下一个 0。(其实这是为了符合大家的口味),所以我们就可以用如下代码来搞格式:
//R表示实数位,I表示虚数位,且它们都是个双精度浮点数
//以后到这里就用“排序”表示
if(I==0)
cout<<R;
else if(R==0)
cout<<I<<"i";
else
{
if(I<0)
cout<<R<<I<<"i";
else cout<<R<<"+"<<I<<"i";
}
然后就是运算,这其实也不难,因为只要掌握运算法则就行了,加法和减法各见下列代码
#include<iostream>
using namespace std;
int main()
{
double a,b,c,d;cin>>a>>b>>c>>d;
double R=a+c,I=b+d;
排序;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
double a,b,c,d;cin>>a>>b>>c>>d;
double R=a-c,I=b-d;
排序;
return 0;
}
然后是乘法,这个其实也不难,只要运用多项式求积展开的知识就行了,如下:
(a+bi)(c+di)=ac+adi+bci+bdi2=ac−bd+bci+adi=(ac−bd)+(bc+ad)i代码:
#include<iostream>
using namespace std;
int main()
{
double a,b,c,d;cin>>a>>b>>c>>d;
double R=a*c-b*d,I=a*d+b*c;
排序;
return 0;
}
最后是除法,众所周知,除以一个数等于乘上他的倒数,而我们又有复数倒数的公式,也就是: a+bi1=a2+b2a−a2+b2bi 所以只要改一下乘法的程序就可以了,代码如下:
#include<iostream>
using namespace std;
int main()
{
double a,b,c,d;cin>>a>>b>>c>>d;
c = c/(c*c+d*d);
d = -d/(c*c+d*d)
double R=a*c-b*d,I=a*d+b*c;
排序;
return 0;
}
OK,我的演讲就到这,如果有更多复数运算的需要,请把我这些代码都改一下即可。