阳光日志

向着阳光,每天进步一点点!

模拟复数及其运算


复数

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

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

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

共轭复数

对于复数z=a+bi,称复数z'=a-biz的共轭复数。即两个实部相等,虚部(虚部不等于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θ),有zn次幂

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

开方法则

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

 z=nr[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 被复平面上的点 za)唯一确定。这种形式使复数的问题可以借助图形来研究。也可反过来用复数的理论解决一些几何问题。 

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

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

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

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

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

阅读更多

扫码向博主提问

去开通我的Chat快问

luoweifu

设计模式、编程思想、职场生活
版权声明:本文为博主原创文章,未经博主允许不得用于任何商业用途,转载请注明出处。 https://blog.csdn.net/luoweifu/article/details/8226169
个人分类: java 图像处理
想对作者说点什么? 我来说一句

java复数四则运算

2010年05月12日 3KB 下载

C++复数运算

2016年06月25日 55KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭