[爆卦]matlab複數是什麼?優點缺點精華區懶人包

為什麼這篇matlab複數鄉民發文收入到精華區:因為在matlab複數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者rooster1125 (rooster)看板MATLAB標題[問題]顯示複數數值的問題時間Tu...


學校數值方法要我們用Muller法求(x-(3+2i))*(x-(3-2i))*(x+2)*(x-5)=0的根

以下是我的程式碼

clear
fprintf('Solve (x-(3+2i))*(x-(3-2i))*(x+2)*(x-5)=0 by Muller''s method\n')
fprintf('==================================================\n')
syms x
f=(x-(3+2i))*(x-(3-2i))*(x+2)*(x-5);
p0=1.5;
p1=2.5;
p2=2;
fprintf('Let P(0)=%1.1f P(1)=%1.1f P(2)=%1.1f\n',p0,p1,p2)
tol=1e-5;
h1=p1-p0;
h2=p2-p1;
n1=(subs(f,p1)-subs(f,p0))/h1;
n2=(subs(f,p2)-subs(f,p1))/h2;
d=(n2-n1)/(h2+h1);
for k=1:50;
b=n2+h2*d;
g=(b^2-4*subs(f,p2)*d)^0.5;
if abs(b-g)<abs(b+g);
e=b+g;
else e=b-g;
end
h=(-2*subs(f,p2))/e;
p=p2+h
fprintf('P(%1.0f)= %1.4f\n',k+2,p)
if abs(h)<tol
fprintf('This root is P(%1.0f)= %1.13f.\n',k+2,p)
break
end
p0=p1;
p1=p2;
p2=p;
h1=p1-p0;
h2=p2-p1;
n1=(subs(f,p1)-subs(f,p0))/h1;
n2=(subs(f,p2)-subs(f,p1))/h2;
d=(n2-n1)/(h2+h1);
k=k+1;
end

跑出來的結果是
Solve (x-(3+2i))*(x-(3-2i))*(x+2)*(x-5)=0 by Muller's method
==================================================
Let P(0)=1.5 P(1)=2.5 P(2)=2.0

p =

3.6429 - 2.0392i

P(3)= 3.6429

p =

2.7843 - 2.2223i

P(4)= 2.7843

p =

3.0423 - 2.0243i

P(5)= 3.0423

p =

2.9986 - 2.0003i

P(6)= 2.9986

p =

3.0000 - 2.0000i

P(7)= 3.0000

p =

3.0000 - 2.0000i

P(8)= 3.0000
This root is P(8)= 2.9999999999683.

想請問的是

為何fprintf('P(%1.0f)= %1.4f\n',k+2,p) 這句

只讓我的P(N)值顯示出實數部分

複數部分卻顯示不出來?

感謝!!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.54.146
※ 編輯: rooster1125 來自: 114.33.54.146 (05/01 18:55)
※ 編輯: rooster1125 來自: 114.33.54.146 (05/01 18:57)
ejialan:fprintf只會印實部 可以配合real imag抓實虛部 05/01 19:13
ejialan:或者改用disp + num2str 05/01 19:14
rooster1125:不好意思,請問如何使用disp + num2str 05/01 19:16
rooster1125:感謝e大!!我用disp+fprintf解決了! 05/01 19:50
ejialan:disp(['P(',num2str(k+2),')=',num2str(p)]) 用法是這樣 05/01 20:01
ejialan:不過解決了就好 05/01 20:01
rooster1125:好強! 真的太感謝了! 05/01 20:18

你可能也想看看

搜尋相關網站