常微分方程(ODE)求解方法总结

news2024/11/24 2:53:01

常微分(ODE)方程求解方法总结

  • 1 常微分方程(ODE)介绍
    • 1.1 微分方程介绍和分类
    • 1.2 常微分方程得计算方法
    • 1.3 线性微分方程求解的推导过程
  • 2 一阶常微分方程(ODE)求解方法
    • 2.1 欧拉方法
      • 2.1.1 欧拉方法的改进思路
    • 2.2 龙格-库塔法

1 常微分方程(ODE)介绍

1.1 微分方程介绍和分类

举例:假设跳伞人的下落速度v于时间有如下关系:

d v d t = g − c m v \frac{dv}{dt} = g-\frac{c}{m}v dtdv=gmcv (1.1)

其中g为重力常数,m为质量,c为阻力系数。

被微分的量v因变量,与v有关的变量t称为自变量。
如果函数只有一个自变量,那么方程就称为常微分方程(ordinary differential equation,ODE)
如果函数含有两个或者多个自变量,则成为偏微分方程(partialdifferential equation,PDE)

此外,微分方程也可以根据阶数来分类:最高阶导数是一阶导数,则称为一阶微分方程(first-order-equation);最高阶导数是二阶导数,则称为二阶微分方程(second-order-equation)。例如如(1.1)中就是一阶微分方程,下式(1.2)就是一个二阶微分方程。

m d 2 x d t 2 + c d x d t + k x = 0 m\frac{d^2x}{dt^2} +c\frac{dx}{dt} + kx = 0 mdt2d2x+cdtdx+kx=0 (1.2)

高阶微分方程能简化成一阶方程组。考虑上式(1.2),定义新变量y,令
y = d x d t y=\frac{dx}{dt} y=dtdx (1.3)

对上式取微分得:
d y d t = d 2 x d t 2 \frac{dy}{dt}=\frac{d^2x}{dt^2} dtdy=dt2d2x (1.4)

将式(1.3)和(1.4)代入式(1.2)中得到:
m d y d t + c y + k x = 0 m\frac{dy}{dt} +cy + kx = 0 mdtdy+cy+kx=0 (1.5)

于是原来的二阶微分方程(1.2)可等价于两个一阶方程组(1.3)和(1.5)。

同样的,其他的n阶微分方程也可以用类似的方式简化。

1.2 常微分方程得计算方法

非计算机计算方法:
常微分方程通常采用解析积分得方法来求解。如对于式(1.1),先乘以dt,在进行积分得到:
v = ∫ ( g − c m v ) d t v = \int{(g-\frac{c}{m}v)dt} v=(gmcv)dt (1.6)

对于上式(1.6),是可以精确的推导出该积分得函数表达式的。因为该方程是线性的。

但在实际中,很多方程(是非线性的)精确解是无法求出的。于是提出了一个方法,就是将方程线性化。
n n n阶)线性常微分方程的一般形式是:
a n ( x ) y ( n ) + . . . + a 2 ( x ) y ( 2 ) + a 1 ( x ) y ′ + + a 0 ( x ) y = f ( x ) a_n(x)y^{(n)}+...+a_2(x)y^{(2)}+a_1(x)y'++a_0(x)y = f(x) an(x)y(n)+...+a2(x)y(2)+a1(x)y++a0(x)y=f(x) (1.7)
其中, y ( n ) y^{(n)} y(n)是y关于x的n阶导数, a n ( x ) a_n(x) an(x) f ( x ) f(x) f(x)都是关于x的函数。因为该方程中未出现因变量y与其导数的乘积,也没有出现非线性函数。所以认为它是线性的

如下式(1.8)是一个非线性微分方程:
d 2 x d t 2 + g l s i n ( x ) = 0 \frac{d^2x}{dt^2} +\frac{g}{l} sin(x)= 0 dt2d2x+lgsin(x)=0 (1.8)
由于含有 s i n ( x ) sin(x) sin(x)为非线性函数,故该微分方程是非线性的。

线性常微分方程是可以通过解析法求解的。但是,大部分非线性方程无法精确求解。

1.3 线性微分方程求解的推导过程

拿一个简单的方程举例。首先给定函数:
y = − 0.5 x 4 + 4 x 3 − 10 x 2 + 8.5 x + 1 y=-0.5x^4+4x^3-10x^2+8.5x+1 y=0.5x4+4x310x2+8.5x+1 (1.9)
这是一个四次多项式。对其进行微分,就得到一个常微分方程:
d y d x = − 2 x 3 + 12 x 2 − 20 x + 8.5 \frac{dy}{dx}=-2x^3+12x^2-20x+8.5 dxdy=2x3+12x220x+8.5 (1.10)

对式(1.10)乘以dx,在进行积分得到:
y = ∫ ( − 2 x 3 + 12 x 2 − 20 x + 8.5 ) d x y=\int{(-2x^3+12x^2-20x+8.5)}dx y=(2x3+12x220x+8.5)dx (1.11)
应用积分法则得出解为:
y = − 0.5 x 4 + 4 x 3 − 10 x 2 + 8.5 x + C y=-0.5x^4+4x^3-10x^2+8.5x+C y=0.5x4+4x310x2+8.5x+C (1.12)
除了相差一个C外,其余都与原函数相同。这个C称为积分常数(constant of integration)
出现一个任意常数C表明,积分的结果并不算是唯一的。无限多个常数C对应无限多个可能的函数,都满足微分方程。下图给出了6个满足条件的函数:
在这里插入图片描述

为了将解完全确定下来,微分方程通常伴随有辅助条件(auxiliary conditions)。对于一阶常微分方程,有一类被称为**初值(initial value)**的辅助条件,这类条件用于确定常数值,从而使得解是唯一的。例如,给式(1.11)添加初始条件x=0,y=1。带入式(1.12)中,可推导出C=1。于是就得到了唯一解:
y = − 0.5 x 4 + 4 x 3 − 10 x 2 + 8.5 x + 1 y=-0.5x^4+4x^3-10x^2+8.5x+1 y=0.5x4+4x310x2+8.5x+1
这个解同时满足常微分方程和指定的初始条件。

当处理n阶微分方程时,就需要n个条件来确定唯一解。如果所有的条件都是在自变量同一值处指定的,那么问题就称为初值问题(initial-value problem)。与之相对的,边值问题(boundary-value problems),就是指在自变量的不同值处指定初始条件。

2 一阶常微分方程(ODE)求解方法

2.1 欧拉方法

未完待续

2.1.1 欧拉方法的改进思路

2.2 龙格-库塔法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逻辑推理——弟弟的编程课

前言 这篇文章不写代码,不科普知识。而是推理! 这是我弟弟编程课上的一个同学;不是我的同学,我都成年了,这还是个小毛孩! 这是他们学的: 乍一看这没任何问题,还有人会说&#xff…

谷歌地图模型自动下载

本工具是收费软件,学生党勿扰,闹眼子党勿扰 本工具收费1000元 视频教程 1 概述 记得去年写过一篇关于谷歌地图模型提取的博客,得到了广泛好评。有很多同学提出,能不能自动下载谷歌地图模型,由于提出此需求的人太多了…

【起点到终点 走哪条路径使得(路径长度排序从大到小后) 第k+1条边最小】通信线路

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

单片机GD32F303RCT6 (Macos环境)开发 (三十四)—— 数字加速度计 (ADXL345)

数字加速度计 (ADXL345)- 计算xyz轴重力值 1、i2c总线读取 1、接线 上一节的软件模式i2c的方式,选择PB10(SCL) PB11(SDA)。 GD32 ADXL345PB10 --------------- SCLPB11 --------------- SDA3.3 --…

Eclipse 教程 完结

Eclipse 快捷键 关于快捷键 Eclipse 的很多操作都提供了快捷键功能,我们可以通过键盘就能很好的控制 Eclipse 各个功能: 使用快捷键关联菜单或菜单项使用快捷键关联对话窗口或视图或编辑器使用快捷键关联工具条上的功能按钮 Eclipse 快捷键列表可通过…

《crossfire》游戏分析

文章目录 一、 穿越火线简介和定位二、 游戏发行三、 用户基础四、 游戏玩法枪王排位团队竞技爆破模式歼灭模式突围模式幽灵模式生化模式个人竞技挑战模式跳跳乐地图工坊 五、 游戏竞技公平性cf竞技公平性 六、CF火热到现在的原因分析1.时代、空间背景2.用户基础3.丰富的游戏模…

【iOS】—— nil、Nil、NULL和NSNull学习

nil、Nil、NULL和NSNull 文章目录 nil、Nil、NULL和NSNullnilNSNullNilNULL总结: 我们先来看看这几个苹果官方文档的解释: nil:Defines the id of a null instance.(定义空实例的id)Nil:Defines the id of…

给编程初学者的一封信

提醒:以下内容仅做参考,具体请自行设计。 随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论 一、自学编程需要注意什么? 要有足够的时间、精力等…

大数据治理入门系列:数据目录

在元数据管理一文中,我们曾将数据比喻为一本本的书,将书的作者、出版时间等信息比喻为元数据。试想一下,假如你是一名新任的图书管理员,如何快速掌握图书馆的馆藏情况呢?假如你是一名读者,如何快速找到你需…

Redis GEO功能详细介绍与实战

一、概述 Redis的Geo功能主要用于存储地理位置信息,并对其进行操作。该功能在Redis 3.2版本新增。Redis Geo操作方法包括: geoadd:添加地理位置的坐标;geopos:获取地理位置的坐标;geodist:计算…

第五届湖北省大学生程序设计竞赛(HBCPC 2023)vp赛后补题

Problem - B - Codeforces 思路: 数位dp,如果我们暴力的计算的状态的话,显然就是记录每个数字出现几次。但是显然这样难以发挥数位dp的记忆化功效,因为只有出现次数相同,你是什么数字,实际是无所谓的。所…

I2C学习笔记——I2C协议学习

1、I2C简介:一种简单、双线双向的同步串行总线,利用串行时钟线(SCL)和串行数据线(SDA)在连接总线的两个器件之间进行信息传递; 数据传输是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号。在总线空闲状态时&a…

【Linux C】基于树莓派/香橙派的蓝牙服务端——支持多蓝牙设备接入

一、需求 在树莓派/香橙派上利用开发板自带的蓝牙作为一个蓝牙服务端(主机),允许外来设备(从机)通过蓝牙接入进行通信,通信格式为透传方式;采用的编程语言为Linux C 二、环境准备 bluez安装 …

三波混频下的相位失配原理

原理推导 在四波混频情况下,实现零相位失配是一件很困难的事情。因为在四波混频中,相位调制和增益都依赖于相同的参数,即克尔非线性 γ \gamma γ。这个问题可以用嵌入在传输线上的辅助共振元件的复杂色散工程来部分解决。 但是在三波混频中…

ceph集群监控

文章目录 Ceph Dashboard启用dashboard插件dashboard启用ssl Promethues监控ceph启用prometheus模块配置prometheus采集数据grafana数据展示 Ceph Dashboard ceph-dashboard官方介绍:https://docs.ceph.com/en/latest/mgr/dashboard/ Ceph Dashboard是一个内置的c…

数据库系统概论---选择题刷题实训

(一)选择题 1.下列选项中,不属于关系模型三要素的是( C ) A.数据结构 B.数据操纵 C.数据安全 D.数据完整性规则 2.保证数据库…

【Spring】透过Spring源码查看Bean的命名转换规则

近期在写Spring项目的时候,需要通过注解的形式去替代之前直接将Bean存放在Spring容器这种方式,以此来简化对于Bean对象的操作,但是这样无法通过准确的Id去获取到相应的Bean对象了 测试观察 首先,如果要将指定的对象存放到Spring中…

SQL注入基础知识

文章目录 一、注入的分类1.基于服务器收到的响应2.基于处理输入的SQL查询(数据类型)3.基于程度和顺序的注入(哪里受了影响)4、基于注入点位置 二、系统函数1.字符串连接函数2.一般用于尝试的语句3.union操作符的介绍 总结 一、注入…

caught (in promise) RangeError: Maximum call stack size exceeded-vue前置导航守卫死循环

报错图 产生场景 1.近期在搭建移动端的架子时,在写路由守卫时,发现陷入死循环,报错意思是循环超出栈。。 2.后面排查了一圈问题之后,发现这个问题很小,但很难发现,在此记录。 3.vue 路由的导航守卫并不是…

类和对象【4】static成员、const对象、友元

全文目录 引言static成员static成员变量static成员函数 const对象友元友元函数友元类 总结 引言 通过前面的三篇文章,相信大家对类和对象已经有了一个基本的认识。 类和对象1(初识) 类和对象2(默认成员函数) 类和对象…