2
我在開發我的GUI來解決微分方程時遇到了問題,而且找不到該錯誤。函數Matlab中沒有足夠的輸入參數
我試圖解決的公式定義爲:
T*x'+x = kSigma*heaviside(t-t0) + kSin*sin(Omega*t+alpha*pi/180).
我已經試過的方法是:
function lsg = DGLvar(t,T,Omega)
x = 1;
kSin = 1;
kSigma = 5;
t0 = 0;
alpha = 0;
lsg = 1/T * (-x + kSigma*heaviside(t-t0) + kSin*sin(Omega*t+alpha*pi/180));
在GUI中的代碼如下所示:
function pushbutton1_Callback(hObject, ~, handles)
t=[0 100];
periode=get(handles.sliderT,'value');
Omega=get(handles.slideromega,'value');
[x,t]=ode45(@DGLvar,t,periode,Omega);
plot(handles.axes2,x,t,'g')
我收到以下錯誤:
Error using DGLvar (line 8)
Not enough input arguments.
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in PT1>pushbutton1_Callback (line 218)
[x,t]=ode45(@DGLvar,t,periode,Omega);
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in PT1 (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)PT1('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
如何解決此錯誤?
感謝您的耐心knedlsepp。它的工作,但請你解釋我爲什麼這樣做: ** xprimefixedTandOmega = @(t,x)xprime(t,x,T,Omega); ** –
好吧!非常感謝 –
這條線修正了'T'和'Ω'值。想想你是否是求解者:「*我想得到一個函數f(t,x),我知道第一個值是時間,第二個值是此時的值,然後我會做我的魔法並返回解決方案到x'= f(t,x)*「。當你傳入一個具有4個以上參數的函數時,求解器ode45會認爲:「*嗯,我通過了一個帶有4個參數的函數,我知道第一個是時間,第二個是這個時間的值,但是我不知道其他兩個參數是什麼。「然後它只嘗試使用前兩個=>錯誤:」*沒有足夠的輸入參數。*「 – knedlsepp