簡體   English   中英

Matlab系統微分方程,遞歸定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM