如何运用复数的代数表示式进行四则运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何运用复数的代数表示式进行四则运算相关的知识,希望对你有一定的参考价值。

参考技术A 复数的模:将复数的实部与虚部的平方和的正的平方根的值,记作∣z∣.
即对于复数z=a+bi,它的模:∣z∣=√(a^2+b^2)
复数的集合用C表示,实数的集合用R表示,显然,R是C的真子集。
复数x被定义为二元有序实数对(a,b),记为z=a+bi,这里a和b是实数,i是虚数单位。在复数a+bi中,a=Re(z)称为实部,b=Im(z)称为虚部。当虚部等于零时,这个复数可以视为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。复数域是实数域的代数闭包,也即任何复系数多项式在复数域中总有根。 复数是由意大利米兰学者卡当在十六世纪首次引入,经过达朗贝尔、棣莫弗、欧拉、高斯等人的工作,此概念逐渐为数学家所接受。
复数的四则运算规定为:
加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;
减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;
乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i;
除法法则:(a+bi)÷(c+di)=[(ac+bd)/(c2+d2)]+[(bc-ad)/(c2+d2)]i.

java 中实现复数的加减

题目如下: 定义一个复数类,该类包含实部和虚部属性及构造函数。类中还应包含实现复数加法、减法、乘法的方法。并在程序中使用这个类。

(1):具体代码(附注释)

复数类:

public class Complex 

private float shibu;

private float xubu;

Complex()

this(0,0);

Complex(float shibu,float xubu)

this.shibu=shibu;

this.xubu=xubu;


public void Add(Complex p)

Complex result=new Complex();

result.shibu=this.shibu+p.shibu;

result.xubu=this.xubu+p.xubu;

System.out.print("加法结果为:"+result.shibu+"+"+result.xubu+"i");


public void Sub(Complex p)

Complex result=new Complex();

result.shibu=this.shibu-p.shibu;

result.xubu=this.xubu-p.xubu;

System.out.print("加法结果为:"+result.shibu+"+"+result.xubu+"i");

public void Mul(Complex p)

Complex result=new Complex();

result.shibu=this.shibu*p.shibu-this.xubu*p.xubu;

result.xubu=this.shibu*p.xubu+p.shibu*this.xubu;

System.out.print("乘法结果为:"+result.shibu+"+"+result.xubu+"i");

public static void main(String[] args) 


Complex fushu1=new Complex(1,2);

Complex fushu2=new Complex(3,4);

fushu1.Add(fushu2);

fushu1.Sub(fushu2);

fushu1.Mul(fushu2);



(2):提供一个例子:

源代码:

import java.io.*;

public class Book

double sb;

double xb;

Book(double x,double y)

this.sb=x;

this.xb=y;

Book()

   


public static void main(String args[])


System.out.println("请输入数据:");

double a=0;

double b=0;

double c=0;

double d=0;

String s;


BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入第一个复述的实部:");

try

s = in.readLine();

a=Double.parseDouble(s);

catch(IOException e)

 System.out.println("抛掷异常");

System.out.println("请输入第一个复述的虚部:");

try

s = in.readLine();

b =Double.parseDouble(s);

catch(IOException e)

 System.out.println("抛掷异常");


System.out.println("请输入第二个复述的实部:");

try

s = in.readLine();

c =Double.parseDouble(s);

catch(IOException e)

 System.out.println("抛掷异常");

System.out.println("请输入第二个复述的虚部:");

try

s = in.readLine();

d =Double.parseDouble(s);

catch(IOException e)

 System.out.println("抛掷异常");

Book h;

h=new Book(a,b);

Book j;

j=new Book(c,d);

System.out.println("您输入的一个数为:");

toString(h);

System.out.println("您输入的二个数为:");

toString(j);


Book k;

k=new Book();


char z=\'y\';

do


System.out.println("请选择您要进行的计算:");

System.out.println("1 :进行加法运算");

System.out.println("2 :进行减法运算");

System.out.println("3 :进行修改");

System.out.println("4 :进行乘法运算");

System.out.println("5 :进行除法运算");

System.out.println("6 :查看修改结果");

int i=0;

try

i= Integer.parseInt(in.readLine());

catch(IOException e)

 System.out.println("抛掷异常");

switch(i)

case 1:

k.sb=jia(h.sb,j.sb);

k.xb=jia(h.xb,j.xb);

System.out.println("计算结果的实部为:"+k.sb);

System.out.println("计算结果的虚部为:"+k.xb);

toString(k);

break ;

case 2:

k.sb=jian(h.sb,j.sb);

k.xb=jian(h.xb,j.xb);

System.out.println("计算结果的实部为:"+k.sb);

System.out.println("计算结果的虚部为:"+k.xb);

toString(k);

break ;

case 3:

System.out.println("请输入您要修改哪个实数:");

int l=0;

try

l= Integer.parseInt(in.readLine());

catch(IOException e)

 System.out.println("抛掷异常");

if(l==1)

h.xiugais(h);

h.xiugaix(h);

else

xiugais(j);

xiugaix(j);

break ;

case 4:

double f=0;

double e=0;

f=cheng(h.sb,j.sb)+cheng(h.xb,j.xb);

e=cheng(h.sb,j.xb)+cheng(h.xb,j.sb);

k.sb=(double)(Math.round(f*100)/100.0);

k.xb=(double)(Math.round(e*100)/100.0);

System.out.println("计算结果的实部为:"+k.sb);

System.out.println("计算结果的虚部为:"+k.xb);

toString(k);

break ;

case 5:

double chushu=cheng(j.sb,j.sb)-cheng(j.xb,-j.xb);

double beichushus=jian(cheng(h.sb,j.sb),cheng(h.xb,-j.xb));

double beichushux=jia(cheng(h.sb,-j.xb),cheng(h.xb,j.sb));

k.sb=chu(beichushus,chushu);

k.xb=chu(beichushux,chushu);

System.out.println("计算结果的实部为:"+k.sb);

System.out.println("计算结果的虚部为:"+k.xb);

toString(k);

break ;

case 6:

System.out.println("修改后的结果为:");

System.out.println("第一个复数:"+toString(h));

System.out.println("第二个复数:"+toString(j));

break ;


System.out.println("请问您是否还要继续 y/n:");

try

z=(char)System.in.read();

System.in.skip(2); //忽略回车换行

catch(IOException e)


 while(z==\'y\');


public static double gets(Book a)

return a.sb;

public static double getx(Book b)

return b.xb;


public static double xiugais(Book a)

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入您要修改的实部:");

double m=0;

try

m= Double.parseDouble(in.readLine());

catch(IOException e)

 System.out.println("抛掷异常");

a.sb=m;

System.out.println("修改成功:");

return 0;

public static double xiugaix(Book b)

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

System.out.println("请输入您要修改的虚部:");

double n=0;

try

n= Double.parseDouble(in.readLine());

catch(IOException e)

 System.out.println("抛掷异常");

b.xb=n;

System.out.println("修改成功:");

return 0;

public static double jia(double a,double b)//

double c=0;

c=a+b;

System.out.println("加法成功:");

return c ;


public static double jian(double a,double b)

double c=0;

c=a-b;

System.out.println("减法成功:");

return c;


public static double cheng(double a,double b)

double c=0;

c=a*b;

System.out.println("乘法成功:");

return  c;


public static double chu(double a,double b)

double d=0;

double c=0;

d=a/b;

c=(double)(Math.round(d*100)/100.0);

System.out.println("除法成功:");

return c ;

public  static double toString(Book a)

System.out.println("结果为:"+a.sb+"+"+a.xb+"*i");

return 0;

(3)测试结果截图:

参考技术A 不知道是不是 ~
//复数类。

public class Complex

private double real,im; //实部,虚部

public Complex(double real, double im) //构造方法

this.real = real;
this.im = im;


public Complex(double real) //构造方法重载

this(real,0);


public Complex()

this(0,0);


public Complex(Complex c) //拷贝构造方法

this(c.real,c.im);


public boolean equals(Complex c) //比较两个对象是否相等

return this.real==c.real && this.im==c.im;


public String toString()

return "("+this.real+"+"+this.im+"i)";


public void add(Complex c) //两个对象相加
//改变当前对象,没有返回新对象
this.real += c.real;
this.im += c.im;


public Complex plus(Complex c) //两个对象相加,与add()方法参数一样不能重载
//返回新创建对象,没有改变当前对象
return new Complex(this.real+c.real, this.im+c.im);


public void subtract(Complex c) //两个对象相减
//改变当前对象,没有返回新对象
this.real -= c.real;
this.im -= c.im;


public Complex minus(Complex c) //两个对象相减,与subtract()方法参数一样不能重载
//返回新创建的对象,没有改变当前对象
return new Complex(this.real-c.real, this.im-c.im);



class Complex__ex

public static void main(String args[])

Complex a = new Complex(1,2);
Complex b = new Complex(3,5);
Complex c = a.plus(b); //返回新创建对象
System.out.println(a+" + "+b+" = "+c);



/*
程序运行结果如下:
(1.0+2.0i) + (3.0+5.0i) = (40.0+7.0i)

*/

以上是关于如何运用复数的代数表示式进行四则运算的主要内容,如果未能解决你的问题,请参考以下文章

用结构体函数计算两个复数的四则运算的程序分析、重难点和结论?

c语言复数四则运算

图像处理代数运算

geogebra中如何将运算的数值显示在绘图区?

如何利用matlab进行复数运算?

SS-CA-2022:什么是复数?如何进行复数四则运算?