我想用fzero
到如何使用fzero在MATLAB
x+sin(x)=e^x
密切根近似爲-1。
然而,fzero
似乎只是回到我公司提供的猜測:
> fzero('x+sin(x)==e^x', -1)
-1
> fzero('x+sin(x)==e^x', -4)
-4
實際的答案應該是-.354。我的問題在這裏?
我想用fzero
到如何使用fzero在MATLAB
x+sin(x)=e^x
密切根近似爲-1。
然而,fzero
似乎只是回到我公司提供的猜測:
> fzero('x+sin(x)==e^x', -1)
-1
> fzero('x+sin(x)==e^x', -4)
-4
實際的答案應該是-.354。我的問題在這裏?
有在你的代碼的幾個問題:
fzero
試圖找到作爲第一個參數提供的功能的零。你提供的是一個等式,而不是一個函數。e
是什麼。使用exp
。x+sin(x)==exp(x)
似乎沒有真正的解決方案。你的意思可能是x+sin(x)==-exp(x)
。考慮到這三點,你要計算的零的函數是字符串形式,'x+sin(x)+exp(x)'
。所以:
>> fzero('x+sin(x)+exp(x)', -1)
ans =
-0.3545
正如@rayryeng指出,fzero
也接受function handle來定義其輸入功能。實際上,正如@horchler所觀察到的那樣,使用一個字符串當前是沒有記錄的,而它的比較慢。因此,建議以函數句柄的形式定義要傳遞給fzero
的函數。在你的情況下,你可以直接使用anonymous function如下:
>> fzero(@(x) x+sin(x)+exp(x), -1)
ans =
-0.3545
'fzero'也可以採用匿名功能,但我相信你已經知道了! – rayryeng
@rayryeng是的:-)我使用字符串,因爲OP有。但這是一個很好的提示! –
@rayryeng感謝您的更正!我輸入得太快了:-D –
我認爲路易斯已經充分回答了你的問題。請考慮接受他的回答 – rayryeng