复数
数集拓展到实数范围内,仍有些运算无法进行。比如判别式小于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)
复数的模
将复数的实部与虚部的平方和的正的平方根的值称为该复数的模,记作∣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θ)