2012-10-23 39 views
1

我努力使自己的功能的MATLAB來解決兩個非線性方程的系統,同時採用了嵌套函數分享一些一些參數,這裏是一個示例代碼:「輸入參數不足」。使用fsolve與嵌套函數時

function y=solve(a,x0) 
a; 
y=fsolve(nle,x0);      % this is line 3 

    function f=nle(x) 
     f(1)=x(1)-a*x(1)^2-x(1)*x(2); % this is line 6 
     f(2)=2*x(2)-x(2)+3*x(1)*x(2); 
    end 

end 

這裏a是我想從命令行傳遞給函數的參數,x0fsolve的起點。

然而,當我打電話在MALAB功能指定a=4x0=[1 1]'後,它給了我下面的錯誤:

Error using solve/nle (line 6) 
Not enough input arguments. 

Error in solve (line 3) 
y=fsolve(nle,x0); 

我爲MATLAB相當新手,有誰能夠告訴我在哪裏,我在做錯誤?

在此先感謝。

編輯: 我試圖用一個函數代替nle處理@nle,但似乎別的東西出了問題:

Undefined function 'fsolve' for input arguments of type 'function_handle'. 

Error in solve (line 3) 
y=fsolve(@nle,x0); 

似乎並沒有什麼意義,因爲我查了文檔fsolve和它說,它確實應該使用的函數處理有...

回答

4

你錯過了「@」在NLE的前面,即

y = fsolve(@nle,x0); 

應該工作。

+0

感謝安德烈亞斯,我試過了,但似乎還有別的錯誤:它說:「未定義功能‘fsolve’類型‘function_handle’ 錯誤解決(3號線) Y = fsolve的輸入參數(@nle, X0);」 – Vokram

+0

嗯,我的Matlab幫助說fsolve是在優化工具箱中。難道是這樣,你沒有安裝這個工具箱? (不幸的是,Matlab基礎包中的類似命令fzero僅用於標量變量)。 –

+0

你是對的...我嘗試了一個非常簡單的函數,它說fsolve是未定義的...似乎在我們實驗室中的版本是教室版本,因此是非常原始的。非常感謝! – Vokram