常微分方程数值解法-Python实现
目录
- 一阶微分方程
- 简介
- 四阶龙格库塔方法
- 广义
- 高阶微分方程
- 简介
一阶微分方程
简介
四阶龙格库塔方法
一阶微分方程解法
class Runge_Kutta:def __init__(self) -> None:pass# 原函数的导函数def f_xy(self, x, y):value = x - yreturn value# 由当前点和步进值,计算下一个点def run(self, start=[0, 0], step=0.01 ):# cal x0 y0x0, y0 = startK1 = self.f_xy(x0, y0)K2 = self.f_xy(x0 + step/2, y0 + (step/2)*K1 )K3 = self.f_xy(x0 + step/2, y0 + (step/2)*K2 )K4 = self.f_xy(x0 + step, y0 + step*K3)Next_y = y0 + (step / 6) * (K1 + 2*K2 + 2*K3 + K4)Next_x = x0 + stepreturn round(Next_x, 6), round(Next_y, 6)# 实例化
RK = Runge_Kutta()
# 传入起始值, 步进值, 获得下一个 xy 点
x, y = RK.run(start=(0, 0), step=0.2)
# 可以使用此语句进行迭代
x, y = RK.run(start=(x, y), step=0.2)# 0 --- : 0.6 0.148817
# 1 --- : 0.8 0.249335
# 2 --- : 1.0 0.367886
# 3 --- : 1.2 0.501201
# 4 --- : 1.4 0.646603
# 5 --- : 1.6 0.801902
# 6 --- : 1.8 0.965304
# 7 --- : 2.0 1.13534
# 8 --- : 2.2 1.310807
# 9 --- : 2.4 1.490721
广义
class Equ:def __init__(self) -> None:pass# 原函数的导函数def f_xy(self, x, y):value = x - yreturn value# 欧拉法def euler(self, start=[0, 0], step=0.01):# cal x0 y0x0, y0 = startNext_y = y0 + step * self.f_xy(x0, y0)Next_x = x0 + stepreturn round(Next_x, 6), round(Next_y, 6)# 改进欧拉法def euler_improve(self, start=[0, 0], step=0.01):# cal x0 y0x0, y0 = startyp = y0 + step * self.f_xy(x0, y0)yq = y0 + step * self.f_xy(x0 + step, yq)Next_y = 0.5 * (yq + yp)Next_x = x0 + stepreturn round(Next_x, 6), round(Next_y, 6)# 四阶龙哥库达算法def RK(self, start=[0, 0], step=0.01 ):# cal x0 y0x0, y0 = startK1 = self.f_xy(x0, y0)K2 = self.f_xy(x0 + step/2, y0 + (step/2)*K1 )K3 = self.f_xy(x0 + step/2, y0 + (step/2)*K2 )K4 = self.f_xy(x0 + step, y0 + step*K3)Next_y = y0 + (step / 6) * (K1 + 2*K2 + 2*K3 + K4)Next_x = x0 + stepreturn round(Next_x, 6), round(Next_y, 6)
高阶微分方程
简介
引进新的变量将高阶微分方程归结为一阶微分方程组的初值问题来求解。
一般而言,高阶微分方程可以改写为状态方程。
例如:
y(x)′′+3y(x)′+2y(x)=4xy(x)''+3y(x)'+2y(x)=4x y(x)′′+3y(x)′+2y(x)=4x
令
{x1=yx2=x1′\begin{cases} x_1=y\\ x_2=x_1' \end{cases} {x1=yx2=x1′
得到新的微分方程
{x1′=x2x2′=−2x1−3x2+4x\begin{cases} x_1'=x_2 \\ x_2'=-2x_1-3x_2+4x \end{cases} {x1′=x2x2′=−2x1−3x2+4x
故求解 yyy 的过程就是求解 x1x_1x1 、求解 x1x_1x1 就是求解 x2x_2x2
相当于求解2个一阶微分方程
常微分方程数值解法-Python实现相关推荐
- 常微分方程数值解法——python实现
研究生课程<应用数值分析>结课了,使用python简单记录了下常微分方程数值解法. 2022.11.26 Update: 文末补充C语言实现(C11标准) 向前欧拉法 {yi+1=yi+h ...
- 欧拉折线法解常微分方程C语言,第五章:常微分方程数值解法第一节欧拉法
<第五章:常微分方程数值解法第一节欧拉法>由会员分享,可在线阅读,更多相关<第五章:常微分方程数值解法第一节欧拉法(32页珍藏版)>请在人人文库网上搜索. 1.第五章 常微分方 ...
- 常微分方程数值解matlab欧拉,matlab 常微分方程数值解法 源程序代码
matlab 常微分方程数值解法 源程序代码 所属分类:其他 开发工具:matlab 文件大小:16KB 下载次数:41 上传日期:2019-02-13 11:03:29 上 传 者:XWLYF 说明 ...
- 科学计算与数学建模-常微分方程数值解法 思维导图
第七章 常微分方程数值解法
- 欧拉梯形格式C语言,常微分方程数值解法 欧拉格式和梯形格式比较.doc
常微分方程数值解法 欧拉格式和梯形格式比较 甥啼伐慑穗策步怀冻窿连鼓枉磷浮血腔氓玩伶樱拨惊款蹈耀突菩屠赘颧泥整抽蟹寥毋城舶败袍龙垫炯听记捅碉钠辞摆棒猩饯钒轮剂厅戎懦汝差栅寿坪赞壁洒日朵谰丛沛称怜给吟戏 ...
- 欧拉梯形格式C语言,常微分方程数值解法欧拉格式和梯形格式的比较.doc
常微分方程数值解法欧拉格式和梯形格式的比较 PAGE PAGE 4 年级00000班号0000学号0000专业000姓名00000实验名称000000实验类型设计型综合型创新型实验目的或要求常微分的数 ...
- 基础数学(8)——常微分方程数值解法
文章目录 期末考核方式 基础知识 解析解(公式法) 解析解例题(使用公式法,必考) 解析解的局限性 数值解 数值解的基本流程 显示Euler法 显示欧拉(差值理解) 显示欧拉(Taylor展开理解) ...
- 常微分方程数值解法1
1.牛顿迭代法 多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要.牛顿迭代法使用函数 的泰勒级数的前面几项来寻找方程 的根.牛顿迭代法是求方程根的重要方法之 ...
- 常微分方程数值解法(1)
欧拉方法: #include <stdio.h> #include <math.h> #define N 10//离散点个数取10,对应步长0.1 #define low 0/ ...
最新文章
- 先随机后排序的oracle,Oracle用decode函数或CASE-WHEN实现自定义排序
- 2016年金融全行业网络安全状况调研报告
- Java中为什么需要反射?反射要解决什么问题?
- python实现简单爬虫功能(网站图片)
- 用粑粑治疗自闭症!男孩接受6次粪菌移植,目前效果显著
- c++ unicode转换中文_彻底弄懂UTF-8、Unicode、宽字符、locale
- HIVE入门之数据模型
- 关于CPU的12个硬核干货!
- 小米路由器怎么连接无盘服务器,播放器+服务器的方法瞬间玩转小米路由方法图文介绍...
- [bzoj3489]A simple rmq problem_KD-Tree
- 真美 | 你破坏Java代码的样子,真美!
- MethodInterceptor拦截器
- laraverl笔记
- cadence学习笔记(2)-PCB封装库制作
- ImageNet数据集和ILSVRC2012介绍以及如何通过python使用
- Android Studio gradle 自定义签名设置
- BZOJ 3654: [湖南集训]图样图森破 SA
- python3贴吧_python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)...
- 内容交付网络(CDN)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 图解!24张图彻底弄懂九大常见数据结构!
热门文章
- 信息系统项目管理师和网络规划设计师的区别是什么?备考信息系统项目管理师有何建议?
- egg-mongoose的 update only works with $ operators报错
- 【046】人类基准-测试记忆力和反应速度等素质
- 搜狗输入法 android7.0,搜狗输入法Android版 V7.3键盘视觉盛宴
- Android 关于@NonNull
- python 重定向 ctf_CTF逆向--.NET与Python篇
- C语言 判断一个是否素数
- 按照下列格式,打印图形
- 让Windows系统 强制关机的方法 shutdown.....
- 项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(三)