[英]Matlab system differential equations, recursive definition
我正在尋找一種緊湊有效的方法來解決以下問題。 我有一個微分方程組,例如3,我想將其擴展為分子動力學類型計算。
目前這是起點
function dy = molec(t,y)
dy = zeros(3,1);
A = 1;
B = 1;
dy(1) = (A/B)* (2 * (y(2)-y(1)) - 0.5) ;
dy(2) = (A/B)* ( 2* ( y(1) - y(2) ) + 4* (y(3)-y(2)) ) ;
dy(3) = (A/B)* ( 6 * (- y(3)) + 4 * ( y(2) - y(3) ) );
我想擁有100-150個整體變量。 我可以通過鍵入它們來添加更多dy(n)定義,但這幾乎不實用。 相反,我想利用問題的遞歸定義。 實際上,在已知序列a_n的情況下,定義了第n個項
dy(n) = (A/B)* a_n*(y_{n-1} - y{n}) + a_{n-1}*y_{n+1} - y_{n})
任何幫助將不勝感激,謝謝
這是一個迭代的定義,其中沒有遞歸的定義。
使用類似
diff = y(2:N)-y(1:N-1)
dy(1:N-1)=a(1:N-1) .* diff
dy(2:N) = dy(2:N) - a(2:N) .* diff
dy(1) = dy(1) + ...
dy(N) = dy(N) + ...
dy = dy * (A/B)
或直接實現您的公式的for
循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.