精华内容
下载资源
问答
  • 复数之外的数
    2022-03-05 17:04:40

    \section{基本介绍}

    要说复数是怎么产生的,可能很多人都会说,不就是 − 1 \sqrt{-1} 1 呗!但是,这仿佛又不合我们的直觉。如果存在一个数,它的平方却是一个负数,那它一定不是一般人可以理解的。复数方法直到欧拉时期才开始大放异彩,而之前,虽然人们屡屡遇到它,但却又避之不及——它违反了人们的直觉。

    在我心中,复数是数学从“可以理解”变到“难以理解”的开端。尽管一些比较难的奥赛题都是涉及数论和代数的,但它们都不违反直觉。
    我们高中就开始学习复数,但它的不可理解性甚至超过了大学的高等数学。复数很容易进行可视化——一个实轴和一个虚轴,但是我们未必能从直觉上去理解这件事情。

    后来,在阅读《Visual complex analysis》[1]和《Mathematics and its History》[2]时,对复数的起源有了一些自己的思考和感悟,于是打算写这么一个专题,介绍一下复数的起源。
    本文会从历史的角度,介绍复数的起源,从历史来剖析,可以更好地理解究竟什么是复数,以及复数应该怎么去应用。对于所有出现过的人物,我会注明其生平和国家,这样相信大家就能对复数的历史更有把握。由于古代科学全才太多,很多人都身兼数职,例如数学家、物理学家、天文学家,这里为了方便只标记为数学家。

    \section{二次方程、三次方程与解}
    如果你能明白负数是怎么产生的,或许就不难理解复数的产生。

    直觉上,自然界没有负数。要么,我们有一个苹果,要么有两个,就算没有,也是零个(值得一说的是,“0”的起源也是费了老一番功夫了)。而我们并不是很难理解负数,因为世界上存在减法,并且减法和加法都符合交换律,所以负数这种东西其实就是存在于算数中的一种工具,脱离了算术,它什么都不是——比如,“我有-1个苹果”,这没有意义对吧?而在一整个算术系统中,负数就具有了实际意义:我欠了别人一个苹果。

    阿尔·花拉子米(约780~约850,阿拉伯数学家)对于一元二次方程问题( x 2 + b x = c x^{2}+bx=c x2+bx=c)的解法是基于面积的,这种解法由于面积不会是负数,所以只会得到正根:

    \centerline{\includegraphics[width = 0.45\textwidth]{p1-1.png}}

    如上图:

    \begin{align}
    (x+0.5b){2}=c+0.25b{2}
    \end{align}

    而且, c + 0.25 b 2 c+0.25b^{2} c+0.25b2要大于0,否则就只有复数根了。在当时的阿拉伯数学界,人们连负数都不承认,更何况复数呢?

    笛卡尔(1596-1650,法国数学家)坐标系诞生以后,二次方程的求解问题在图示上可以理解为是一个曲线和横坐标x之间的交点。“虚数”这个名词就是笛卡尔起的,他不接受复根。

    我们把目光局限到16世纪,尽管这个时候还没有坐标系和解析几何出现,但我们仍然可以对方程进行一些基本研究。
    按照直觉理解,既然有很多情况下二次方程可能没有解,我们就没有必要去考虑什么复交点。面积法更是如此,对负数开方显得非常没有必要。

    三次方程的研究则不可避免的会使得复数开始进入人们的视野。三次方程和二次方程的一个区别在于,它永远有一个及以上的实根,但是有时候我们能没法使用代数方法计算出这个实根(在不使用复数的前提下),我们马上会解释这一点。

    三次方程 y 3 = y x + q y^{3}=yx+q y3=yx+q的卡尔达诺(1501-1576,意大利数学家)解为:
    \begin{align}
    y=\sqrt[3]{\frac{q}{2}+\sqrt{(\frac{q}{2}){2}-(\frac{p}{3}){3}}} +\sqrt[3]{\frac{q}{2}-\sqrt{(\frac{q}{2}){2}-(\frac{p}{3}){3}}}
    \end{align}

    ( q 2 ) 2 − ( p 3 ) 3 < 0 (\frac{q}{2})^{2}-(\frac{p}{3})^{3}<0 (2q)2(3p)3<0时,就会出现复数。但是,例如下面的方程:
    \begin{align}
    & x^{3}=15x+4 \
    & x=\sqrt[3]{2+11\sqrt{-1}} + \sqrt[3]{2-11\sqrt{-1}}
    \end{align}

    它总会在实轴上得到一个根,那么就奇了怪了,这个根是哪里来的?

    卡尔达诺提出应该去思考这种负数开平方的解的形式,但是也只是建议尝试表示一下而已,他认为这种东西其实用处不会很大(这充分说明了历史的局限性,即使是顶级的数学家也不能过于超前地认识到一些方法)。

    直到邦贝利(1526-1572,意大利数学家)认识到, 2 + 11 − 1 3 \sqrt[3]{2+11\sqrt{-1}} 32+111 2 − 11 − 1 3 \sqrt[3]{2-11\sqrt{-1}} 32111 可能分别具有 2 + n − 1 2+n\sqrt{-1} 2+n1 以及 2 − n − 1 2-n\sqrt{-1} 2n1 的形式,于是他进行了一系列的计算,发现正好是三次方的关系,即:
    \begin{align}
    & \sqrt[3]{2+11\sqrt{-1}} = 2 + \sqrt{-1} \
    & \sqrt[3]{2-11\sqrt{-1}} = 2 - \sqrt{-1}
    \end{align}

    所以这个三次方程的解就是:
    \begin{align}
    & x=\sqrt[3]{2+11\sqrt{-1}} + \sqrt[3]{2-11\sqrt{-1}} = 2+\sqrt{-1}+2-\sqrt{-1}=4
    \end{align}

    \section{沃利斯与复数的数轴表示}

    我们知道了复数的引入,但是如果它只能用来解方程,那就复数的发展就只能停留在高中水平——高考数学选择题的第一题——仅仅为了判断学生是否足够细致的一道题。

    尽管邦贝利成功使用复数来得到了三次方程的根,但是应该如何表示复数,却并不容易。

    沃利斯(1616-1703,英国数学家)在这方面做出了一点尝试。尽管他的方式不正确,但是我们按照他的思路,来分析一下复数根,例如方程:
    \begin{align}
    & x{2}+2bx+c{2}=0\ \ \ \ \ b,c>0 \
    & x=-b\pm \sqrt{b{2}-c{2}}
    \end{align}

    b > c b>c b>c时,沃利斯用这个图来进行表示:

    \centerline{\includegraphics[width = 0.45\textwidth]{p1-2.png}}

    但是当 b < c b<c b<c的时候,b太短,所以交点会偏离直线外(这个想法是多么的美妙!),但可惜他的偏离方式不是很正确。首先他把式子变为这样:
    \begin{align}
    & x=-b\pm i\sqrt{c{2}-b{2}}
    \end{align}

    然后图示就变为了:

    \centerline{\includegraphics[width = 0.45\textwidth]{p1-3.png}}

    但是可以看出来,当b=0时, ± i c \pm ic ±ic会在同一个位置,即 + i = − i +i=-i +i=i,这显然是不对的。但是在当时的那个年代,能有这种想法(即虚数会在数轴之外)已经很不容易了。
    在沃利斯的时代,人们连负数都持怀疑态度,比如 ( − 1 ) × ( − 1 ) (-1)\times (-1) (1)×(1)的意义,也是尚且不明确的,这也说明沃利斯的想法之超前了。

    \section{复数——二维数}
    即使到了18世纪,人们对于复数的观点都是如何利用它去推导实数的结论。人们会利用到这些结论,但如果有可能,人们会避开使用复数。

    但如果复数只是作为一个工具而存在的,那么也必然不会发展出那么多的理论。现在我们要明确的是,我们假设数不再是一维的,而是二维的: x = ( a , b ) x=(a,b) x=(a,b),其中,实数是一种特例: x R = ( a , 0 ) x_{R}=(a,0) xR=(a,0)
    函数值也不再只是一维的,而是二维的: f ( x ) = ( c , d ) f(x)=(c,d) f(x)=(c,d)

    对于结果为实值的函数,其实就是 f ( ( a , b ) ) = ( c , 0 ) f\big((a,b)\big)=(c,0) f((a,b))=(c,0),。在以前,我们会认为只存在 ( a , 0 ) (a,0) (a,0)这样的数(当然,这就是实数),而后来,我们开始逐渐接受 ( a , b )     b ≠ 0 (a,b)\ \ \ b\neq 0 (a,b)   b=0这样的数了。

    我们很难绘制 f ( ( a , b ) ) f\big((a,b)\big) f((a,b)),因为 ( a , b ) (a,b) (a,b)是二维的, f ( ( a , b ) ) f\big((a,b)\big) f((a,b))也是二维的,这就需要四维空间去表示。但我们可以思考,对于某个一元函数 f ( x ) f(x) f(x),它的输入是 ( a , b ) (a,b) (a,b),令 f ( ( a , b ) ) = ( c , 0 ) f\big((a,b)\big)=(c,0) f((a,b))=(c,0),例如:
    \begin{align}
    & f_{1}(x)=x^{2}+2x+2=0 \Longrightarrow (x+1)^{2}+1=0\
    & x_{1}=-1+i\ \ \ \ \ \ \ x_{2}=-1-i
    \end{align}

    我们令 x a = − 1 + a × i x_{a}=-1 + a\times i xa=1+a×i a a a一直从0变到20,得到 T ( a ) = f 1 ( x a ) T(a)=f_{1}(x_a) T(a)=f1(xa)为:

    \centerline{\includegraphics[width = 0.55\textwidth]{p1-4.png}}

    T ( a ) T(a) T(a)的输出都是实数,而且也是连续变化的,在 a = ± 1 a=\pm 1 a=±1时,得到方程的两个虚数根。

    当我们能够接受一维,我们就应该尝试去接受二维——复数就是存在于二维上的数 ( x + i y ) (x+iy) (x+iy),这就跟二维平面上的某个点 ( x , y ) (x,y) (x,y)很像。但注意,点是点,数是数,这两者还是需要区分的。我们应该认识到的是,复数就像实数一样,它是实实在在存在的,而不仅仅是为了计算而使用的某个工具。

    所以,既然数可以不止是一维的,那么——超复数,即三元复数、四元复数等更高维度的复数也会是存在的。
    超复数的发展与群论是密不可分的,只有在定义了一系列的运算规则以后,才可以使用它们来进行一些具体的操作,比如复数 ( a , b ) (a,b) (a,b) ( c , d ) (c,d) (c,d)乘除、加减的运算规则。

    \section{复数与欧拉公式}

    人们从很久之前就开始从事对角度的研究,也推导出了不少定理,例如 sin ⁡ 2 x = 2 sin ⁡ x cos ⁡ x \sin 2x=2\sin x\cos x sin2x=2sinxcosx(这些用纯几何方法都是可以得到的)。注意本节推导的欧拉公式只是直观上去理解,严谨的推导放在了后面一节。

    泰勒(1685-1731,英国数学家)在微积分的基础上推导出了泰勒级数,借助泰勒级数,可以得到:
    \begin{align}
    & e{x}=1+\frac{x}{1!}+\frac{x{2}}{2!}+…++\frac{x^{n}}{n!}+… \
    & \cos x = 1-\frac{x{2}}{2!}+\frac{x{4}}{4!}-\frac{x{6}}{6!}…+\frac{x{4n-4}}{(4n-4)!}-\frac{x^{4n-2}}{(4n-2)!}+… \
    & \sin x = x-\frac{x{3}}{3!}+\frac{x{5}}{5!}-\frac{x{7}}{7!}…+\frac{x{4n-3}}{(4n-3)!}-\frac{x^{4n-1}}{(4n-1)!}+…
    \end{align}

    x = i z x=iz x=iz代入,就能得到 e i z = cos ⁡ z + i sin ⁡ z e^{iz}=\cos z+i\sin z eiz=cosz+isinz

    当然也可以借助微积分方法:
    \begin{align}
    & let\ \ f(z)=\frac{\cos z+i\sin z}{e^{iz}}
    \end{align}

    分母不可能为0,所以定义成立。求得 f ′ ( z ) f'(z) f(z),发现其为0,因此 f ( z ) f(z) f(z)就是个常数函数。因此 f ( z ) = f ( 0 ) = 1 f(z)=f(0)=1 f(z)=f(0)=1,所以即可得到 e i z = cos ⁡ z + i sin ⁡ z e^{iz}=\cos z+i\sin z eiz=cosz+isinz

    这个 e i z = cos ⁡ z + i sin ⁡ z e^{iz}=\cos z+i\sin z eiz=cosz+isinz公式就是有名的欧拉(1707-1783)公式。

    大家可能会觉得欧拉(1707-1783,瑞士数学家)对复数比较了解,毕竟欧拉公式( e i x = cos ⁡ x + i sin ⁡ x e^{ix}=\cos x+i\sin x eix=cosx+isinx)可是被誉为最美的复数公式。但其实欧拉对于复数的运算也是有问题的,比如他认为 − 1 × − 4 = − 1 × − 4 = 2 \sqrt{-1}\times \sqrt{-4}=\sqrt{-1\times -4}=2 1 ×4 =1×4 =2,但其实应该是 i × 2 i = − 2 i\times 2i=-2 i×2i=2

    还好,在最初推导欧拉公式时,并没有使用上面的方法(或者说上面的方法在当时还不是很成熟,而且其实也会依赖于欧拉公式,所以并不算是证明,而仅仅只是验证),而是用到了棣莫弗(1667-1754,法国数学家)公式,我们下一节先讲解棣莫弗公式,然后再用其推导出欧拉公式。

    \section{棣莫弗公式}
    棣莫弗(1667-1754,法国数学家)公式对复数也做出了一定的贡献。

    我们先来看分角问题,这是韦达(1540-1603,法国数学家)首先注意:
    \begin{align}
    \cos 3x =&\cos(2x+x)=\cos 2x\cos x-\sin 2x\sin x \
    =& ( 2 \cos^{2} x-1)\cos x-2(1-\cos^{2}x)\cos x \
    =& 4 \cos^{3} x-3\cos x
    \end{align}

    而对于方程 x 3 + a x + b = 0 x^{3}+ax+b=0 x3+ax+b=0,令 x = k y x=ky x=ky,选取参数使得 k 3 a k = − 4 3 \frac{k^{3}}{ak}=\frac{-4}{3} akk3=34或者 k = − 4 a 3 k=\sqrt{\frac{-4a}{3}} k=34a ,就可以得到:
    \begin{align}
    4y^{3}-3y = c
    \end{align}

    如果令 y = c o s θ y=cos\theta y=cosθ,则 cos ⁡ 3 θ = c \cos 3\theta = c cos3θ=c,画出 3 θ 3\theta 3θ这个角,再三等分就能解出 y y y

    分角问题可以从几何上给出三次方程的解的直观表示,有趣的是这种方式好像看起来没有出现复数,其实不然——当 c > 1 c>1 c>1的时候其实就会需要复数来解释。

    韦达还有一个方程:
    \begin{align}
    & y=\sin n\theta\ \ \ \ \ x=\sin \theta \
    & y = nx - \frac{n(n{2}-1)}{3!}x{3}+\frac{n(n{2}-1)(n{2}-3{2})}{5!}x{5}+…
    \end{align}

    牛顿(1643-1727,英国数学家)断言它对所有的n都成立,注意这个方程有一个解,这个解出现在了棣莫弗(1667-1754,法国数学家)的文章中,可以表示为:
    \begin{align}
    x=\frac{\sqrt[n]{y+\sqrt{y{2}-1}}+\sqrt[n]{y-\sqrt{y{2}-1}}}{2}
    \end{align}

    其实如果我们把 x , y x,y x,y代入,就能得到关于角度的描述。这些内容的推导过程比较繁琐,所以在此忽略。
    我们可以看到他的公式这样表示的意义其实是为了避免出现复数的“直接表示”,即使用 ( sin ⁡ n θ ) 2 − 1 \sqrt{(\sin n\theta)^{2}-1} (sinnθ)21 来表示 i cos ⁡ n θ i\cos n\theta icosnθ

    我们最后来看一下现代棣莫弗公式:
    \begin{align}
    & (\cos z + i\sin z)^{n}=\cos nz + i\sin nz \
    & (\cos z - i\sin z)^{n}=\cos nz - i\sin nz \
    & \Longrightarrow \
    & \cos nz = \frac{(\cos z + i \sin z)^{n}+(\cos z - i \sin z)^{n}}{2} \
    & \sin nz = \frac{(\cos z + i \sin z)^{n}-(\cos z - i \sin z)^{n}}{2i}
    \end{align}

    \section{欧拉公式的证明}

    我们先给出一个定义:
    \begin{align}
    & e^{x}=\lim_{n\rightarrow \infty}(1+\frac{x}{n})^{n} \
    \end{align}

    以及一个结论,即牛顿-墨卡托级数: ln ⁡ ( 1 + x ) = x − x 2 2 + x 3 3 − x 4 4 + ⋯ \ln(1+x)=x-\frac{x^{2}}{2}+\frac{x^{3}}{3}-\frac{x^{4}}{4}+\cdots ln(1+x)=x2x2+3x34x4+。当 x → 0 x\rightarrow 0 x0时, ln ⁡ ( 1 + x ) ≈ x \ln(1+x)\approx x ln(1+x)x

    u + i v u+iv u+iv的极坐标表示为 r ( cos ⁡ θ + i sin ⁡ θ ) r(\cos\theta + i\sin \theta) r(cosθ+isinθ),其中 r = u 2 + v 2 ∈ R r=\sqrt{u^{2}+v^{2}}\in R r=u2+v2 R θ = arctan ⁡ ( v u ) \theta=\arctan(\frac{v}{u}) θ=arctan(uv)。棣莫弗公式就可以写为:
    \begin{align}
    (u+iv){n}=r{n}(\cos n\theta + i\sin n\theta)
    \end{align}

    从而有:
    \begin{align}
    & (1+\frac{a+bi}{n})^{n} = [(1+\frac{a}{n})+i\frac{b}{n}]^{n}
    \end{align}

    由于最后在证明到欧拉公式时需要让 a = 0 a=0 a=0,且 n → ∞ n\rightarrow \infty n。这里不妨设 n > ∣ a ∣ n>|a| n>a,由此我们用极坐标表示一下:
    \begin{align}
    & r_{n}=\Big(\sqrt{[(1+\frac{a}{n}){2}+(\frac{b}{n}){2}]}\Big)^{n}\
    & \theta_{n}=n\arctan\frac{\frac{b}{n}}{1+\frac{a}{n}}
    \end{align}

    我们先根据牛顿-墨卡托公式把极限写一下::
    \begin{align}
    \lim_{n\rightarrow \infty}(1+\frac{a+ib}{n})^{n} = e^{a+ib}
    \end{align}

    我们先求 r n r_{n} rn的极限(注意下面的推导使用了牛顿-墨卡托级数):
    \begin{align}
    \lim_{n\rightarrow \infty}\ln r_{n} &= \lim_{n\rightarrow \infty}[\frac{n}{2}\ln(1+\frac{2a}{n}+\frac{a{2}+b{2}}{n^{2}})] \
    &=\lim_{n\rightarrow \infty} [\frac{n}{2}(\frac{2a}{n}+\frac{a{2}+b{2}}{n^{2}})] = a\
    \Longrightarrow & \lim_{n\rightarrow \infty}r_{n} =\lim_{n\rightarrow \infty}e^{\ln r_{n}}=e^{a}
    \end{align}

    再求 θ n \theta_{n} θn的极限(注意, arctan ⁡ x \arctan x arctanx的泰勒展开式在 x → 0 x\rightarrow 0 x0的时候也约等于 x x x):
    \begin{align}
    \lim_{n\rightarrow \infty} \theta_{n} &= \lim_{n\rightarrow \infty} (n\arctan\frac{\frac{b}{n}}{1+\frac{a}{n}}) \
    &= \lim_{n\rightarrow \infty}(n\frac{\frac{b}{n}}{1+\frac{a}{n}}) = b
    \end{align}

    因此:
    \begin{align}
    & e{a+ib}=e{a}(\cos b + i\sin b) \
    & a=0 \ \ \Longrightarrow \ \ e^{ib}=\cos b + i\sin b
    \end{align}

    值得一提的是,复指数其实可以看做是一个螺旋线——当 b b b不断变化的时候, ( cos ⁡ b + i sin ⁡ b ) (\cos b + i\sin b) (cosb+isinb)就可以看做是在复平面不断地转圈。这样我们就可以推出另外一个结论——复对数有无穷多个。欧拉当时就发现了这个问题,并给了他的老师 约翰·伯努利先生。但是他老师对对数的理解并不是很到位,所以也产生了一些令人啼笑皆非的故事。

    \section{总结}

    至此,复数的起源就可以告一段落了。当然,复数演化到复曲线、复函数,虽然形式上更丰富,但都没有更难以理解——复数,也就是二维数;复函数,就是二维+二维,即四维空间里的函数。牢记这一点,复数也不会是特别难以理解的东西。

    更多相关内容
  • 通常的算术运算可以混合两种类型的阴离子乘法是根据 Caley-Dickson 的构造除了 order 属性之外,它还有另外两个 'left' 和 'right',它们包含相同的类型,但是顺序为 'order - 1' 的阴离子,如果订单是 1,则 left ...
  • Excel或C语言复数运算

    2022-04-23 10:57:12
    内容包括电路复数应用场景,基本性质运算、二元运算、三角函数运算,C语言复数运算示例。

    内容包括电路复数应用场景,基本性质运算、二元运算、三角函数运算,C语言复数运算示例。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易。

    目录:

    一、简介

    二、复数基本性质

    三、复数二元运算

    四、复数三角函数运算

    五、C语言复数运算

    ------------------------------------------------------------------------------------------------------

    一、简介

    在电路设计中我们会遇到一些诸如交流信号过电容、电感,阻抗计算等情况,可以借助Excel中复数计算函数。

    ------------------------------------------------------------------------------------------------------

    二、复数基本性质

    =COMPLEX(-0.5,0.87,"i")创建复数-0.5+0.87i。此处的i在电子中常用作j,可用=COMPLEX(-0.5,0.87,"j")。

    =IMAGINARY(A2)求出复数的虚部,即虚数i前面的系数。

    =IMREAL(A2)求出复数的实部,即实数部分。

    =IMABS(A2)求出模,即复数的绝对值。注意:模由公式√(x²+y²)得到,其中x实部,y虚部。

    =IMARGUMENT(A2)求出复数的辐角,注意是弧度值。

    =DEGREES(IMARGUMENT(A2))将弧度转换成角度。

    =IMCONJUGATE(A2)求出共轭复数。

    ------------------------------------------------------------------------------------------------------

    三、复数二元运算

    注:对包含公式的单元格引用若报错,参见“Excel高级使用技巧汇总18、绝对引用与相对引用

    =IMSUM(A2,B2)得到复数的和。

    注:两个复数虚数字母风格的书写要一致。

    例如:(1+2i) +(3-4j) 在Excel中是不规范的,计算不出来结果。

    =IMSUB(A2,B2)求出复数的差。

    =IMPRODUCT(A2,B2)求出复数的乘积。

    注:IMPRODUCT支持多个复数之间相乘(最多支持255个)

    =IMDIV(A2,B2)求出两个复数之间的商。

    =IMPOWER(A2,1)求出复数的整数幂。

    注意,后面的参数可以是复数,即求出复数的倒数

    =IMEXP(A2)求出复数的指数(e为底)

    =IMLN(A2)求出复数的自然对数。

    类似地,可以用对数函数公式

    =IMLOG10(A2)

    =IMLOG2(A2)

    分别求出10为底的对数,2为底的对数。

    =IMSQRT(A2)求出复数的平方根。

    其实,也可以用Excel公式=IMPOWER(A2,0.5)得到同样的计算结果,换句话说Excel的IMPOWER公式,也支持计算复数的小数形式的幂。

    ------------------------------------------------------------------------------------------------------

    四、复数三角函数

    =IMSIN(A2)求出复数的正弦值。

    =IMCOS(A2)求出复数的余弦值。

    如果需要正切(正弦函数除以余弦函数)、余切(正切函数的倒数)

    另外,像双曲函数、正割、余割函数也可以求解。比较遗憾的是Excel不支持复数求反三角函数值(比如arctan)。

    ------------------------------------------------------------------------------------------------------

    五、C语言复数运算

    #include "stdio.h"

    #include "complex.h"  //加入此头文件需要C99模式支持,详见“Keil编译软件的使用汇总十六、支持C99模式

    int main(void)

    {

       complex double a = 1.0 + 2.0*I, b = 3.0 + 4.0*I; //a = 1 + 2i, b = 3 + 4i

       complex double s_1 = a + b; //加

       complex double s_2 = a - b; //减

       complex double s_3 = a * b; //乘

       complex double s_4 = a / b; //除

       printf("s_1的实部为%f, 虚部为%f, 模为%f\n", creal(s_1), cimag(s_1), cabs(s_1));

       printf("s_2的实部为%f, 虚部为%f, 模为%f\n", creal(s_2), cimag(s_2), cabs(s_2));

       printf("s_3的实部为%f, 虚部为%f, 模为%f\n", creal(s_3), cimag(s_3), cabs(s_3));

       printf("s_4的实部为%f, 虚部为%f, 模为%f\n", creal(s_4), cimag(s_4), cabs(s_4));

    }

    complex.h中所包含的常用函数除了基本的加减乘除之外,complex.h中还包含以下函数:

    复数的实部creal()

    复数的虚部cimag()

    模cabs()

    相位carg()

    指数cexp()

    自然对数clog()

    幂cpow()

    平方根csqrt()

    复共轭cong()

    正弦csin()

    余弦ccos()

    正切ctan()

    反正弦casin()

    反余弦cacos()

    反正切catan()

    双曲正弦csinh()

    双曲余弦ccosh()

    双曲正切ctanh()

    反双曲正弦casinh()

    反双曲余弦cacosh()

    反双曲正切catanh()

    说明:以上函数默认为双精度版本,在函数名后加f(即float)表示单精度版本,加l(即long)表示长双精度版本。

    ------------------------------------------------------------------------------------------------------

    展开全文
  • 除了使用正常数字或实数之外,还引入了复数,以便使用负数的平方根,√来解决复杂方程式。1。在电气工程中,这种类型的数字称为“虚数”,为了区分虚数和实数,字母“j”已知通常在电气工程中使用j-operator。因此,...

    电气工程中使用的数学将电阻,电流或直流电压加在一起使用所谓的“实数”,用作整数或分数。

    但实数不是我们需要使用的那种数字,特别是在处理频率相关的正弦源和矢量时。除了使用正常数字或实数之外,还引入了复数,以便使用负数的平方根,√来解决复杂方程式。1。

    在电气工程中,这种类型的数字称为“虚数”,为了区分虚数和实数,字母“j”已知通常在电气工程中使用j-operator。因此,字母“j”放在实数前面以表示其虚数操作。

    虚数的例子是:j3,j12,j100等。然后复数由两个不同但非常相关的部分组成,“实数”加上“虚数”“。

    复数表示二维复数或s平面中以两个不同轴为参照的点。水平轴称为“实轴”,而垂直轴称为“虚轴”。复数的实部和虚部分别缩写为Re(z)和Im(z)。

    由实数(有效成分)和虚数(无功成分)组成的复数)数字可以加上,减去和使用,与用基本代数分析直流电路完全相同。

    数学中用于加减虚数的规则和定律与对于实数,j2+j4=j6等。唯一的区别在于乘法,因为两个虚数相乘在一起变为负实数。实数也可以被认为是一个复数,但假想零部分标记为j0。

    j-operator的值恰好等于√-1,因此“j”,(jxj)的连续乘法将导致j具有以下值为-1,-j和+1。由于j运算符通常用于指示向量的逆时针旋转,因此每个连续的乘法或幂“j”,j2,j3等将迫使矢量沿逆时针方向旋转固定角度90°o,如下所示。同样,如果向量的乘法产生-j运算符,则相移将为-90o,即顺时针旋转。

    矢量旋转的j运算符

    因此,通过将虚数乘以j2将向量旋转180o逆时针旋转,乘以j3旋转270o并通过j4将其旋转360o或回到原来的位置。乘以j10或j30将导致向量逆时针旋转适当的量。在每次连续旋转中,矢量的大小始终保持不变。

    在电气工程中,有不同的方式以图形或数学方式表示复数。使用余弦和正弦规则的一种方法称为笛卡尔或矩形形式。

    使用矩形形式的复数

    在关于Phasors的最后一个教程中,我们看到一个复数由一个实部和一个虚部表示,它采用通用形式:

    其中:

    Z-是代表向量的复数

    x-是实部或活动部件

    y-是虚部或反应部件

    j-由√-1

    定义在矩形形式中,复数可以表示为二维点平面称为复合或s-plane。因此,例如,Z=6+j4表示单个点,其坐标在水平实轴上表示6,在垂直虚轴上表示4,如图所示。

    使用复数复杂或s面

    但是,由于矩形形式的复数的实部和虚部都可以是正数或负数,因此实轴和虚轴都必须同时扩展。正面和负面的方向。然后产生一个复杂的平面,有四个象限,称为ArgandDiagram,如下所示。

    四象限Argand图

    在Argand图上,横轴表示垂直虚轴右侧的所有正实数,以及垂直虚轴左侧的所有负实数。所有正虚数都表示在水平轴上方,而所有负虚数都低于水平实轴。然后生成一个二维复平面,其中有四个不同的象限,标记为QI,QII,QIII和QIV。

    上面的Argand图也可用于表示旋转相量作为复平面中的一个点,其半径由相量的大小给出,每个将围绕它绘制一个完整的圆2π/ω秒。

    然后我们可以进一步扩展这个想法,以显示旋转90°o的极坐标和矩形形式的复数的定义。

    复数也可以有“零”实部或虚部等as:Z=6+j0或Z=0+j4。在这种情况下,点直接绘制在实轴或虚轴上。此外,复数的角度可以使用简单的三角法计算,以计算直角三角形的角度,或者从正实轴开始沿着Argand图逆时针测量。

    然后角度0和90o将位于第一象限(I),角度(θ)介于90和180之间o在第二象限(II)。第三象限(III)包括180到270o之间的角度,而完成整个圆圈的第四个和最后一个象限(IV)包括270和360之间的角度o等。在所有四个象限中,相关角度可以从以下位置找到:

    tan-1(虚构成分÷实部成分)

    复数的加法和减法

    复数的加或减可以数学方式或以矩形形式进行图形化。另外,实际部分首先加在一起形成和的实部,然后虚部形成和的虚部,这个过程如下使用两个复数A和B作为示例。

    复杂的加法和减法

    复数示例No1

    两个向量分别定义为A=4+j1和B=2+j3。确定矩形(a+jb)形式的两个向量的和与差,并以图形方式确定为Argand图。

    数学加法和减法

    加成

    减法

    图形添加和减法

    复数的乘法和除法

    矩形形式中复数的乘法或多或少跟随与正规代数相同的规则以及运算符的连续乘法的一些附加规则,其中:j2=-1。因此,例如,将A=4+j1和B=2+j3的两个向量相乘,将得到以下结果。

    数学上,矩形复数的划分有点难以执行,因为它需要使用分母共轭函数将等式的分母转换为实数。这被称为“合理化”。然后,复数的划分最好使用“PolarForm”进行,我们将在后面介绍。但是,作为矩形形式的示例,我们可以找到vectorA的值除以vectorB。

    复共轭

    复共轭,或简单地共轭复数是通过反转代数符号找到的复数虚数仅在保持实数的代数符号相同的同时识别z的复共轭使用符号z。例如,z=6+j4的共轭是z=6-j4,同样z=6-的共轭j4是z=6+j4。

    复共轭的Argand图上的点在水平位置上具有相同的水平位置。实轴作为原始复数,但垂直位置相反。因此,复共轭可以被认为是复数的反映。以下示例显示复数,6+j4及其在复平面中的共轭。

    共轭复数

    如上所述,复数与其复共轭的总和将始终为实数。然后,添加复数及其共轭仅将结果作为实数或有效分量,而它们的减法仅给出虚数或无功分量。复数的共轭是电气工程中用于确定使用矩形形式的交流电路的视在功率的重要元素。

    使用极坐标形式的复数

    与矩形形式不同在复平面中绘制点,复数的极坐标是根据其大小和角度编写的。因此,极坐标形式向量表示为:Z=A∠±θ,其中:Z是极坐标形式的复数,A是矢量的大小或模数,θ是A的角度或参数,可以是正数也可以是负数。该点的大小和角度仍然与上面的矩形形式相同,这次以极坐标形式表示点的位置以“三角形”表示,如下所示。

    极性形式表示复数

    由于点的极坐标表示基于三角形,我们可以使用三角形的简单几何,尤其是三角形和毕达哥拉斯在三角形上的定理,以找出复数的大小和角度。正如我们从学校记得的那样,三角学处理边的关系和三角形的角度,因此我们可以将边之间的关系描述为:

    再次使用三角法,给出A的角度θ如下。

    然后以Polar形式显示A的长度及其角度表示复数而不是点。同样以极性形式,复数的共轭具有相同的大小或模量,它是角度变化的符号,因此例如6∠30o将6∠-30o。

    在矩形形式和极坐标形式之间转换

    在矩形形式中,我们可以根据其直角坐标表示矢量,水平轴是其实轴,垂直轴是其虚轴或j分量。在极坐标形式中,这些实轴和虚轴简单地用“A∠θ”表示。然后使用上面的例子,矩形和极形之间的关系可以定义为。

    将极性形式转换为矩形,(P→R)

    我们还可以将矩形转换回极性形式,如下所示。

    将矩形转换为极坐标形式,(R→P)

    极地形式乘法和除法

    矩形如上所述,形式最适合添加和减去复数,但极性形式通常更适合乘法和除法。为了将极坐标形式的两个向量相乘,我们必须首先将两个模数或大小相乘,然后将它们的角度加在一起。

    极坐标中的乘法

    将6∠30o和8∠-45o相乘给我们。

    极地分裂

    同样,分开两个极性形式的矢量,我们必须将两个模数分开然后减去它们的角度,如图所示。

    幸运的是,今天的现代科学计算器内置了数学函数(检查你的书),允许轻松转换矩形到极性形式(R→P),然后从极性变为矩形,(R→P)。

    使用指数形式的复数

    到目前为止,我们已经考虑了矩形形式中的复数,(a+jb)和极地形式,(A∠±θ)。但是还有第三种表示复数的方法,该方法类似于对应于正弦曲线的长度(幅度)和相位角的极坐标形式,但使用自然对数的基数,e=2.718281..找到复数的值。第三种方法称为指数形式。

    指数形式使用正弦的三角函数(sin)和直角三角形的余弦(cos)值,将复指数定义为复平面中的旋转点。寻找点位置的指数形式基于Euler'sIdentity,以瑞士数学家LeonhardEuler命名,并给出:

    然后欧拉的身份可以用复平面上的以下旋转相量图表示。

    我们可以看到Euler的身份与上面的极性形式非常相似,并且它向我们显示了一个数字,例如Aejθ幅度为1的>也是一个复数。我们不仅可以将指数形式的复数转换为极性形式,例如:2ej30=2∠30,10j120=10∠120或-6j90=-6∠90,但欧拉的身份也为我们提供了一种将复数从指数形式转换为矩形形式的方法。然后,在定义复数时,指数,极坐标和矩形之间的关系给出为。

    复数形式

    相量符号

    到目前为止,我们已经看到了表示旋转的不同方式矢量或固定矢量使用复数来定义复杂平面上的点。相量符号是构造具有给定正弦波形的幅度和相位角的单个复数的过程。

    然后相量符号或相量变换,因为它有时被称为,传递真实部分正弦函数:A(t)=Amcos(ωt±Φ)从时域到复数域,也被称为频域。例如:

    请注意√2将最大振幅转换为a

    复数汇总

    然后总结本教程关于复杂数字以及在电气工程中使用复数。

    复数由两个不同的数字组成,一个实数加上一个虚数。

    虚数通过使用j与实数区分开来-operator。

    前面带有字母“j”的数字将其标识为复合体中的虚数平面。

    根据定义,j-operatorj≡√-1

    可以添加,减去,乘以虚数

    “j”乘以“j“给出j2=-1

    在矩形表格中,复数表示为复杂平面上的空间点。

    在PolarForm中,复数由一条线表示,其长度为幅度和相位角。/li>

    在指数形式中,复数由一条线和相应的角度表示,该角度使用自然对数的底数。

    复数可以用以下三种方式之一表示:

    Z=x+jy»矩形表格

    Z=A∠Φ»极地形式

    Z=AjΦ»指数形式

    Euler的身份可用于转换复杂从指数形式到矩形的数字。

    在前面的教程中,我们已经看到我们可以使用相量来表示正弦波形,并且它们的幅度和相位角可以写在形式复杂的数字。我们还看到复数可以以矩形,极坐标或指数形式呈现,每个复数代数形式之间的转换包括加法,减法,乘法和除法。

    在接下来的几个与AC串联电路中的相量关系相关的教程中,我们将研究一些常见无源电路元件的阻抗,并绘制流过元件的电流和施加在其上的电压的相量图。交流阻力。

    展开全文
  • 首先,我们知道复数表示论的四个象限,第一象限是正正象限,第二至第四象限都有虚轴;再看在三维空间上建立一个八个相空间,其中也仅有一个相空间是正正正的相空间。其次,我们看一个问题,台湾岛的海岸线有多长?...
  • 除此之外,Python 的整型还支持 None 值(空值),例如如下代码:a = None print(a) #什么都不输出 Python 的整型数值有 4 种表示形式:十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时...

    实际开发中,我们经常需要使用数字记录游戏中用户的得分、游戏中角色的生命值、伤害值等信息,Python 语言提供了数值类型用于保存这些数值。

    需要注意的是,Python 中这些数值类型都是不可改变的,也就是说,如果我们要修改数字类型变量的值,那么其底层实现的过程是,先将新值存放到内存中,然后修改变量让其指向新的内存地址,换句话说,Python 中修改数值类型变量的值,其实只是修改变量名所表示的内存空间。

    数值类型只是一个泛泛的统称,Python 中的数值类型主要包括整形、浮点型和复数类型。

    Python整型

    整形专门用来表示整数,即没有小数部分的数。在 Python 中,整数包括正整数、0 和负整数。

    和其他强类型语言不同,它们会提供多种整形类型,开发者要根据数值的大小,分别用不同的整形类型存储,以 C 语言为例,根据数值的大小,开发者要合理选择 short、int、long 整形类型存储,大大增加了开发难度。

    Python 则不同,它的整型支持存储各种整数值,无论多大或者多小,Python 都能轻松处理(当所用数值超过计算机自身的计算功能时,Python 会自动转用高精度计算)。

    例如如下代码:#定义变量a,赋值为56

    a = 56

    print(a)

    #为a赋值一个大整数

    a = 9999999999999999999999

    print(a)

    #type()函数用于返回变量的类型

    print(type (a))

    对于没有编程基础的读者, 同样可以在交互式解释器中逐行“试验”上面程序来观看运行效果。由于篇幅限制,本教程后面的程序不再详细列出在交互式解释器中逐行“试验”的过程。

    上面程序中,将 9999999999999999999999 大整数赋值给变量 a,Python 也不会发生溢出等问题,程序运行一样正常,这足以证明 Python 的强大。

    使用 Python 3.x 运行上面程序,可以看到如下输出结果:56

    9999999999999999999999

    从上面的输出结果可以看出,此时 a 依然是 int 类型。

    但如果用 Python 2.x 运行上面程序,由于输入的数值比较大,Python 会自动在其后面加上字母 L(或小写字母 l),如下输出结果:

    56

    9999999999999999999999L

    对比两种输出结果,不难发现:不管是 Python 3.x 还是 Python 2.x,Python 完全可以正常处理很大的整数,只是 Python 2.x 底层会将大整数当成 long 类型处理,但开发者通常不需要理会这种细节。

    除此之外,Python 的整型还支持 None 值(空值),例如如下代码:a = None

    print(a) #什么都不输出

    Python 的整型数值有 4 种表示形式:十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时,不能以 0(零)作为十进制数的开头(数值是 0 除外)。二进制形式:由 0 和 1 组成,以 0b 或 0B 开头。例如,101 对应十进制数是 5;八进制形式:八进制整数由 0~7 组成,以 0o 或 0O 开头(第一个字母是零,第二个字母是大写或小写的 O)。需要注意的是,在 Python 2.x 中,八进制数值还可以直接以 0(零)开头。十六进制形式:由 0~9 以及 A~F(或 a~f)组成,以 0x 或 0X 开头,

    下面代码片段使用了其他进制形式的数:#以0x或0X开头的整型数值是十六进制形式的整数

    hex_value1 = 0x13

    hex_value2 = 0xaF

    print("hexValue1 的值为:",hex_value1)

    print("hexValue2 的值为:",hex_value2)

    #以0b或0B开头的整型数值是二进制形式的整数

    bin_val = 0b111

    print('bin_val的值为:',bin_val)

    bin_val = 0B101

    print('bin_val的值为:',bin_val)

    #以0o或0O开头的整型数值是八进制形式的整数

    oct_val = 0o54

    print('oct_val 的值为:',oct_val)

    oct_val = 0O17

    print('oct_val 的值为:',oct_val)

    为了提高数值(包括浮点型)的可读性,Python 3.x 允许为数值(包括浮点型)增加下画线作为分隔符。这些下画线并不会影响数值本身。例如如下代码:#在数值中使用下画线

    one_million = 1000000

    print(one_million)

    price = 234_234_234 #price 实际的值为234234234

    android = 12341234 #android 实际的值为12341234

    Python浮点型

    浮点型数值用于保存带小数点的数值,Python 的浮点数有两种表示形式:十进制形式:这种形式就是平常简单的浮点数,例如 5.12、512.0、0.512。浮点数必须包含一个小数点,否则会被当成整数类型处理。科学计数形式:例如 5.12e2(即 5.12×102)、5.12E2(也是 5.12 ×102)。

    必须指出的是,只有浮点型数值才可以使用科学计数形式表示。例如 51200 是一个整型值,但 512E2 则是浮点型值。

    下面程序示范了上面介绍的关于浮点数的各个知识点:af1 = 5.2345556

    #输出af1的值

    print("af1的值为:",af1)

    af2 = 25.2345

    print("af2的类型为:",type(af2))

    f1=5.12e2

    print("f1的值为:",f1)

    f2 = 5e3

    print("f2的值为:",f2)

    print("f2的类型为:",type(f2))#看到类型为float

    通过最后一行粗体字代码可以看出,虽然 5e3 的值是 5000,但它依然是浮点型值,而不是整型值,因为 Python 会自动将该数值变为 5000.0。

    注意,使用浮点数进行计算时,可能会出现小数位数不确定的情况,比如说,计算 0.1+0.2,本来应该得到 0.3,但经过测试你会发现,Python解释器的运行结果为 0.30000000000000004。几乎所有编程语言都存在这个问题,这与浮点数在底层的存储方式有关系,初学者不必深究。

    Python复数

    Python 甚至可以支持复数,复数的虚部用 j 或 J 来表示。

    如果读者对虚数虚部感到困惑,请直接跳过本节,大部分编程并不会用到复数这么“高级”的数学知识。

    如果需要在程序中对复数进行计算,可导入 Python 的 cmath 模块(c 代表 complex),在该模块下包含了各种支持复数运算的函数。

    模块就是一个 Python 程序,Python 正是通过模块提高了自身的可扩展性的;Python 本身内置了大量模块,此外还有大量第三方模块,导入这些模块即可直接使用这些程序中定义的函数。

    下面程序示范了复数的用法:ac1 = 3 + 0.2j

    print (ac1)

    print(type(ac1)) #输出复数类型

    ac2 = 4 - 0.1j

    print(ac2)

    #复数运行

    print(ac1 + ac2) #输出(7+0.1j)

    #导入cmath 模块

    import cmath

    #sqrt()是cmath 模块下的商数,用于计算平方根

    ac3 = cmath.sqrt(-1)

    print (ac3) #输出1j

    展开全文
  • 一、概述Python中的 数值类型(Numeric Types)共有5种:布尔型(bool)、整型(int)、长整型(long)、浮点型(float)和复数(complex)。数值类型支持的主要操作如下:操作说明boolintlongfloatcomplexx ** y指数运算√√√...
  • 用java写一个复数类Complex

    千次阅读 2021-03-05 23:04:13
    由于java库中没有提供复数的操作,应同学的需求,写了一个复数的类。有两个构造方法不带参数和带参数的,不带参数时默认实部虚部都为0。还有这些基本的方法,看名字就知道了。public double getReal(){ return this....
  • 此外,除了自旋1扇区中通常的无质量极点之外,还出现了一个巨大的极点,当按一圈级计算辐射校正时,该极点变得复杂。 该虚部定义了质量模的有限衰减宽度。 为了检查一致性,我们还使用电子-正电子弹性散射得出衰减...
  • 元音字母和大多数除s,z,x,sh,ch之外的辅音字母(或字母组合)直接加-s,清辅音后的s读作/s/ ,元音和浊辅音后的s读作/z/。如:bag-bags,biscuit-biscuits,egg-eggs. 当单数名词结尾为se,ze,ge,ce时(其词尾辅音为...
  • C语言实现复数运算

    万次阅读 多人点赞 2019-10-10 19:36:18
    C99标准中已经引入了复数类型,使用时需要包含头文件complex.h。但Visual C++ 6.0完全不支持C99标准,推荐使用gcc编译器对.c文件进行编译执行。
  • 除此之外,Python 的整型还支持 None 值(空值),例如如下代码: a = None print(a) #什么都不输出 Python 的整型数值有 4 种表示形式: 十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时...
  • python3中怎样实现对一个复数取实部 比如: a = 3+4j print(a.real) (人性设计啊) python numpy 求矩阵有多少列 想知道矩阵A的行数和列用np.size()函数 np.size(A,0)为矩阵A的行数 np.size(A,1)为矩阵A的列 ...
  • 【C++】实现复数类的重载

    千次阅读 2018-10-22 00:09:05
    复数类的功能及要求 复数对于从小学习数学的我们并不陌生,其操作性相对比较简单。复数类主要考察的是我们对运算符重载的熟练程度,主要有四则运算的+、-、×、/,以及+=、-=、&gt;、&lt;、==、!=前置++,...
  • 除此之外,Python 的整型还支持 None 值(空值),例如如下代码: a = None print(a) #什么都不输出 Python 的整型数值有 4 种表示形式: 十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时...
  • 高中时候都学过复数复数表示为a+bi,其中a为实部,b为虚部,i为虚数单位,i^2= -1,然后复数可以用x轴代表实数部,y轴代表虚部的复平面坐标系来表示,最后就是学各种复数运算。 但是什么是虚数?为什么虚数i^2= -1...
  • 在理解复数和虚数之前我们先看如何表示一个笛卡尔积坐标系下过原点的向量,如下图一所示 图一 向量之间还可以通过加法来合成,如下图二所示 图二 除此之外向量之间还有点乘和叉乘,但唯独没有向量乘法,即:...
  • 复数类型 除了整型和浮点型之外,Go 语言还支持复数类型,与复数相对,我们可以把整型和浮点型这种日常比较常见的数字称为实数,复数是实数的延伸,可以通过两个实数(在计算机中用浮点数表示)构成,一个表示实部...
  • 我们考虑将重子手性微扰理论的单核部分扩展到低能区域之外。... 这就要求引入复数值的重新归一化的耦合常数,该常数可以从实验数据中提取,也可以使用固定在阈值区域的耦合常数的归一化组演化来计算。
  • 除此之外,Python 的整型还支持 None 值(空值),例如如下代码: a = None print(a) #什么都不输出 Python 的整型数值有 4 种表示形式: 十进制形式:最普通的整数就是十进制形式的整数,在使用十进制...
  • 本章开始,开始详细讲解实数和复数矩阵的转置、复制、行列式、代数余子式、逆等运算,并给出函数和测试demo的C代码,以及与matlab计算的结果; 并且,本章出现了我在编写函数、后期与matlab联调跑数据时候出现...
  • 设其输入复数信号为Idata和Qdata,其输出信号为也为复数: 默认SEL­­_SIDEBAND=0 OUT_I=Idatacos(wn+c)-Qdatasin(wn+c)............OUT_Q=Idatasin(wn+c)+Qdataos(wn+c) 关于图中SEL­­_SIDEBAND的选择经过我...
  • JAVA类和对象求复数的加减乘除 题目描述 定义一个复数类Complex,重载运算符+,-,*,/,使之能用于复数的加减乘除。 运算符重载函数作为Complex类的成员函数。编程分别求两个复数的和、差、积、商。 输入 输入有两行,...
  • 第一步:写出防卫式的声明 #ifndef _COMPLEX_ // _COMPLEX_是名称,自行定义 #define _COMPLEX_ ...第三步:考虑复数需要的数据 #ifndef _COMPLEX_ #define _COMPLEX_ class complex { //数据要放在private下
  • 复数的物理意义

    千次阅读 2016-02-13 10:31:09
    复数不仅有意义,而且可以用图示来优雅地解释。 1、实函数与数轴变换 大家都认识,对于这样的初等函数,我们从小就学会使用直角坐标系来刻画它们: 它们的特点都大同小异:把实数轴对应到实数轴。然而,既然是...
  • 最近写计算程序经常要用到复数运算,以前都是用 gsl 库中对复数运算的支持。这两天看了看C99 标准,发现C99 中对复数运算的支持还是蛮给力的,这里做个总结。C99 中引入了两个关键字 _Complex和 _Imaginary,并且...
  • C++复数运算的运算符重载

    千次阅读 2015-07-19 09:07:22
    C++提供了运算符重载,极大地方便了自定义类型之间的运算, 本文就最简单的复数运算实现让初学者体会运算符重载的作用以及运算符重载的原理。
  • 使用C#版本GDAL读取复数图像

    千次阅读 2014-02-18 20:52:38
    GDAL的C#版本虽然在很多算法接口没有导出,但是在读写数据中...但是对于复数类型就有点复杂了。下面就针对GDAL如何来读取复数数据来进行一个简单的说明。 我们知道,在使用GDAL读取数据的时候使用的是ReadRaster这个函

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,018
精华内容 6,807
关键字:

复数之外的数