复 数 的 运 算 法 则
- 格式:pdf
- 大小:163.06 KB
- 文档页数:7
复数的定义与四则运算法则复数是数学中的一种特殊数形式,由实部和虚部组成。
实部通常用实数表示,而虚部通常以虚数单位 i 表示。
复数的一般表示形式为 a + bi,其中 a 表示实部,b 表示虚部。
一、复数的定义复数的定义是通过引入虚数单位 i 而获得的。
虚数单位 i 的定义是i^2 = -1。
根据这个定义,我们可以得出两个重要的结论:i 的平方等于-1,而 -1 的平方根是 i。
二、虚数与实数虚数是指虚部不为零的复数。
当虚部 b 不为零时,复数 a + bi 称为虚数。
实部为零,即虚部 b 不为零时,复数 a + bi 称为纯虚数。
与实数不同的是,虚数和纯虚数在实轴上没有对应的点。
三、四则运算法则1. 加法法则:复数的加法满足交换律和结合律。
对于两个复数 a + bi 和 c + di,它们的和为 (a + c) + (b + d)i。
2. 减法法则:复数的减法也满足交换律和结合律。
对于两个复数 a + bi 和 c + di,它们的差为 (a - c) + (b - d)i。
3. 乘法法则:复数的乘法满足交换律、结合律和分配律。
对于两个复数 a + bi 和 c + di,它们的乘积为 (ac - bd) + (ad + bc)i。
4. 除法法则:复数的除法也满足交换律、结合律和分配律。
对于两个复数 a + bi 和 c + di(其中 c + di 不等于 0),它们的商为 [(ac + bd)/(c^2 + d^2)] + [(bc - ad)/(c^2 + d^2)]i。
四、共轭复数对于复数 a + bi,其中 a 表示实部,b 表示虚部。
那么复数 a - bi 称为其共轭复数。
共轭复数的一个重要性质是,两个复数的乘积的虚部为零。
五、复数的绝对值复数 a + bi 的绝对值等于它的模长,记作 |a + bi|,定义为 |a + bi| = √(a^2 + b^2)。
复数的模长是一个非负实数。
第九章复数复数是对实数域拓展得到的新的数域,然而复数其实并不算是全新的概念,它与已经学习的实数和向量都有直接联系。
根据实数的运算进一步推广即可得到复数的性质和运算规律;复数与向量在形式上具有诸多相同点并能建立起对应关系。
复数也具有显著的“数形结合”的特点,通过虚数单位i将“数”与“形”更加直接地结合了起来。
高中阶段对复数的学习和考察的内容较为基本,可以将学习本章当作对代数运算与向量知识的复习。
一、虚数与复数从用于计数的自然数开始,先根据加法和减法拓展到整数,再根据乘法和除法拓展到有理数,又根据乘方和开方拓展到实数,现在进一步拓展到复数。
1.1 实数与虚数解一元二次方程时,根据各项系数可以判断方程根的情况。
对于一元二次方程20ax bx c(0a )配方得:2224 (24b b ac xa a等式左边是完全平方数,恒大于等于0,由此可得:若240b ac,则方程有2个不同的实根。
若240b ac,则方程有2个相同的实根,或称只有1个实根。
若240b ac,则方程有没有实根。
为了令一元二次方程总是有解,现在规定根号内也可为负数,即:虚数。
现在只简单生硬地规定:对于虚数的具体含义,接下来将根据该规定,结合具体运算进行推导。
为方便地表示虚数,再引入一个新的单位:虚数单位,一般用符号i 表示。
其定义式为:i将实数的乘法运算作用于虚数单位i 。
任意虚数都可以用一个实数与虚数单位i 的乘积表示:5i根据虚数单位的定义i ,可得到关于i 的一系列运算规律:221i321i i i i i4242()(1)1i i即:对于任意k Z ,都有:41k i ,41k i i ,421k i ,43k i i 虚数的表示方式也适用于实数,只是通常被省略了。
若将“1”看作“实数单位”,即:1 。
“实数单位”“1”1 。
可以将实数和虚数看作分别属于两个不同“空间”的数,实数以1)为单位,在“实在”的空间内;i )为单位,在“虚拟”的空间内。
网易云课堂_C++程序设计入门(下)_第9单元:白公曾咏牡丹芳,一种鲜妍独“异常”_第9单元 - 作业3:OJ编程 - 使用异常进行复数运算的错误处理...第9单元?-?作业3:OJ编程?-?使用异常进行复数运算的错误处理查看帮助温馨提示:1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
在复数的运算中,练习异常处理依照学术诚信条款,我保证此作业是本人独立完成的。
通过C++内建的异常类,处理复数除法中除数为0 的问题(5分)题目内容请参见【第9单元 - 作业3说明:【OJ - 使用异常进行错误处理】】时间限制:500ms内存限制:32000kb#include iostream#include exception#include stdexcept#include limits#include cmathusing namespace std;class MyComplex--2. 创建一个类 MyComplex,用来表示复数。
MyComplex();MyComplex(double a, double b);friend ostream operator (ostream os, const MyComplex z);--4. 重载流插入运算符,使之可以将复数输出为如下的格式(实部如果是非负数,则不输出符号位;输出时要包含半角左右小括号):friend istream operator (istream is, MyComplex z);--3. 重载流提取运算符,使之可以读入以下格式的输入(两个数值之间使用空白分隔),将第一个数值存为复数的实部,将第二个数值存为复数的虚部:MyComplex operator+(const MyComplex secondMyComplex);--加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;MyComplex operator-(const MyComplex secondMyComplex);--减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;MyComplex operator*(const MyComplex secondMyComplex);--乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i;MyComplex operator-(const MyComplex secondMyComplex);--除法法则:(a+bi)÷(c+di)=[(ac+bd)-(c2+d2)]+[(bc-ad)-(c2+d2)]i.private:double a_;double b_;MyComplex::MyComplex()MyComplex::MyComplex(double a, double b)ostream operator(ostream os, const MyComplex z)--4. 重载流插入运算符,使之可以将复数输出为如下的格式(实部如果是非负数,则不输出符号位;输出时要包含半角左右小括号):-- TODO: 在此处插入 return 语句os.unsetf(std::ios::showpos);os "(" z.a_;os.setf(std::ios::showpos);os z.b_ "i)";return os;istream operator (istream is, MyComplex z)--3. 重载流提取运算符,使之可以读入以下格式的输入(两个数值之间使用空白分隔),将第一个数值存为复数的实部,将第二个数值存为复数的虚部:-- TODO: 在此处插入 return 语句is z.a_ z.b_;return is;MyComplex MyComplex::operator+(const MyComplex secondMyComplex)--加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;return MyComplex(a_ + secondMyComplex.a_, b_ + secondMyComplex.b_);MyComplex MyComplex::operator-(const MyComplex secondMyComplex)--减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;return MyComplex(a_ - secondMyComplex.a_, b_ - secondMyComplex.b_);MyComplex MyComplex::operator*(const MyComplex secondMyComplex)--乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i;return MyComplex(a_ * secondMyComplex.a_ - b_ * secondMyComplex.b_, secondMyComplex.a_ * b_ + a_ * secondMyComplex.b_);MyComplex MyComplex::operator-(const MyComplex secondMyComplex)--除法法则:(a+bi)÷(c+di)=[(ac+bd)-(c2+d2)]+[(bc-ad)-(c2+d2)]i.--1. 在【本单元作业2】的基础上,修改相关代码。
在做除法运算时,如果作为除数的复数z是0,则抛出一个runtime_error类型的异常--2. 在该runtime_error类型的异常对象中,存储着错误信息“Divisor is 0”(注意:请精确复制这段信息,否则即便你的程序逻辑正确,OJ系统仍然会判你失败。
输出信息中不包含引号)。
该错误信息可以通过runtime_error类的构造函数存入runtime_error对象中。
if (pow(secondMyComplex.a_, 2) + pow(secondMyComplex.b_, 2) == 0)--2. 在做除法时,如果除数是0,则输出一条信息:“Divisorcan not be 0” (注意:请精确复制这段信息,否则即便你的程序逻辑正确,OJ系统仍然会判你失败。
输出信息中不包含引号)然后结束程序(调用 exit() 函数),直接退出(注意,传递给操作系统的返回值与main函数正常结束时相同,仍然为0)。
throw runtime_error("Divisor is 0");return MyComplex((a_ * secondMyComplex.a_ + b_ * secondMyComplex.b_) - (pow(secondMyComplex.a_, 2) + pow(secondMyComplex.b_, 2)), (b_ * secondMyComplex.a_ - a_ * secondMyComplex.b_) - (pow(secondMyComplex.a_, 2) + pow(secondMyComplex.b_, 2)));int main() { -- 不可修改main函数中的代码,否则OJ将给你的程序打0分MyComplex z1, z2;cout "z1 + z2 = " z1 + z2 endl;cout "z1 - z2 + z1 = " z1 - z2 + z1 endl;cout "z1 * z2 - z1 = " z1 * z2 - z1 endl;cout "z1 - z2 + z1 = " z1 - z2 + z1 endl;cout "z2 - z1 - z1 = " z2 - z1 - z1 endl;cout "Finished";catch (exception e) { -- catch父类异常类型,也可以捕获子类异常cout e.what() endl; -- waht()函数将存放在异常对象中的信息取出来cout "Unexpected Error";-- GCC及VC编译器在调试模式下会暂停,便于查看运行结果#if ( defined(__DEBUG__) || defined(_DEBUG) )cin.ignore(numeric_limitsstreamsize::max(), '');cin.get();return 0;先作出圆心在原点,半径为的圆,然后作出角的终边,以这条终边与圆的交点为分点,将圆周等分,那么每个等分点对应的复数就是复数的次方根。
cout"z1-z2+z1="z1-z2+z1endl;两个复数的差依然是复数,它的实部是原来两个复数实部的差,它的虚部是原来两个虚部的差。
四元数偶积也不常用,但是它也会被提到,因为它和奇积的相似性。
它是纯对称的积;因此,它是完全可交换的。
根据FOIL规则,我们先计算两个数中第一个数字的相乘,将两式第一个数字做乘法也就是1乘以2,所以:return Complex(c1.real + c2.real, c1.imag + c2.imag);Complex operator *(const Complex c);1)如果计算时用户没有给表达式设定变量,系统将会自动将当前结果赋给ans变量return Plural(--before, --after);1.本次作业属于Online Judge题目,提交后由系统即时判分。