python入門,復現《數值分析》中的尤拉、龍格庫塔,這裡以經典四階龍格庫塔來示例。
y_(n+1)=y_n+h/6 (k_1+2k_2+2k_3+k_4 )
k_1=f(x_n,y_n)
k_2=f(x_n+h/2 ,y_n+〖hk〗_1/2)
k_3=f(x_n+h/2 ,y_n+〖hk〗_2/2)
k_4=f(x_n+h ,y_n+hk_3)
下面是python**
#自行更改微分方程
def f
(p,q)
:return(-
1)*q-p*q**
2#把公式拆分更簡潔
def zsj
(m,n,h):k1
=f(m,n)k2=
f(m+h*
0.5,n+h*
0.5*k1)
k3=f(m+h*
0.5,n+h*
0.5*k2)
k4=f(m+h,n+h*k3)
returnk1+
2*k2+
2*k3+
k4#f=
微分方程;求解區間
(a,b);ya=y(
0),h=步長
四階龍格庫塔法
這裡主要講一下如何用c語言程式設計運用四階龍格庫塔法求解微分方程組。對於所舉例子,只是為了說明龍格庫塔法不僅可以解一階線性微分方程,高階非線性也可通過降階後按照經典四階龍格庫塔法公式逐步求解。只要選取合適的步長h,就能夠平衡速度和精度,達到求解要求。至於例子中的一級倒立擺的物理含義沒有提及到,各種方...
四階龍格庫塔法的基本思想 四階龍格庫塔實驗報告
1 三 四階runge kutta法求解常微分方程 一 龍格庫塔法的思想根據第九章的知識可知道,euler方法的區域性截斷誤差是,而當用euler方法估計出再用梯形公式進行校正,即採用改進euler方法得出數值解的截斷誤差為。由lagrange微分中值定理記,得到這樣只要給出一種計算的演算法,就能得...
四階龍格 庫塔(Runge Kutta)方法
簡潔版 code fprintf 請輸入區間下界 n a input fprintf 請輸入區間上界 n b input fprintf 請輸入初值alpha n alpha input fprintf 請輸入最大迭代次數n n n input x0 a y0 alpha h b a n k x1 ...