文档章节

模拟复数及其运算

自由的角马
 自由的角马
发布于 2015/01/10 13:58
字数 1215
阅读 8
收藏 0


复数

数集拓展到实数范围内,仍有些运算无法进行。比如判别式小于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θ

本文转载自:http://blog.csdn.net/luoweifu/article/details/8226169

自由的角马
粉丝 1
博文 269
码字总数 0
作品 0
文山
私信 提问
.NET的数学库NMath实用教程——复数的值操作和逻辑运算

NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程,有任何建议或提示...

ymy_666666
01/29
14
0
  python cookbook 3 数字 日期 时间(2)

5.字节到大整数的转换 #拥有128位长的16个元素的字节字符串。>>> data = b'x00x124Vx00xx90xabx00xcdxefx01x00#x004'>>> len(data)16将bytes解析为整数,使用 int.from_bytes() 方法 仅使用与......

xiaoanyunfei
2015/08/09
33
0
你知道MATLAB ,但你知道 NMATH吗?

NMath是一个.NET的数学库,包含了NET平台上的面向对象数字计算的基础类。 产品特点如下: 单精度和双精度复数类 为以下四种数据类型提供全功能的向量和矩阵类:单精度浮点数,双精度浮点数,...

愤怒的小吉
2014/10/24
745
0
python核心编程-第五章-个人笔记

简介 ①Python中数字支持以下类型:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数 ②创建数字对象和给变量赋值一样】 ③用del删除对对象的引用。删除之后,无法再使用这个引用(变...

好好先生_1028
2015/11/18
63
0
python浓缩(5)数字

详细介绍每一种数字类型,适用的各种运算符, 及用于处理数字的内建函数。 5.1 数字类型 数字提供了标量贮存和直接访问。它是不可更改类型,也就是说变更数字的值会生成新的对象。 Python 支持...

人生如梦19
2016/04/11
112
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
53分钟前
5
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
18
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
15
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部