如何使用普通计算器进行复数运算

如何使用普通计算器进行复数运算,第1张

使用方法:

1、利用计算器进行复数计算必须要用计算器的度,按DRG 键,使计算器显示窗中要有“DEG”标致

2、让计算器进入复数运算状态,分别按2ndF和CPLX,显示窗中有“CPLX”标致。

3、表示计算器只能进行复数的运算,而进行其它计算则是无效的。取消则重复进行即可。进行复数的加减乘除运算时计算器必须处于复数运算状态。

我的有重载+-/,楼上的没有,只是复制过来的,那个是例子囧

#include

using

namespace

std;

class

op

{

public:

op(double,double);

op

operator+(op

&o);

op

operator-(op

&o);

op

operator(op

&o);

op

operator/(op

&o);

void

display();

private:

double

real;

double

image;

};

op::op(double

r,double

i)

{

real=r;

image=i;

};

op

op::operator+(op

&o)

{

return

op(real+oreal,image+oimage);

}

op

op::operator-(op

&o)

{

return

op(real-oreal,image-oimage);

}

op

op::operator(op

&o)

{

return

op(realoreal,imageoimage);

}

op

op::operator/(op

&o)

{

return

op(real/oreal,image/oimage);

}

void

op::display()

{

cout<<"("<

}

void

main()

{

op

o1(11,22);

op

o2(22,33);

op

o3(00,00);

cout<<"o1=";

o1display();

cout<<"o2=";

o2display();

cout<<"o1+o2=";

o3=o1+o2;

o3display();

cout<<"o1-o2=";

o3=o1-o2;

o3display();

cout<<"o1o2=";

o3=o1o2;

o3display();

cout<<"o1/o2=";

o3=o1/o2;

o3display();

getchar();

}

刚好有个我自己用的复数类,给你看看。

//double型比较误差控制

#define EPSILON 10e-7

//double型比较

inline bool E2D(double a, double b = 0)

{

return fabs(a - b) < EPSILON;

}

//复数

class Mcomplex

{

public:

double r;

double i;

Mcomplex(){}

Mcomplex(double x, double y){r = x; i = y;}

Mcomplex csqrt() const

{

double x, y, w, rr, cc;

if(E2D(r)&&E2D(i))

{

return this;

}

else

{

Mcomplex c;

x = fabs(r);

y = fabs(i);

if(x >= y)

{

rr = y / x;

cc = x;

}

else

{

rr = x / y;

cc = y;

}

w = sqrt(05 (x + cc sqrt(10 + rr rr)));

if(r >= 00)

{

cr = w;

ci = i / (20 w);

}

else

{

ci = (i >= 00) w : -w;

cr = i / (20 ci);

}

return c;

}

}

double cabs() const

{

double x,y,ans,temp;

x = fabs(this->r);

y = fabs(this->i);

if(E2D(x))

ans = y;

else if(E2D(y))

ans = x;

else if(x > y)

{

temp = y / x;

ans = x sqrt(10 + temp temp);

}

else

{

temp = x / y;

ans = y sqrt(10 + temp temp);

}

return ans;

}

Mcomplex Conjg() const

{

Mcomplex b;

br = this->r;

bi = -this->i;

return b;

}

Mcomplex operator+(const Mcomplex& dc) const

{

Mcomplex b;

br = r + dcr;

bi = i + dci;

return b;

}

Mcomplex operator-(const Mcomplex& dc) const

{

Mcomplex b;

br = r - dcr;

bi = i - dci;

return b;

}

Mcomplex operator(const Mcomplex& dc) const

{

Mcomplex b;

br = r dcr - i dci;

bi = i dcr + r dci;

return b;

}

Mcomplex operator(double x) const

{

Mcomplex dc;

dcr = x r;

dci = x i;

return dc;

}

//when dc is zero, operator / return zero

Mcomplex operator/(const Mcomplex& dc) const

{

if(E2D(dcr)&&E2D(dci))

return dc;

Mcomplex b;

if(E2D(dci))

{

br = r / dcr;

bi = i / dci;

return b;

}

if(E2D(dcr))

{

br = i / dci;

bi = -r / dci;

return b;

}

double rr, den;

if(fabs(dcr) >= fabs(dci))

{

rr = dci / dcr;

den = dcr + rr dci;

br = (this->r + rr this->i) / den;

bi = (this->i - rr this->r) / den;

}

else

{

rr = dcr / dci;

den = dci + rr dcr;

br = (this->r rr + this->i) / den;

bi = (this->i rr - this->r) / den;

}

return b;

}

Mcomplex operator -() const

{

return Mcomplex(-r,-i);

}

Mcomplex& operator=(const Mcomplex& dc)

{

r = dcr;

i = dci;

return this;

}

Mcomplex& operator -=(const Mcomplex &dc)

{

r += dcr;

i += dci;

return this;

}

Mcomplex& operator +=(const Mcomplex &dc)

{

if(&dc == this)

{

r = 00;

i = 00;

}

else

{

r -= dcr;

i -= dci;

}

return this;

}

Mcomplex& operator =(const Mcomplex &dc)

{

double oldR = r;

r = r dcr - i dci;

//必须检查自乘情况

if(&dc == this)

{

i = oldRi;

i += i;

}

else

{

i = i dcr + oldR dci;

}

return this;

}

Mcomplex& operator =(double x)

{

r = x;

i = x;

return this;

}

//when dc is zero, operator /= return zero

Mcomplex& operator /=(const Mcomplex &dc)

{

if(E2D(dcr)&&E2D(dci))

{

r = 00;

i = 00;

return this;

}

this = this / dc;

return this;

}

};

}

例如想用matlab将一个带变量的复数式(5+ib)/(3-2ia)整理为实部+虚部的形式。

则可以用如下指令:

syms

a

b

real

z=(5+ib)/(3-2ia);

simple([real(z),imag(z)])

ans

=

[

(15-2ba)/(9+4a^2),

(10a+3b)/(9+4a^2)]

#include "mathh"

struct complex{

int a;

int b;

};

complex mul(complex x,complex y){

complex c;

ca=xaya-xbyb;

cb=xayb+xbya;

return c;

}

complex div(complex x,complex y){

complex c;

ca=(xaya+xbyb)/(yaya+ybyb);

cb=(xbya-xayb)/(yaya+ybyb);

return c;

}

complex powr(complex x,int n){

complex c;

ca=1;

cb=0;

for (int i=0;i<n;i++)

c=mul(c,x);

return c;

}

以上就是关于如何使用普通计算器进行复数运算全部的内容,包括:如何使用普通计算器进行复数运算、1.定义一个复数类,通过重载运算符,:+,-,*,/,直接实现两个复数之间的算术运算 用C++编程、求C++高手做个复数类的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/10219351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存