700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 复数的指数C语言 复数运算 - RapidBird的个人空间 - OSCHINA - 中文开源技术交流社区...

复数的指数C语言 复数运算 - RapidBird的个人空间 - OSCHINA - 中文开源技术交流社区...

时间:2022-01-06 15:52:12

相关推荐

复数的指数C语言 复数运算 - RapidBird的个人空间 - OSCHINA - 中文开源技术交流社区...

#include "stdafx.h"

#include "math.h"

#include "stdio.h"

#include "ComplexNumber.h"

//复数作图

void oplot(int n, double x[], double y[], char xc, char yc, char c,double *xd, double *yd)

{

int i,j,k;

double xx,yy;

char xy[72][72];

for (i=0; i<=71; i++)

for (j=0; j<=71; j++) xy[i][j]=' ';

xy[0][35]='Y';

for (i=1; i<=71; i++) xy[i][36]=yc;

xy[36][71]='X';

for (j=0; j<=70; j++) xy[36][j]=xc;

xx=0.0;

yy=0.0;

for (k=0; k<=n-1; k++)

{

if (fabs(x[k])>xx) xx=fabs(x[k]);

if (fabs(y[k])>yy) yy=fabs(y[k]);

}

xx=35.0/xx;

yy=35.0/yy;

for (k=0; k<=n-1; k++)

{

i=37.0-yy*y[k]-0.5;

j=xx*x[k]+36.0-0.5;

xy[i][j]=c;

}

printf("\n");

for (i=0; i<=71; i++)

{

for (j=0; j<=71; j++)

printf("%c",xy[i][j]);

printf("\n");

}

printf("\n");

printf("X-scale is:%13.7e\n",xx);

printf("Y-scale is:%13.7e\n",yy);

printf("\n");

*xd=xx;

*yd=yy;

return;

}

//复数对数

void oclog(double x, double y, double *u, double *v)

{

double p;

p=log(sqrt(x*x+y*y));

*u=p;

*v=atan2(y,x);

return;

}

//复数的N次方根

void ontrt(double x, double y, int n, double u[], double v[])

{

int k;

double r,q,t;

if (n<1) return;

q=atan2(y,x);

r=sqrt(x*x+y*y);

if (r+1.0!=1.0)

{

r=(1.0/n)*log(r);

r=exp(r);

}

for (k=0; k<=n-1; k++)

{

t=(2.0*k*3.1415926+q)/n;

u[k]=r*cos(t);

v[k]=r*sin(t);

}

return;

}

//复数指数

void ocexp(double x, double y, double *u, double *v)

{

double p;

p=exp(x);

*u=p*cos(y);

*v=p*sin(y);

return;

}

//复数正弦

void ocsin(double x, double y, double *u, double *v)

{

double p,q;

p=exp(y);

q=exp(-y);

*u=sin(x)*(p+q)/2.0;

*v=cos(x)*(p-q)/2.0;

return;

}

//复数除法

void ocdiv(double a, double b, double c, double d, double *e, double *f)

{

double p,q,s,w;

p=a*c;

q=-b*d;

s=(a+b)*(c-d);

w=c*c+d*d;

if (w+1.0==1.0)

{

*e=1.0e+35*a/fabs(a);

*f=1.0e+35*b/fabs(b);

}

else

{

*e=(p-q)/w;

*f=(s-p-q)/w;

}

return;

}

//复数乘幂

void opowr(double x, double y, int n, double *u, double *v)

{

double r,q;

q=atan2(y,x);

r=sqrt(x*x+y*y);

if (r+1.0!=1.0)

{

r=n*log(r);

r=exp(r);

}

*u=r*cos(n*q);

*v=r*sin(n*q);

return;

}

//复数乘法

void ocmul(double a, double b, double c, double d, double *e, double *f)

{

double p,q,s;

p=a*c;

q=b*d;

s=(a+b)*(c+d);

*e=p-q;

*f=s-p-q;

return;

}

//复数余弦

void occos(double x, double y, double *u, double *v)

{

double p,q;

p=exp(y);

q=exp(-y);

*u=cos(x)*(p+q)/2.0;

*v=-sin(x)*(p-q)/2.0;

return;

}

----根据《C语言常用算法程序集》整理

投票>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。