码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 二阶常微分方程的显隐求解格式


    • 本文介绍的这两个格式相容性都比较低,不建议使用,写作本文的目的是提醒大家使用换元法把高阶方程转换成一阶常微分方程组求解  
    • 全代码
    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. from scipy.optimize import fsolve
    4. #Second-Order Differential Equation
    5. #y''(x) = f(x, y)
    6. class SODE():
    7. def __init__(self, f, X_start=0, X_end=1, Y_start=1, dY_start=1, ddY_start=1, h=0.01):
    8. self.f = f
    9. self.h = h
    10. self.X = np.arange(X_start, X_end, self.h)
    11. self.Y = np.zeros(self.X.size)
    12. self.Y[0] = Y_start
    13. self.Y[1] = Y_start + self.h * dY_start + 0.5 * self.h**2 * ddY_start
    14. self.tol = 1e-6
    15. def Stormer(self, ):
    16. for i in range(2, self.X.size):
    17. self.Y[i] = self.h**2 * self.Y[i-1] + 2 * self.Y[i-1] - self.Y[i-2]
    18. return self.Y
    19. def Cowell(self, ):
    20. for i in range(2, self.X.size):
    21. self.Y[i] = 1/(1-self.h**2/12) * ((10*self.Y[i-1]+self.Y[i-2])*self.h**2/12 + 2*self.Y[i-1] - self.Y[i-2])
    22. return self.Y
    23. c = SODE(f = lambda x,y:x + y)
    24. y1 = c.Stormer()
    25. y2 = c.Cowell()
    26. plt.plot(c.X, y1, label="Stormer")
    27. plt.plot(c.X, y2, label="Cowell")
    28. f = lambda x:0.5*np.exp(-x)*(-1+3*np.exp(2*x)-2*x*np.exp(x))
    29. y3 = f(c.X)
    30. plt.plot(c.X, y3, label="True")
    31. plt.legend()
    32. plt.pause(0.01)

     

    • Stormer 公式

    y_{i+1}-2y_i+y_{i-1}=h^2f_i

    • Cowell 公式

    y_i-2y_{i-1}+y_{i-2}=\frac{h^2}{12}(f_i+10f_{i-1}+f_{i-2})

    • 当然我们也可以自己微操,比如Stormer 公式就是二阶导数的近似公式,只要取得点足够多,初始猜测的点足够多,就能自己创造公式,不过用处不大了! 

     

  • 相关阅读:
    linux下打包qt程序
    三、创建各个展示模块组件
    Flask数据库之SQLAlchemy--介绍--链接数据库
    文献阅读5
    【Django 02】数据表构建、数据迁移与管理
    单链表反转
    零代码编程:用ChatGPT批量下载podomatic播客RSS页面音频
    vs2019 中编译和使用 protobuf 库
    java解析c结构体的数据
    【昇腾310】【mindspore 安装后测试报错】ImportError: libacl_tdt_channel.so
  • 原文地址:https://blog.csdn.net/Chandler_river/article/details/133624339
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号