Re: c的複數要怎麼寫?
這倒是讓我想起一個問題
如果今天我必須在一個沒有complex arithmetics的環境下自己開發相關運算
例如老的C,或是VB6
那我要開發出哪些operation才算把complex arithmetic做完整?
(i)算數加/減
這很簡單
(ii)算術乘
(a + bi) = (p + qi)(m + ni) , a = p*m - q*n , b = p*n + q*m (1)
(iii)norm(絕對值)
|a + bi| = sqrt(a^2 + b^2) (2)
(iv)轉極座標式
for (a + bi)
(1) let r = |a + bi|
(2) let a' = a/r , b' = b/r
(3) let θ = arctan(b'/a') [主輻角]
then (a + bi) = <r, θ> (3)
(v)乘法律
<r, θ> * <s, φ> = r (cosθ+isinθ) * s(cosφ+isinφ) (4)
= (r*s) (cos(θ+φ)+isin(θ+φ))
<r, θ> / <s, φ> = r (cosθ+isinθ) / s(cosφ+isinφ) (5)
= (r/s) (cos(θ-φ)+isin(θ-φ))
(vi)算術除
利用 (5) 式。
(vii)De Moivre's Theorem
<r, θ> ^ k = (r (cosθ+isinθ))^ k (6)
= (r^k) (cos(kθ)+isin(kθ))
以上有 k in N 的限制,也就是說只能算自然數次方。
避開(6)的限制:
<r, θ> ^ (m/n) = ((r (cosθ+isinθ))^ m) / (7)
((r (cosθ+isinθ))^ n)
= (r^(m/n))(cos((m/n)θ)+isin((m/n)θ))
這樣可以算所有的有理數次方,包括 n 次方根。
(viii)指數律
利用(6)式,但限於正整數
(ix)n次方根
利用(7)式
這樣算做完了嗎?
[ 在fortran裡面還可以算(a, b)**(c, d)(複數的複數次方)
多麼簡單,只要一行
可是我根本不知道那要怎麼自己implement…
那可以忽略嗎?就一般的複數運算來說?]
--
蒙帝派松正體中文計畫 (4/23) - 如何隱身 - SPAM - 英國殺人笑話
http://www.wretch.cc/blog/journeyman&article_id=14377810
▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
■法外科學暨工程顧問公司■ http://www.wretch.cc/blog/journeyman/
▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆
--
┌─────◆KKCITY◆─────┐ ◢ ╱ 想要成立班系社團站台嗎?
│ bbs.kkcity.com.tw │ █▉ ─ KKCity即日起開放BBS站申請囉!
└──《From:59.115.196.71 》──┘ ◥ ╲ 免程式技術、硬體成本的選擇!!
--
推
07/14 19:59, , 1F
07/14 19:59, 1F
→
07/14 23:22, , 2F
07/14 23:22, 2F
→
07/14 23:26, , 3F
07/14 23:26, 3F
討論串 (同標題文章)