oracle 判断是否复数,模拟复数及其运算 - 自由的角马的个人空间 - OSCHINA - 中文开源技术交流社区...

复数

数集拓展到实数范围内,仍有些运算无法进行。比如判别式小于0的一元二次方程仍无解,因此将数集再次扩充,达到复数范围。

形如z=a+bi的数称为复数(complex number),其中规定i为虚数单位,且i^2=i×i=-1(a,b是任意实数)。我们将复数z=a+bi中的实数a称为复数z的实部(real part)记作Rez=a,实数b称为复数z的虚部(imaginary part)记作Imz=b。

已知:当b=0时,z=a,这时复数成为实数  当a=0且b≠0时,z=bi,我们就将其称为

共轭复数

对于复数z=a+bi,称复数z'=a-bi为z的共轭复数。即两个实部相等,虚部(虚部不等于0)互为相反数的复数互为共轭复数(conjugate complex number)。复数z的共轭复数记作z。表示方法为在字母z上方加一横线即共轭符号。

复数的运算

加法

z1=a1+b1i, z2=a2+b2i

z1+z2 =(a1+b1i)+(a2+b2i) =(a1+a2)+(b1+b2)i

乘法

z1=a1+b1i, z2=a2+b2i

z1*z2=(a1+b1i)*(a2+b2i)

= (a1a2-b1b2)+(a1b2+a2b1)i

除法

z1=a1+b1i, z2=a2+b2i

z1/z2 = [(a1a2 + b1b1) + (a2b1-a1b2)i]/(a2a2 + b2b2)

40e434034d450e7f7cbb1998b627fe23.png

复数的模

将复数的实部与虚部的平方和的正的平方根的值称为该复数的模,记作∣z∣.即对于复数z=a+bi,它的模∣z∣=√(a^2+b^2)

棣莫佛定理

对于复数z=r(cosθ+isinθ),有z的n次幂

z^n=(r^n)*[cos(nθ)+isin(nθ)](其中n是正整数)

开方法则

若z^n=r(cosθ+isinθ),则

z=n√r[cos(2kπ+θ)/n+isin(2kπ+θ)/n](k=0,1,2,3……n-1)

模拟复数及其运算的源码实现

package cn.edu.jxau.image;

/**

* 用y = a+bi;模拟复数

* @author luoweifu

*

*/

class Complex {

private double a;

private double b;

public Complex(double a, double b) {

this.a = a;

this.b = b;

}

public double getA() {

return a;

}

public double getB() {

return b;

}

/**

* 求一个复数和一个实型数据的和;

* @param a 实数

* @return 结果(复数)

*/

public Complex add(double a) {

this.a = this.a + a;

return this;

}

/**

* 用于求解两复数的和

* z1=a1+b1i, z2=a2+b2i

* z1+z2 = (a1+a2) + (b1+b2)i

* @param c

* @return

*/

public Complex add(Complex c) {

a = a + c.getA();

b = b + c.getB();

return this;

}

/**

* 用于求一个复数和一个实型数据的差;

* @param x

* @return

*/

public Complex minus(double x) {

a = a-x;

return this;

}

/**

* 用于求解两复数的差

* @param c

* @return

*/

public Complex minus(Complex c) {

a = a - c.getA();

b = b - c.getB();

return this;

}

/**

* 用于求一个复数和一个实型数据的积;

* @param r

* @return

*/

public Complex multiply(double r) {

a = a* r;

b = b*r;

return this;

}

/**

* 复数的乘法

* z1=a1+b1i, z2=a2+b2i

* z1*z2 = (a1+b1i)*(a2+b2i)= (a1a2-b1b2) + (a1b2+a2b1)i

* @param c

* @return

*/

public Complex multiply(Complex c) {

double a1 = this.a, b1 = this.b;

double a2 = c.getA(), b2 = c.getB();

a = a1*a2 - b1*b2;

b = a1*b2+a2*b1;

return this;

}

/**

* 复数的除法

* z1=a1+b1i, z2=a2+b2i

* z1/z2 = [(a1a2 + b1b1) + (a2b1-a1b2)i]/(a2a2 + b2b2)

* @param c

* @return

*/

public Complex division(Complex c) {

double a1 = this.a, b1 = this.b;

double a2 = c.getA(), b2 = c.getB();

a = (a1*a2 + b1*b2)/(a2*a2 + b2*b2);

b = (a2*b1 - a1*b2)/(a2*a2 + b2*b2);

return this;

}

@Override

public String toString() {

if(b>=0) {

return a + "+" + b + "i";

} else {

return a + "" + b + "i";

}

}

/**

* 求复数的模

* @return

*/

public double model() {

return Math.sqrt(a*a + b*b);

}

/**

* 复数的n次幂

* @param n

* @return

*/

public Complex pow(int n) {

double r = model();

double o = Math.atan2(b, a);

a = Math.pow(r, n)*Math.cos(n*o);

b = Math.pow(r, n)*Math.sin(n*o);

return this;

}

/*

public double sqrt(int n) {

double r = model();

double o = Math.atan2(b, a);

//Math.

return 0;

}

*/

/*public static void main(String[] args) {

Complex c1 = new Complex(5, 3);

Complex c2 = new Complex(1, 2);

c1.add(4);

System.out.println("复数(5+3i)与实数4的和为:"+c1);

c1.add(c2);

System.out.println("复数(5+3i)与复数(1+2i)的和为:"+c1);

c1.minus(4);

System.out.println("复数(5+3i)与实数4的差为:"+c1);

c1.minus(c2);

System.out.println("复数(5+3i)与复数(1+2i)的差为:"+c1);

c1.multiply(7);

System.out.println("复数(5+3i)与实数7的积为:"+c1);

c1.multiply(c2);

System.out.println("复数(5+3i)与复数(1+2i)的积为:"+c1);

c1.division(c2);

System.out.println("复数(5+3i)与复数(1+2i)的商为:"+c1);

//System.out.println(Math.pow(81, 0.25));

}*/

}

复数的几何表示法

①几何形式

复数z=a+bi被复平面上的点z(a,b)唯一确定。这种形式使复数的问题可以借助图形来研究。也可反过来用复数的理论解决一些几何问题。

②向量形式。复数z=a+bi用一个以原点O为起点,点Z(a,b)为终点的向量OZ表示。这种形式使复数四则运算得到恰当的几何解释。

③三角形式。复数z=a+bi化为三角形式

z=r(cosθ+isinθ)  式中r=√(a^2+b^2),是复数的模(即绝对值)

θ是以x轴为始边,射线OZ为终边的角,叫做复数的辐角,辐角的主值记作arg(z)这种形式便于作复数的乘、除、乘方、开方运算。

④指数形式。将复数的三角形式z=r( cosθ+isinθ)中的cosθ+isinθ换为exp(iθ),复数就表为指数形式z=rexp(iθ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值