python 经典R-K(龙格库塔)

经典R-K(龙格库塔)

import sympy
x=sympy.symbols("x")
y=sympy.symbols("y")
fy=input("f(x,y)=")
a=float(input("a="))
b=float(input("b="))
n=int(input("n="))
α=float(input("α="))
fy=sympy.simplify(fy)
X=[]
Y=[]
h=(b-a)/n
X.append(a)
Y.append(α)
for i in range(n):
    x1=X[i]+h
    X.append(x1)
    K1=fy.evalf(subs={x:X[i],y:Y[i]})       #对x,y赋值
    K2=fy.evalf(subs={x:(X[i]+h/2),y:(Y[i]+(h/2)*K1)})
    K3=fy.evalf(subs={x:(X[i]+h/2),y:(Y[i]+(h/2)*K2)})
    K4=fy.evalf(subs={x:X[i+1],y:(Y[i]+h*K3)})
    y1=Y[i]+h*(1/6)*(K1+2*K2+2*K3+K4)
    Y.append(y1)
print('x:',X)
print('y:',Y)

输入案例:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值