strengthen

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9836010.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。

当虚部等于零时,这个复数可以视为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。

复数域是实数域的代数闭包,也即任何复系数多项式在复数域中总有根。

复数是由意大利米兰学者卡当在十六世纪首次引入,

经过达朗贝尔、棣莫弗、欧拉、高斯等人的工作,此概念逐渐为数学家所接受。

用结构体来描述复数,复数由实部(real)和虚部(image)构成。

加法: (a+bi)+(c+di)=(a+c)+(b+d)i

减法: (a+bi)-(c+di)=(a-c)+(b-d)i

乘法:设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i

除法:满足(c+di)(x+yi)=(a+bi)的复数x+yi(x,y∈R)叫复数a+bi除以复数c+di的商。

          (a+bi)/(c+di)=(ac+bd)/(c2+d2) +((bc-ad)/(c2+d2))i

复数作为幂和对数的底数、指数、真数时,其运算规则可由欧拉公式e^iθ=cos θ+i sin θ(弧度制)推导而得

 1 /*复数结构*/
 2 struct Complex {
 3     //实部
 4     var real: Double    
 5     //虚部
 6     var img: Double  
 7     
 8     //将复数转换成字符串。
 9     var toString: String {
10         //判断虚部是否大于0
11         if img < 0
12         {
13             return "\(real) - \(-img)i"       
14         }
15         else if img > 0
16         {
17             return "\(real) + \(img)i"
18         }
19         else
20         {
21             return "\(real)"
22         }      
23     }
24     /*重载复数的四则运算符*/
25     //重载加法运算符:(a+bi)+(c+di)=(a+c)+(b+d)i
26     static func +(_ x: Complex,_ y: Complex) -> Complex {
27         return Complex(real: (x.real + y.real), img: (x.img + y.img))
28     }
29     //重载减法运算符: (a+bi)-(c+di)=(a-c)+(b-d)i
30     static func -(_ x: Complex,_ y: Complex) -> Complex {
31         return Complex(real: (x.real - y.real), img: (x.img - y.img))
32     }
33     //重载乘法运算符
34     //设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i
35     static func *(_ x: Complex,_ y: Complex) -> Complex {
36         return Complex(real: (x.real * y.real - x.img * y.img), img: (x.img * y.real + x.real * y.img))
37     }
38     //重载除法运算符
39     //满足(c+di)(x+yi)=(a+bi)的复数x+yi(x,y∈R)叫复数a+bi除以复数c+di的商。
40     //(a+bi)/(c+di)=(ac+bd)/(c2+d2) +((bc-ad)/(c2+d2))i
41     static func /(_ x: Complex,_ y: Complex) -> Complex {
42         var squares = pow(y.real,2) + pow(y.img,2)
43         return Complex(real: (x.real * y.real - x.img * y.img) / squares, img: (x.img * y.real - x.real * y.img) / squares)
44     }
45     //复数的模:将复数的实部与虚部的平方和的正的平方根的值称为该复数的模。
46     static func cbs(_ a: Complex) ->Double{
47         return sqrt(pow(a.real,2) + pow(a.img,2))
48     }
49 }

示例代码:

 1 var c1 = Complex(real: 4, img: -8)
 2 var c2 = Complex(real: 2, img: -2)
 3 
 4 var sum = c1 + c2
 5 print("\(sum.toString)")
 6 //Print 6.0 - 10.0i
 7 
 8 var subtract = c1 - c2
 9 print("\(subtract.toString)")
10 //Print 2.0 - 6.0i
11 
12 var product = c1 * c2
13 print("\(product.toString)")
14 //Print -8.0 - 24.0i
15 
16 var quotient = c1 / c2
17 print("\(quotient.toString)")
18 //Print -1.0 - 1.0i
19 
20 var mould = Complex.cbs(c1)
21 print("\(mould) ")
22 //Print 8.94427190999916

 

分类:

技术点:

相关文章:

猜你喜欢