作者candy88257 (阿泰斯)
看板MATLAB
標題[討論] 使用"數值方法"求解"複數方程式"?
時間Mon Jan 20 10:57:38 2014
如:
A=@(x1) (1+2i)*sin((3+4i)*x1);
fsolve(A,1)
ans =
0.3770 - 0.5027i
以上是用Matlab求解
我另外用Mathematica的內建數值方法指令FindRoot求解,解完全跟Matlab一樣
目前有學到牛頓法、二分法......等
但是都只會用在實數係數的方程式,請問複數係數的方程式要如何使用數值方法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.17.253
→ candy88257:另外問一下,牛頓法跟正割法會推薦正割法嗎? 01/20 11:06
→ candy88257:因為牛頓法要對方程式微分,有些方程式相當複雜,微分 01/20 11:06
→ candy88257:很耗時間。 01/20 11:07
→ candy88257:還有,上面那個方程式求初始值為100的時候,fsolve無解 01/20 11:42
→ candy88257:正割法卻求出有解,ans=35.8142 -47.7522i 01/20 11:44
→ candy88257:牛頓法求出來的解分正割法一樣 01/20 11:45
推 alamabarry:我想最大問題應該在於~複數沒有勘根定理~~ 01/20 18:19
→ alamabarry:除非你可以嚴格證明 或是去控制你的方程式變成實係數 01/20 18:20
→ alamabarry:否則就只能用絕對值最小值去解出"可能"解 01/20 18:20
→ alamabarry:如果你是實數方程解複數根~~那就muller's method試試 01/20 18:21
→ candy88257:感謝!!!我現在就是用絕對值取最小值,但是把最小值代回 01/20 20:16
→ candy88257:去取絕對值,會發現絕對值會離0很遠...,而且取特徵值 01/20 20:17
→ candy88257:也離0很遠...,雖然相對其它特徵值而言,是算非常接近 01/20 20:18
→ candy88257:0,如特徵值為:[1e10,1e8,1e5,1e2],最後一個就離0相對 01/20 20:18
→ candy88257:接近很多,不曉得這樣算會準確嗎? 01/20 20:19
→ vaakaa:解complex root的paper還蠻多的歐 有興趣可以google zanly 01/20 20:20
→ candy88257:感謝各位!!! 01/21 18:52