python實現四階龍格庫塔法

2021-08-13 23:57:30 字數 802 閱讀 8549

# -*- coding: utf-8 -*-

"""created on sun dec 24 15:29:08 2017

@author: www

"""#本程式是用四階龍格庫塔法求解課本(數值計算方法 馬東昇)p242頁的例7-3

#fun為指定的導數的函式

#rf4為四階龍格庫塔法

def fun(x,y):

f = y - (2 * x / y)

return f

#input

# x0,y0:初始給出的x0值,y0值

# h :步長

# n :迭代次數

#print

# x1,y1:每次迭代輸出的結果

def rf4(x0,y0,h,n):

n = 1

while(n != n):

x1 = x0 + h

k1 = fun(x0, y0)

k2 = fun(x0+h/2, y0+h*k1/2)

k3 = fun(x0+h/2, y0+h*k2/2)

k4 = fun(x1, y0+h*k3)

y1 = y0 + h * (k1 + 2* k2 + 2 * k3 + k4) / 6

print("%.2f, %.6f" %(x1, y1))

n = n + 1

x0 = x1

y0 = y1

def main():

rf4(0,1,0.2,5)

main()

四階龍格庫塔法

這裡主要講一下如何用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 ...