matlab中怎么编复数

matlab中怎么编复数,第1张

复数从直角坐标系转换到极坐标系,这一块主要是根据公式来。

对于 z = a + bi 的形式

r = sqrt(a^2+b^2)    在matlab中可以用abs()函数求。

theta = arctan(b/a)    在matlab中可以用angle()函数求,得到弧度结果。

结果如下:

对于极坐标转化直角坐标,也是根据公式

a = rcos(theta)

b = rsin(theta)

程序如下:

#define ARR_SIZE 20

typedef struct complex

{

int aNum;

int bNum;

}Complex;

void Add(Complex A, Complex B)

{

A->aNum=A->aNum+B->aNum;

A->bNum=A->bNum+B->bNum;

}

void Minus(Complex A, Complex B)

{

A->aNum=A->aNum-B->aNum;

A->bNum=A->bNum-B->bNum;

}

char FormatComplex(Complex A) //格式化复数,变成a+bi

{

char temp[ARR_SIZE];

wsprintf(temp,"%d+%d i",A->aNum,A->bNum);

return temp;

}

首先为前一位热心网友的学识着急,多看看书吧。奇数次开方可对负数进行运算,提问者问的是复数,不是负数。

和提问者确认一下,是负数还是复数?现在以复数作答。

然后给提问者一个失望地答案:Excel的功能可能没有那么强大。

在Excel中,提供了部分复数运算的公式,都是以IM开头的,在任意单元格输入=IM,便可自动联想到这些公式,比如对两个复数相加,=IMSUM(a+bi,c+di)这样,不过这两个数应该是数值,而不是变量公式。

如果复数包含在公式里,可能需要对公式进行嵌套,通过复数的平方根函数IMSQRT运算。

给你个类的吧,c++中一般不用结构体

#include <iostreamh>

//using namespace std;

class complex

{

private:

float real;

float image;

public:

complex(float r=0,float i=0)

{

real=r;

image=i;

}

/

void display()

{

cout<<real<<"+"<<image<<"i"<<endl;

}

/

complex operator +(complex &obj)

{

complex c;

creal=real+objreal;

cimage=image+objimage;

return c;

}

complex operator -(complex &obj)

{

complex c;

creal=real-+objreal;

cimage=image-objimage;

return c;

}

complex operator (complex &obj)

{

complex c;

creal=realobjreal-imageobjimage;

cimage=imageobjreal+objimagereal;

return c;

}

complex operator /(complex &obj)

{

complex c;

creal=realobjreal+imageobjimage;

cimage=imageobjreal-objimagereal;

float A=objrealobjreal+objimageobjimage;

creal=creal/A;

cimage=cimage/A;

return c;

}

friend ostream & operator<<(ostream & ,complex &);

};

ostream & operator<<(ostream &out ,complex &obj)

{

out<<objreal<<"+"<<objimage<<"i"<<endl;

return out;

}

//3 ^ 2 ===>9

int main()

{

complex c1(3,4);

complex c2(c1);

//complex c3(-12,30);

cout<<c1<<endl; //display();

cout<<c2<<endl; //display();

complex c;

c=c1+c2;

cout<<c<<endl; //display();

c=c1-c2;

cout<<c<<endl; //display();cdisplay();

c=c1c2;

cout<<c<<endl; //display();cdisplay();

c=c1/c2;

cout<<c<<endl; //display();cdisplay ();

return 0;

}

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

原文地址: http://outofmemory.cn/langs/12163300.html

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

发表评论

登录后才能评论

评论列表(0条)

保存