matlab簡單問題關於,matlab簡單問題 關於fzero

時間 2021-09-16 03:13:51

1樓:醉蝶翩翩

我也很好奇 就試了一下 fzero(@(x)x^2-1,0.05)時,ans=1,。fzero是一個數值搜尋過程,依賴於函式特性,值的指定,以及matlab所能識別的最小步長。

如果想計算更準確,可以用符號函式求解0點。符號函式不用關心具體的函式值,完全當做符號處理,所以,不存在上述不穩定因素。

2樓:匿名使用者

這是一個很好的問題,雖然看似簡單,但涉及到很多值得思考的問題。

首先,應該明確一點——fzero求函式零點是和初值的選取有密切關係的,例如,x^2-1有兩個零點,取不同的初值,可能會求得不同的零點,如下圖所示。

從圖中能發現一些奇怪的現象,例如:

>> fzero(f,0.01)

ans =

-1>> fzero(f,0.16)

ans =

1>> fzero(f,0.161)

ans =

-1>> fzero(f,-0.01)

ans =

1>> fzero(f,-0.16)

ans =

-1>> fzero(f,-0.161)

ans =

1按常理,應該求得距離初值比較近的零點才對,但上面的例子顯示,事實並非如此,甚至,求得相同零點所對應的初值範圍還不連續,的確很讓人崩潰。。。

說明一下fzero求零點的基本步驟:它會首先確定一個區間,使得區間兩端的函式值異號,這樣,只要函式連續,就能夠求出一個零點。

確定區間的過程與初值x0有關,如果x0非零,就以x0/50為初始步長,向正負兩個方向分別擴充套件區間,如果滿足函式值異號,則確定區間的步驟完成,否則按照sqrt(2)的倍數增大步長,繼續擴充套件區間。需要注意的是,擴充套件區間時,按照先負方向減步長、後正方向加步長的順序,而且一旦左端點滿足要求就會終止,這樣,就可能出現從某個正的初值x0出發,分別向正負方向n次擴充套件區間,直到n+1次時,剛好負方向的符號改變,從而這個區間就確定為包圍了負方向(例如-1)這個零點。

以上應該大致可以解釋,為什麼不是象直覺理解的那樣“求出的零點應該靠近初值”。

3樓:匿名使用者

都說簡單問題了,還問?

Matlab序列的傅立葉變換,怎麼用matlab做傅立葉變換

簡堂宇文青夢 fs 1000 t 0 1 fs 0.6 f1 100 f2 300 x sin 2 pi f1 t sin 2 pi f2 t subplot 711 plot x title f1 100hz f2 300hz 的正弦訊號,初相0 xlabel 序列 n grid onnumber...

matlab中有沒有函式,執行能出現matlab自帶的g

inputdlg函式 執行這個函式會彈出輸入對話方塊 等待你輸入資訊 具體用法你自己搜尋一下 丑水凡 每個人對介面的需求不一樣,不可能自帶乙個介面讓大家都能用啊。用 guide 自己建乙個空白的,然後出現的介面,左邊有各種工具,你可以根據需要自己新增。如果你新增了乙個文字框,如下圖 在執行以後,你就...

用c語言編寫的讀取mat檔案(matlab矩陣)的程式,有錯,求幫助

從錯誤提示上,就是兩個變數未定義導致的連結錯誤你先搜尋整個工程,error提示中的兩個變數在 用到另外,也有可能是 include匯入的標頭檔案問題比如沒匯入必要的庫 或者是匯入的庫有問題 看你這段 沒有這兩個變數,可能是其他檔案或者使用的庫的問題匯入的庫也有依賴關係,使用前應該看看使用說明吧還有其...