java复数遇到的问题_[求助]复数的问题???

[求助]复数的问题???

设有复数a=(3,5);b=(4,8);3,4为复数的实部,5,8为复数的虚部.

编程求复数a,b,的加减乘除运算???

搜索更多相关的解决方案:

复数  加减乘除  运算

----------------解决方案--------------------------------------------------------

等待eastsun的牛代码,新手上路我

[CODE]

/**

*写一个关于复数运算的类

*在java中sqrt(-1)的值为NaN,我们做如下约定:用数组[a,b]代表一个复数,其中

*a代表复数的实部,b代表复数的虚部。

*Complex类实现了复数的基本运算。

*/

import java.util.*;

public final class Complex{

public static double complexNorm(double[] a){

return Math.sqrt(a[0]*a[0]+a[1]*a[1]);

}

public static double[] complexAdd(double[] a,double[] b){

return new double[]{a[0]+b[0],a[1]+b[1]};

}

public static double[] complexSub(double[] a,double[] b){

return new double[]{a[0]-b[0],a[1]-b[1]};

}

public static double[] complexMuti(double[] a,double[] b){

return new double[]{a[0]*b[0]-a[1]*b[1],a[0]*b[1]+a[1]*b[0]};

}

public static double[] complexDvi(double[] a,double[] b){

double c=complexNorm(b)*complexNorm(b);

double[] d={b[0],-b[1]};

double[] e=complexMuti(a,d);

return new double[]{e[0]/c,e[1]/c};

}

public static void main(String[] args){

double[] a={1,2};

double[] b={3,4};

System.out.println(Arrays.toString(complexAdd(a,b)));

System.out.println(Arrays.toString(complexSub(a,b)));

System.out.println(Arrays.toString(complexMuti(a,b)));

System.out.println(Arrays.toString(complexDvi(a,b)));

}

}[/CODE]

----------------解决方案--------------------------------------------------------

程序代码:

/**

* By [url=http://eastsun.javaeye.com]Eastsun[/url]

*/

public class ComplexTest{

public static void main(String[] args){

Complex a =new Complex(1,2);

Complex b =new Complex(2,0);

System.out.println(a+\"+\"+b+\" = \"+a.add(b));

System.out.println(a+\"-\"+b+\" = \"+a.sub(b));

System.out.println(a+\"*\"+b+\" = \"+a.mul(b));

System.out.println(a+\"/\"+b+\" = \"+a.div(b));

}

}

/**

*一个Complex对象,提供add,sub,mul,div方法;并复写了toString方法

*注意,这是一个不可变类;就是说类一旦创建其表示的复数就不会改变

*/

class Complex{

private final double real,image;

public Complex(double r,double i){

real =r;

image =i;

}

/**

*返回一个Complex,代表this+c

*注意,该方法不会改变当前对象的值.其余方法类似

*/

public Complex add(Complex c){

return new Complex(real+c.real,image+c.image);

}

public Complex sub(Complex c){

return new Complex(real-c.real,image-c.image);

}

public Complex mul(Complex c){

return new Complex(real*c.real-image*c.image,real*c.image+image*c.real);

}

public Complex div(Complex c){

double squareL =c.real*c.real+c.image*c.image;

double r =real*c.real -image*c.image;

double i =real*c.image+image*c.real;

return new Complex(r/squareL,i/squareL);

}

public String toString(){

if(image==0) return \"\"+real;

else return \"(\"+real+(image<0?\"\"+image:\"+\"+image)+\"i)\";

}

}

----------------解决方案--------------------------------------------------------

写的都不错,

谢谢了,

值的去好好学习.

----------------解决方案--------------------------------------------------------

请问什么是复数,好像是数学上的问题吧,是我的弱项啊!

----------------解决方案--------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基本的Java实验,用于实现复数类和一些基本操作: ```java public class ComplexNumber { private double real; private double imaginary; public ComplexNumber(double real, double imaginary) { this.real = real; this.imaginary = imaginary; } public double getReal() { return real; } public double getImaginary() { return imaginary; } public ComplexNumber add(ComplexNumber other) { return new ComplexNumber(real + other.real, imaginary + other.imaginary); } public ComplexNumber subtract(ComplexNumber other) { return new ComplexNumber(real - other.real, imaginary - other.imaginary); } public ComplexNumber multiply(ComplexNumber other) { double newReal = real * other.real - imaginary * other.imaginary; double newImaginary = real * other.imaginary + imaginary * other.real; return new ComplexNumber(newReal, newImaginary); } public ComplexNumber divide(ComplexNumber other) { double denominator = other.real * other.real + other.imaginary * other.imaginary; double newReal = (real * other.real + imaginary * other.imaginary) / denominator; double newImaginary = (imaginary * other.real - real * other.imaginary) / denominator; return new ComplexNumber(newReal, newImaginary); } public String toString() { if (imaginary < 0) { return real + " - " + (-imaginary) + "i"; } else { return real + " + " + imaginary + "i"; } } } ``` 这个类定义了一个名为ComplexNumber的复数类,包含实部和虚部。您可以通过调用实例方法来执行以下操作: - add():添加两个复数。 - subtract():从两个复数中减去一个。 - multiply():将两个复数相乘。 - divide():将两个复数相除。 - toString():将复数作为字符串返回。 以下是一个简单的示例,演示如何使用ComplexNumber类: ```java public class Main { public static void main(String[] args) { ComplexNumber c1 = new ComplexNumber(1, 2); ComplexNumber c2 = new ComplexNumber(3, 4); ComplexNumber sum = c1.add(c2); ComplexNumber difference = c1.subtract(c2); ComplexNumber product = c1.multiply(c2); ComplexNumber quotient = c1.divide(c2); System.out.println("c1: " + c1.toString()); System.out.println("c2: " + c2.toString()); System.out.println("Sum: " + sum.toString()); System.out.println("Difference: " + difference.toString()); System.out.println("Product: " + product.toString()); System.out.println("Quotient: " + quotient.toString()); } } ``` 输出结果: ``` c1: 1.0 + 2.0i c2: 3.0 + 4.0i Sum: 4.0 + 6.0i Difference: -2.0 - 2.0i Product: -5.0 + 10.0i Quotient: 0.44 + 0.08i ``` 希望这个例子能够对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值