gpt4 book ai didi

java - 如何在java中处理复数?

转载 作者:行者123 更新时间:2023-12-01 09:23:18 26 4
gpt4 key购买 nike

我是java新手,不知道如何在java中处理复数。我正在为我的项目编写代码。我使用欧拉恒等式 exp(itheeta) = cos(theeta)+iSin(theeta) 来求 exp(i*2*pi*f)。我必须将得到的复数与数组“d”中的另一个数字相乘。这是我所做的

Complex Data[][] = new Complex[20][20];
for (int j = 0; j < d.size(); j++){
for (int k = 0; k<20; k++){
for (int l = 0; l<20; l++){
double re = Math.cos(2 * Math.PI * f);
double im = Math.sin(2 * Math.PI * f);
Complex p = new Complex(re, im);
Data[k][l] = ((d.get(j) * p.getReal()), (d.get(j) * p.getImaginary()));
}
}
}

但是,我在表达式 Data[k][l] = ((d.​​get(j) * p.getReal()), (d.get(j) * p) 上遇到错误.getImaginary())); 表示“赋值的左侧必须是变量”。请帮我解决这个问题。谢谢

最佳答案

不幸的是,它不像 C++ 中的复制构造函数或重载赋值运算符那样工作。

您必须显式调用复合体的构造函数,如

Data[k][l] = new Complex(realValue, imaginaryVal);

当然,您需要使用复数的方法来将两个数字相乘,因为 Java 中没有任何其他运算符重载的概念。

因此,也许 Complex 类可能有一些您可以使用的方法来代替运算符,例如

class Complex {
public static Complex mul(Complex c0, Complex c1) {
double r0=c.getRe(), r1=c1.getRe();
double i0=c.getIm(), i1=c1.getIm();
return new Complex(r0*r1-i0*i1, r0*i1+r1*i0);
}

public static Complex mulStore(Complex res, Complex c0, Complex c1) {
double r0=c.getRe(), r1=c1.getRe();
double i0=c.getIm(), i1=c1.getIm();
if(res==null) {
res=new Complex();
}
res.setRe(r0*r1-i0*i1);
res.setIm(r0*i1+r1*i0);
return res;
}

// equiv with this *= rhs;
public void mulAssign(Complex rhs) {
// perform the "this * rhs" multiplication and
// store the result in this.
Complex.mulStore(this, rhs, this);
}

}

关于java - 如何在java中处理复数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40017024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com