C语言,复数运算,测试过直接用

#include "stdio.h"
#include "math.h"
 
 
typedef struct plural
{
    double shi;
    double xv;
};
 
 
//复数加法
plural complexAdd(plural a, plural b)
{
     plural result;
     result.shi = a.shi + b.shi;
     result.xv = a.xv + b.xv;
     return result;
}
//复数减法
plural complexSubtract(plural minuend, plural subtrahend)
 {
     plural result;
     result.shi = minuend.shi - subtrahend.shi;
     result.xv = minuend.xv - subtrahend.xv;
     return result;
 }
//复数乘法
plural complexMultiply(plural a, plural b)
{
    plural result;
    result.shi = a.shi * b.shi - a.xv * b.xv;
    result.xv = a.xv * b.shi + a.shi * b.xv;
    return result;
}
//复数除法
plural complexDivision(plural dividend, plural divisor)
{
    plural result;
    result.shi = (dividend.shi * divisor.shi + dividend.xv * divisor.xv) /(divisor.shi * divisor.shi + divisor.xv * divisor.xv);
    result.xv = (dividend.xv * divisor.shi - dividend.shi * divisor.xv) /(divisor.shi * divisor.shi + divisor.xv * divisor.xv);
    return result;
}
//复数求模
double complexAbs(plural a)
{
    return (sqrt( pow(a.shi,2) + pow(a.xv,2) ));
}
//复数取相角 返回 弧度rad
double complexAngle(plural a)
{
    /*是atan2而非atan,(-PI,PI] */
    return (atan2( a.xv,a.shi));
}
//复指数运算
plural complexExp(plural a)
{
    plural result;
 
    result.shi = exp(a.shi) * cos(a.xv);
    result.xv = exp(a.shi) * sin(a.xv);
    return result;
}
//通过模和相角合成复数 1模   2弧度rad
plural complexByAbsAngle(double r, double theta)
{
    plural tmp_1,tmp_2;
    tmp_1.shi = 0;
    tmp_1.xv = theta;
    tmp_2 = complexExp(tmp_1);
    tmp_2.shi *= r;
    tmp_2.xv *= r;
    return tmp_2;
}
 
 
 
 
int main()
{
    plural data1,data2,r;
    double t=0;
    data1.shi=0.356;
    data1.xv=0;
    data2.shi=7.5;
    data2.xv=4;
    r=complexByAbsAngle(2.23607,1.10715);
    printf("%f\n",r.shi);
    printf("%f\n",r.xv);
    return 0;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值