1. import numpy as np
  2. from scipy import integrate
  3. import matplotlib.pyplot as plt
  4. import sympy
  5.  
  6. def plot_direction_field(x, y_x, f_xy, x_lim=(-5, 5), y_lim=(-5, 5), ax=None):
  7. f_np = sympy.lambdify((x, y_x), f_xy, 'numpy')
  8. x_vec = np.linspace(x_lim[0], x_lim[1], 20)
  9. y_vec = np.linspace(y_lim[0], y_lim[1], 20)
  10.  
  11. if ax is None:
  12. _, ax = plt.subplots(figsize=(4, 4))
  13. # dx相邻两值的距离
  14. dx = x_vec[1] - x_vec[0]
  15. dy = y_vec[1] - y_vec[0]
  16.  
  17. for m, xx in enumerate(x_vec):
  18. for n, yy in enumerate(y_vec):
  19. Dy = f_np(xx, yy) * dx
  20. Dx = 0.8 * dx ** 2 / np.sqrt(dx ** 2 + Dy ** 2)
  21. Dy = 0.8 * Dy * dy / np.sqrt(dx ** 2 + Dy ** 2)
  22. ax.plot([xx - Dx / 2, xx + Dx / 2], [yy - Dy / 2, yy + Dy / 2], 'b', lw=0.5)
  23.  
  24. ax.axis('tight')
  25. # y对x的偏导=f_xy
  26. ax.set_title(r"$%s$" % (sympy.latex(sympy.Eq(y_x.diff(x), f_xy))), fontsize=18)
  27.  
  28. return ax
  29.  
  30. # 自变量
  31. x = sympy.symbols('x')
  32. # 因变量
  33. y = sympy.Function('y')
  34. f = x - y(x) ** 2
  35.  
  36. f_np = sympy.lambdify((y(x), x), f)
  37. y0 = 1
  38. xp = np.linspace(0, 5, 100)
  39. # func 初始值 x的范围
  40. yp = integrate.odeint(f_np, y0, xp)
  41. xn = np.linspace(0, -5, 100)
  42. yn = integrate.odeint(f_np, y0, xn)
  43.  
  44. # 画场线图
  45. fig, ax = plt.subplots(1, 1, figsize=(4, 4))
  46. plot_direction_field(x, y(x), f, ax=ax)
  47. ax.plot(xn, yn, 'b', lw=2)
  48. ax.plot(xp, yp, 'r', lw=2)
  49. plt.show()

  1. from sympy import *
  2. x = symbols("x")
  3. y = symbols("y",cls=Function)
  4. eq1 = diff(y(x),x,2)-5*diff(y(x),x)+6*y(x)
  5. eq2 = diff(y(x),x,2)-5*diff(y(x),x)+6*y(x)-x*exp(2*x)
  6. res = dsolve(eq1,y(x))
  7. res2 = dsolve(eq2, y(x))
  8. print(res)
  9. print(res2)
  1. Eq(y(x), (C1 + C2*exp(x))*exp(2*x))
  2. Eq(y(x), (C1 + C2*exp(x) - x**2/2 - x)*exp(2*x))

  1. from sympy import *
    x = symbols("x")
    y = symbols("y",cls=Function)

    eq1 = diff(y(x),x,2)-5*diff(y(x),x)+6*y(x)
    eq2 = diff(y(x),x,2)-5*diff(y(x),x)+6*y(x)-x*exp(2*x)

    res1 = dsolve(eq1,y(x),ics={y(0):1,diff(y(x),x).subs(x,0):0})
    res2 = dsolve(eq2,y(x),ics={y(0):1,y(2):0})
    print(res1)
    print(res2)
  1. Eq(y(x), (3 - 2*exp(x))*exp(2*x))
  2. Eq(y(x), (-x**2/2 - x + 3*exp(x)/(-1 + exp(2)) + (-4 + exp(2))/(-1 + exp(2)))*exp(2*x))

 

基于python的数学建模---场线与数值解(微分方程)的更多相关文章

  1. 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)

    函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...

  2. Python数学建模-01.新手必读

    Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...

  3. Python小白的数学建模课-B4. 新冠疫情 SIR模型

    Python小白的数学建模课-B4. 新冠疫情 SIR模型 传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. SIR 模型将人群分为易感者(S类). ...

  4. Python小白的数学建模课-15.图论基本概念

    图论中所说的图,不是图形图像或地图,而是指由顶点和边所构成的图形结构. 图论不仅与拓扑学.计算机数据结构和算法密切相关,而且正在成为机器学习的关键技术. 本系列结合数学建模的应用需求,来介绍 Netw ...

  5. Python数学建模-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...

  6. Python小白的数学建模课-A1.国赛赛题类型分析

    分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...

  7. Python小白的数学建模课-A3.12 个新冠疫情数模竞赛赛题与点评

    新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 本文收集了与新冠疫情相关的的数学建模竞赛赛题,供大家参考,欢迎收藏关注. 『Python小白的数学建模课 @ Youcans』带你 ...

  8. Python小白的数学建模课-07 选址问题

    选址问题是要选择设施位置使目标达到最优,是数模竞赛中的常见题型. 小白不一定要掌握所有的选址问题,但要能判断是哪一类问题,用哪个模型. 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法. ...

  9. Python小白的数学建模课-09 微分方程模型

    小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型的建模与求解,通过常微分方程.常微分方程组.高阶常微分方程 3个案例手 ...

  10. Python小白的数学建模课-B5. 新冠疫情 SEIR模型

    传染病的数学模型是数学建模中的典型问题,常见的传染病模型有 SI.SIR.SIRS.SEIR 模型. 考虑存在易感者.暴露者.患病者和康复者四类人群,适用于具有潜伏期.治愈后获得终身免疫的传染病. 本 ...

随机推荐

  1. KFS Oracle RAC 数据解析同步配置方法

    一.logminer方式解析 1.数据库配置 - Oracle 1. 数据库中需要先设置 NSL_DATE_FORMAT,命令如下,设置好以后需要重启数据库: ALTER SYSTEM SET NLS ...

  2. Visual Studio 2022 Community 不完全攻略

    0. 前言 建议结合视频阅读哦 Visual Studio 2022 Community 不完全攻略 有问题或者意见欢迎评论 ! 1. 下载&安装 Visual Studio Communit ...

  3. 【项目实战】自备相机+IMU跑通Vins-Mono记录

    前言 初次接触SLAM,公司要求用自己的设备来跑通vinsmono这个程序,虽然已经跑通了别人的数据包,但是真正自己上手来运行这个程序,发现真的是困难重重,特意在此记载下来整个过程,以供大家参考. 我 ...

  4. Elasticsearch: Cerebro 用户界面介绍

  5. 第六章:Django 综合篇 - 8:信号 signal

    django自带一套信号机制来帮助我们在框架的不同位置之间传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)发送给一组接受者(rec ...

  6. Kubernetes(k8s)通过环境变量将 Pod 信息呈现给容器

    Downward API 有两种方式可以将 Pod 和 Container 字段呈现给运行中的容器: 环境变量 卷文件 这两种呈现 Pod 和 Container 字段的方式统称为 Downward ...

  7. 【论文翻译】KLMo: Knowledge Graph Enhanced Pretrained Language Model with Fine-Grained Relationships

    KLMo:建模细粒度关系的知识图增强预训练语言模型 (KLMo: Knowledge Graph Enhanced Pretrained Language Model with Fine-Graine ...

  8. Python 实验报告(第三周)

    一.实验目的和要求 1.熟练运用常见选择结构: 2.熟练运用for循环和while循环: 3.理解带else语句的循环结构执行过程和break.continue语句在循环中的作用. 二.实验环境 软件 ...

  9. Linux 下搭建 Kafka 环境

    Linux 下搭建 Kafka 环境 作者:Grey 原文地址: 博客园:Linux 下搭建 Kafka 环境 CSDN:Linux 下搭建 Kafka 环境 环境要求 操作系统:CentOS 7 下 ...

  10. 《Vue3.x+TypeScript实践指南》已出版

    转眼回长沙快2年了,图书本在去年就已经完稿,因为疫情,一直耽搁了,直到这个月才出版!疫情之下,众生皆苦!感觉每天都是吃饭.睡觉.上班.做核酸! 图书介绍 为了紧跟技术潮流,该书聚焦于当下火的Vue3和 ...