0
ode
的主要功能如下所示。'ode45` matlab中的錯誤
function dxdt = state(t,x,vgth,vgval1,vgval2)
vgval=vgval1+vgval2;
p=1;
k=10^0.7;
window1=1-((2*x)-1).^(2*p);
dxdt=k*(vgval-vgth+1.2)*window1;
end
腳本如下。
step=0.01;
t = 0:step:10;
f=4*0.157;
vgate1= @(t) abs(5*sin(2*f*t)).*heaviside(5-t);
[email protected](t) -abs(5*sin(2*f*t)).*heaviside(t-5);
函數調用部分如下。
x0=0.01;
vgth=1.9;
[t,x] = ode45(@(t,x) state1 (t,x,vgth,vgate1(t),vgate2(t)), t, x0);
plot(t,x)
問題 當我使用負號與vgate2
它給我的錯誤。 它工作正常如果我刪除vgate2
的負號。
所需的結果 我想我在vgate2
。其實一個負號我想用兩個正脈衝,正弦和兩個負號pulses.That情節就是爲什麼我用的vgate2
負值。
'state1'的輸出是什麼?你可以添加你的帖子中的錯誤消息嗎? – BillBokeey
你可以嘗試明確整合到t = 5,然後重新啓動?之後將解決方案拼接在一起。非平滑事件對於步長適配器不利,跳轉是最糟糕的。 – LutzL
@BillBokeey'x'是'state1'的輸出 –