目录

1.Python解微分方程数值解

2.验证火箭发射模型


1.Python解微分方程数值解

Python解微分方程要用到几个库:numpy, matplotlib.pyplot, scipy.integrate,没有的话就

pip install 相应的库就行,本次用的python为3.6.8

我们先来看一下简单的微分方程

对于Python求解微分方程只需要跳相应的库即可

from typing import Listimport numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint# 一阶微分方程的例子
def diff_equation(y_list: List[float], x: float):y1, y2, y3 = y_listreturn np.array([y2 * y3, -y1 * y3, -0.51 * y1 * y2])  # 微分方程格式,左边一定是dy/dx,返回右边x = np.linspace(0, 12, 100)  # 初始点是0,终点是12,其中有100个点
result = odeint(diff_equation, [0, 1, 1], x)  # 中间那个是y初值
plt.plot(x, result[:, 0], label='y1')  # result整个矩阵的第一列
plt.plot(x, result[:, 1], label='y2')
plt.plot(x, result[:, 2], label='y3')plt.legend()
plt.grid()  # 网格
plt.show()  # 这是y=f(x)的图像

结果展示

2.验证火箭发射模型

掌握了解方程之后我们就可以来验证火箭发射模型了

高阶微分方程,我们可以化为微分方程组来解,在这里书上义给出微分方程组,但只给出了0~t1阶段即火箭燃料还有的阶段,t1~t2为燃料耗尽的时间阶段,其中r=18,t1~t2的微分方程组为 -g+(-k*x2*x2/m),这里的m是火箭净重量。

为了验证以下表格

代码如下

from typing import Listimport matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import odeintdef get_acceleration(x: np.ndarray, result: np.ndarray, time: float, f: float, m: float, g: float,k: float) -> np.ndarray:"""获取火箭发射的加速度:param x: 距离数组:param result::param time:  时间:param f: 外力:param m: 质量:param g :重力加速度:param k : 阻力系数:return: 加速度数组"""temp = []# 重力加速度result = result[:, 1]for i in range(np.size(result)):if x[i] < time:temp.append(-g + (f - k * pow(result[i], 2)) / (m - x[i] * 18))else:temp.append(-g + (- k * pow(result[i], 2)) / 520)return np.array(temp)def diff_equation1(x_list: List[float], x: float):x1, x2 = x_listtemp = ((27000 - 0.3 * x2 * x2) / (1600 - x * 18)) if x <= 60 else -0.3 * x2 * x2 / 520return np.array([x2, -9.8 + temp])  # 微分方程格式,左边一定是dy/dx,返回右边def diff_equation2(x_list: List[float], x: float):x1, x2 = x_listtemp = ((27000 * 2 - 0.3 * x2 * x2) / (1600 - x * 18)) if x <= 60 else -0.3 * x2 * x2 / 520return np.array([x2, -9.8 + temp])  # 微分方程格式,左边一定是dy/dx,返回右边def diff_equation3(x_list: List[float], x: float):x1, x2 = x_listtemp = ((27000 - 0.3 * x2 * x2) / (2680 - x * 18)) if x <= 120 else -0.3 * x2 * x2 / 520return np.array([x2, -9.8 + temp])  # 微分方程格式,左边一定是dy/dx,返回右边def diff_equation(x_list: List[float], x: float):x1, x2 = x_listtemp = ((27000 * 2 - 0.3 * x2 * x2) / (2680 - x * 18)) if x <= 120 else -0.3 * x2 * x2 / 520return np.array([x2, -9.8 + temp])  # 微分方程格式,左边一定是dy/dx,返回右边x = np.linspace(0, 140, 10000)  # 初始点是0
x1 = np.linspace(0, 80, 10000)
result = odeint(diff_equation, [0., 0.], x)  # 中间那个是y0初值,即x=0时y=1
result1 = odeint(diff_equation1, [0., 0.], x1)
result2 = odeint(diff_equation2, [0., 0.], x1)
result3 = odeint(diff_equation3, [0., 0.], x)plt.plot(x, get_acceleration(x, result, 120, 27000 * 2, 2680, 9.8, 0.3), label='a3(t)')
plt.plot(x1, get_acceleration(x1, result2, 60, 27000 * 2, 1600, 9.8, 0.3), label='a2(t)')
plt.plot(x, get_acceleration(x, result3, 120, 27000, 2680, 9.8, 0.3), label='a1(t)')
plt.plot(x1, get_acceleration(x1, result1, 60, 27000, 1600, 9.8, 0.3), label='a0(t)')plt.legend()
plt.grid()  # 网格
plt.show()  # 这是微分方程的图像

结果展示

x的关系图

v的关系图

a的关系图

闲着没事干写的,写的不是很好,有疑问可以发我邮箱liuzhi_wdq@foxmail.com

妈妈,他们抛弃了我 像歌唱一样抛弃了我

妈妈,我是多么爱你 当你沉默的时候我爱你

只是那些猛烈的情绪

在睡不着的时候折磨着我

我那早已死去的父亲

在没有星星的夜晚看着你

妈妈,我会在夏天开放吗

像你曾经的容颜那样

妈妈,这种失落会持久吗

这个世界会好吗

忘记一些隐秘的委屈

在回头观望的时候迷失了自己

我的正在老去的身体

从某一天开始就在渐渐死去

妈妈我爱你

妈妈,我居然爱上了她

像歌唱一样就爱上了她

妈妈,当你又回首一切

这个世界会好吗

妈妈,我是多么恨你

当我歌唱的时候我恨你

Python解微分方程(验证数学建模第五版火箭发射模型)相关推荐

  1. python 广义线性模型_数学建模/机器学习:广义加性模型(GAM)及其Python实现

    笔者做过国赛也做过美赛,其中一类典型问题就是分析相关性,从而进行预测或者其他操作.这类问题通常情况下属于比较常规的问题,一般通过matlab或SPSS分析相关性,得到一个较好的数值即可. 然而有的时候 ...

  2. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  3. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

  4. 数学建模清风第一次直播:传染病模型和微分方程拟合

    学习网址:课件下载 数学建模清风第一次直播:传染病模型和微分方程拟合 数学建模清风第二次直播:模拟退火算法 数学建模清风第三次直播:excel在数学建模中的应用 博客笔记: 数学建模清风第一次直播:传 ...

  5. python求解析解,Python解微分方程

    Python解微分方程 微分方程回顾 微分方程:python 解析解(SymPy) 微分方程:python数值解(SciPY) 微分方程组:python数值解 微分方程回顾 微分方程是用来描述某一类函 ...

  6. Matlab数学建模(七):连续模型

    一.学习目标 (1)了解连续模型及解题步骤. (2)掌握用 dsolve 求解常见的微分方程解析解. (3)掌握用 ODE 家族的求解器求解数值解. (4)掌握使用专用的求解器求解. 二.实例演练 ( ...

  7. 【数学建模】1层次分析法模型部分

    目录 1 数学建模的任务分配 2 简介 3 模型介绍 3.1 评价类问题 3.2 拿到建模问题 3.3 推荐搜索网站 3.4 确定好指标 3.5 确定指标权重 (1)采用分而治之的思想 (2)分而治之 ...

  8. u=q k 的交通流模型图 matlab,数学建模回归分析matlab版.ppt

    <数学建模回归分析matlab版.ppt>由会员分享,可在线阅读,更多相关<数学建模回归分析matlab版.ppt(51页珍藏版)>请在装配图网上搜索. 1.2020/11/2 ...

  9. Algorithm:数学建模大赛之数学建模基础(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建模/文献)之详细攻略

    Algorithm:数学建模大赛之数学建模基础(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建模/求解/结论/参考文 ...

  10. 数学建模当中常用的十大模型及各对应算法

    数学建模当中常用的十大模型及各对应算法 图文展示:

最新文章

  1. Redis 为什么用跳表而不用平衡树?
  2. python免安装版_web.py入门01——python安装
  3. 动态调用类 java_Java动态调用类中方法
  4. Hadoop生态Flume(二)安装配置
  5. 基于Senparc的二次封装
  6. 思科路由器常用配置命令大全
  7. JavaScript 高级程序设计 笔记
  8. 【BUAA_CO_LAB】p5p6碎碎念
  9. 5.1.2全景声音箱摆位_杜比全景声7.1.2和7.1.4音箱摆位有什么区别
  10. word07 去掉标题前的黑点
  11. OpenGL核心技术之Gamma校正
  12. python源代码制作星空_用python画星空源代码是什么?
  13. 怎样架设游戏服务器 怎样搭建一个属于自己的游戏服 5分钟学会游戏架设 3D手游搭建视频教程 自己做游戏GM
  14. 网页字体单位px、em、%、rem、pt、vm、vh介绍
  15. 嵌入式开发常用英语单词--你知多少?
  16. 图像的等距变换,相似变换,仿射变换,射影变换及其matlab实现
  17. eclipse本来运行的汉字运行出来变成特殊符号或者乱码的解决方法
  18. 全球及中国地铁行业融资现状与十四五盈利前景分析报告2022版
  19. AdaDepth: Unsupervised Content Congruent Adaptation for Depth Estimation
  20. 云空调,GitHub 的专属冷气——GitHub 热点速览 v.21.20

热门文章

  1. cr2格式缩略图不显示,怎么把raw格式显示出缩略图
  2. 关于OCR身份证识别
  3. mysql50题_My SQL 练习题
  4. Oracle数据库经典50题(附答案),写完不理解的来打我
  5. 2022手机商城源码h5运营版本
  6. 大规模分布式系统概念介绍
  7. 中国高校那些不为人知的秘密,你听说过吗?
  8. 国家地区标准代码(国际域名缩写)
  9. 简单了解TransE
  10. [WEB]超牛的前端页面模板收集