复数的问题

有一复数,为a+bi,设计一个函数,函数名为sqrt3,有四个参数doublea,doubleb,double*u,double*wa+bi=(u+wi)^3提供a、b和... 有一复数,为a+bi,设计一个函数,函数名为sqrt3,有四个参数
double a,double b,double *u,double *w
a+bi=(u+wi)^3
提供a、b 和u、w的地址
要求输出u、w
说白了就是复数开立方
vc6.0编
没返回值。(a、b可能为0)
包含库math.h 正确加50分
展开
 我来答
public_chn
2008-05-09 · TA获得超过121个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:0
展开全部
//再加50分吧,我好不容易写的!
//一句不用改就可以运行
#include "iostream"
#include "math.h"
using namespace std;
#define sqrttime 3//可以修改sqrttime的值,来修改开方的次数
void sqrt3(double a,double b,double *u,double *w)
{
//开N次方有N个结果
int k=0;
double sqrt3v=(double)(1.0/sqrttime);
double PI=3.1415926535897932384626;
if (a==0.0&&b==0.0)
{
for (k=0;k<sqrttime;k++)
u[k]=w[k]=0;
return ;
}//a和b都为0时,得数全为0
if (b==0)
{
for (k=0;k<sqrttime;k++)
{
u[k]=pow(a,sqrt3v);
w[k]=0;
}
return ;
}//b为0时,得数为a的开立方

//a和b都不为0,将复数化为三角形式再开方
double r=sqrt(a*a+b*b);//复数的模
double r3=pow(r,sqrt3v);//复数的模的开N次方
double th=atan(b/a);//复角
for (k=0;k<sqrttime;k++)
{
u[k]=r3*cos((th+2*k*PI)/sqrttime);//得数的实部
w[k]=r3*sin((th+2*k*PI)/sqrttime);//得数的虚部
}
}

int main()
{
double u[sqrttime];
double w[sqrttime];
double a=9.0;//测试的实部
double b=-40.0;//测试的虚部
sqrt3(a,b,u,w);
for (int cnt=0;cnt<sqrttime;cnt++)
{
if (w[cnt]>0)
cout<<u[cnt]<<"+"<<w[cnt]<<"i"<<endl;
else if (w[cnt]<0)
cout<<u[cnt]<<w[cnt]<<"i"<<endl;
else
cout<<u[cnt]<<endl;
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式