我正在使用一個簡單的if循環來更改我的ode腳本中的參數值。這是我寫的一個示例腳本,它展示了同樣的問題。因此,首先其作品的版本:循環中的時間相關參數值在頌歌求解器中僅適用於某些t的值
function aah = al(t,x)
if (t>10000 && t<10300)
ab = [0; 150];
else
ab = [150; 0];
end
aah = [ab];
這可以使用
t = [0:1:10400];
x0 = [0,0];
[t,x] = ode23tb(@al, t,x0);
運行,並與
plot(t,x(:,1))
plot(t,x(:,2))
確定這就是好版可視化。現在如果你所做的只是改變t到
t = [0:1:12000];
整件事情都爆炸了。你可能會認爲它只是matlab的平均出圖,但它不是,因爲如果你看一下
答案應該是在這兩種情況下相同,因爲代碼並沒有改變。但是這第二個版本輸出0,這是錯誤的!
究竟是怎麼回事?任何人有想法?
非常感謝你的幫助
實際上,您可以將步長設置爲300.大多數頌歌算法將「及時回溯」以糾正其可能錯過的快速更改。只要一步落入敏感區域,你就會好起來 – Rasman
絕對美妙。非常有意義,非常感謝你。 – user1792403