【数学建模】14 微分方程模型求解方法

article/2025/10/10 18:27:44

目录

  • 1 MATLAB数值微积分
  • 2 微分方程数值解
  • 3 MATLAB求解常微分方程
  • 4 课后习题

1 MATLAB数值微积分

(1)差分与微分
• taylor 符号泰勒展开
• polyder 多项式求导
• diff 数值差分或符号求导

dx = diff(x) %返回向量x的差分

• gradient 数值梯度

Fx = gradient(F,x) % 返回向量F表示的一元函数沿x方向的数值梯度(F'(x)),其中,x是与同维度的向量.x是自变量,F是因变量
[Fx,Fy] = gradient(F,x,y)%返回矩阵F表示的二元函数的数值梯度(F'x,F'y),当F为m*n矩阵时x、y分别为n维和m维的向量。x和y是因变量

举例,求梯度,两种方式
第一种:通过x和y的差分比.误差比较大
第二种:用gradient函数求。两端的数据偏大,中间的数据比较准确

clear
x = [1 1.1 1.2 1.3];
y = x.^3;
%第一种方式
dy = diff(y)./diff(x) 
%第二种方式
dy = gradient(y,x)

(2)积分
• trapz:梯形法积分

Z = trapz(x,y)% x是表示积分区间的离散化向量,y是与x同维数的向量,表示被积函数;z返回积分的近似值。

• dblquad:矩形区域的二重积分(二重积分)

Z = dblquad('Fun',a,b,c,d)
%其中:Fun表示被积函数的M函数名,a、b表示x的上下限,c,d表示x的上下限

• quad:变步长数值积分

Z = quad('Fun',A,B,Tol)
% 其中:Fun表示被积函数的M函数名,A、B上下限,Tol精度,缺省值为1e-3

• int:符号积分

int(s) %符号表达式s的不定积分
int(s,v)% 符号表达式s关于变量v的不定积分
int(s,a,b)%表达式s的定积分,a,b分别为下限和上限

• quad8:高精度数值积分
举例1,计算积分: z = ∫ − 1 1 e − x 2 d x z = \int^{1}_{-1}{e^{-x^2}dx} z=11ex2dx

clear
x = -1:0.1:1;
y = exp(-x.^2);
% 方法一
trapz(x,y)
% 方法二
quad(@(x)exp(-x.^2),-1,1)

举例2,计算二重积分 z = ∫ 0 1 d x ∫ 0 5 s i n ( x y ) d y z = \int^{1}_{0}{dx}\int^{5}_{0}{sin(xy)dy} z=01dx05sin(xy)dy

Z = dblquad(@(x,y)sin(x.*y),0,1,0,5)

举例3,计算积分 z = ∫ 0 1 e − x + s i n ( x ) d x z = \int^{1}_{0}{e^{-x} + sin(x) dx} z=01ex+sin(x)dx

t2 = int(exp(-x) + sin(x),0,1)
t2 = vpa(t2) %求近似解

2 微分方程数值解

在这里插入图片描述

3 MATLAB求解常微分方程

• ode23 二、三阶Runge-Kutta法
• ode15s 刚性方程组解法
• ode45 四、五阶Runge-Kutta法
• dsolve 符号解析解

[tout,yout] = ode45('yprime',tspan,y0)
%这是字符串yprime是用以表示f(t,y)的M文件名
%tspan = [t0,tf] 表示自变量初始值t0和终值tf.y0表示初值向量y0。
%输出列向量tout表示节点(t0,t1,..,tn)
%输出矩阵yout表示数值解,每一列对应y的一个分量。

举例1,解方程
y ′ = t − 2 t y y ( 0 ) = 1 , 0 < t < 1 y' = t- \frac{2t}{y} \\y(0) = 1,0<t <1 y=ty2ty(0)=1,0<t<1

function f = fun(t,y)
f = y-2*t./y
f = f(:);
end
[t,y] = ode45('fun',[0,1],1);
plot(t,y)

举例2,解高阶方程
y ′ ′ = c c o s ( 2 x ) − y y ( 0 ) = 1 y ′ ( 0 ) = 0 y'' = ccos(2x)- y \\ y(0) = 1 \\ y'(0) = 0 y=ccos(2x)yy(0)=1y(0)=0

fun = dsolve('D2y = cos(2*x)-y','y(0)=1','Dy(0)=0','x');%D2表示二阶导数,D表示一节导数
simplify(fun)%简化的方式

举例3,求解方程组
f ′ = f + g g ′ = − f + g f ( 0 ) = 1 g ( 0 ) = 2 f' = f+g\\g' = -f +g\\f(0)=1\\g(0)=2 f=f+gg=f+gf(0)=1g(0)=2

S = dsolve('Df=f+g','Dg =g-f','f(0)=1','g(0)=2');%求出的S是一个结构体
S.f
S.g

4 课后习题

计算下列微分方程组

u’=0.5u(w-u)/v
v’=0.5(w-u)
w’=[0.9-1000(w-y)-0.5w(w-u)]/z
z’=0.5(w-u)
y’=-100(y-w)
界条件为u(0)=v(0)=w(0)=1,z(0)=-10,w(1)=y(1)

在这里插入图片描述
这题用dsolve去求解本人认为思路是对的,但是这样输出的结果是S =[ empty sym ]
有可能答案不对,如果有知道的小伙伴欢迎指出。

 S = dsolve('Du=(0.5)*u*(w-u)/v','Dv =(-0.5)*(w-u)','Dw=[0.9-1000*(w-y)-(0.5)*w*(w-u)]/z',...'Dz=0.5*(w-u)','Dy=-100*(y-w)','u(0)=1','v(0)=1','w(0)=1','z(0)=-10','w(1)=y(1)')%求出的S是一个结构体

还有一种思路是用ode45去求精确值,但是本人不知道如何代入w(1)=y(1)这个条件。给出程序模型,表示本人的思路,如果后面明白了,会补充上。

%主程序x0=[1;1;1;-10;?];%初始条件[t,yy]=ode45(@funtest,[0,10],x0);%10是随便给出的,该括号内内容表示t的取值区间%函数
function S=funtest(t,x)
u=(0.5)*x(1)*(x(3)-x(1))/x(2);
v=-0.5*(x(3)-x(1));
w=[0.9-1000*(x(3)-x(5))-(0.5)*x(3)*(x(3)-x(1))]/x(4);
z=0.5*(x(3)-x(1));
y=-100*(x(5)-x(3));
S=[u;v;w;z;y];
end

http://chatgpt.dhexx.cn/article/mLgG97AH.shtml

相关文章

数学建模-微分方程模型

引用&#xff1a;https://wenku.baidu.com/view/35ea8f8a2dc58bd63186bceb19e8b8f67c1cef82.html?rec_flagdefault&sxts1547780910061 微分方程建模是数学建模的重要方法&#xff0c;因为许多实际问题的数学描述将导致求解微分方程的定解问题。把形形色色的实际问题化成微…

18.微分方程模型

微分方程模型 1.应用matlab求解微分方程模型 2.例题 1&#xff09; dsolve(Du1u^2,t)2&#xff09; ydsolve(Dyexp(x),y(0)exp(1),x); ezplot(y,[-10,10])3&#xff09; ydsolve(D2y4*Dy29*y0,y(0)0,Dy(0)15,x); ezplot(y,[1,4])4&#xff09; [x,y,z]dsolve(Dx2*x-3*…

数学建模:微分方程模型— Python 求解

目录 例&#xff1a;使用显式欧拉法和四阶龙格库塔法计算Lorenz模型scipy.integrate.odeint 求解微分方程模型scipy.integrate.solve_ivp 求解微分方程模型 使用 Python 求常微分方程的数值求解通常是基于一阶方程进行的&#xff0c;高阶微分方程要化成一阶方程组。 例&#x…

数学建模预测方法之 微分方程模型

微分方程模型 短、中、长期的预测都适合。 反应事物内部规律及其内在关系&#xff0c;但由于方程的建立是以局部规律的独立性假定为基础&#xff0c;当作为长期预测时&#xff0c;误差较大&#xff0c;且微分方程的解比较难以得到。 具体案例 传染病的预测模型、经济增长&a…

常见的微分方程模型(1)

学习了几个常见的微分方程模型&#xff0c;比如传染病模型和经济增长模型 1.传染病模型 已知已感染人数&#xff08;病人&#xff09;的比例为 i(t) &#xff0c;假设每个病人每天的有效接触的人数为&#xff0c;在一块封闭区域内&#xff0c;总人数为N &#xff0c;健康人的…

微分方程模型的求解方法

微分方程模型的求解方法 在实际问题中经常需要寻求某个变量y随另一变量t的变化规律,yy(t)这个函数关系式常常不能直接求出。然而有时容易建立包含变量及导数在内的关系式&#xff0c;即建立变量能满足的微分方程&#xff0c;从而通过求解微分方程对所研究的问题进行解释说明。…

微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路

微分方程真的能结合深度神经网络&#xff1f;真的能用来理解深度神经网络、推导神经网络架构、构建深度生成模型&#xff1f;我们将从鄂维南、董彬和陈天琦等研究者的工作中&#xff0c;窥探微分方程与深度学习联袂前行的路径。 近日&#xff0c;北京智源人工智能研究院开展了第…

微分方程模型——偏微分方程

1. 简介 微分方程&#xff1a;描述自然界中存在的物理现象和普遍规律。 常微分方程&#xff08;ODE&#xff09;偏微分方程&#xff08;PDE&#xff09; 偏微分方程理论&#xff1a; 物理/工程问题————翻译&#xff08;建模&#xff09;/物理工程规律————》数学问题…

数学建模——微分方程模型的求解

文章目录 微分方程的符号解法微分方程数值解法一些常用的微分方程模型&#xff08;学习中&#xff0c;持续更新&#xff09;Logistics模型传染病模型 本文介绍微分方程的求解&#xff0c;不介绍微分方程的建立方法 微分方程的符号解法 求解微分方程的符号解主要是依赖于Python…

微分方程模型_常微分方程模型简介

注:本文是刘然对常微分方程模型的简介 什么是常微分方程模型 常用的回归分析聚焦于直接建立响应变量和协变量之间的关系,之后根据建立的模型进行分析和预测,比如常见的线性回归模型:。 而如果我们感兴趣的变量是随时间变化的,那么还有另外一种常用的建模方式:建立变量与变…

数学建模【微分方程模型(介绍、分析方法、数值模拟、传染病问题的建模和分析、经济增长模型、人口增长预测和控制模型)】

&#x1f680;【MOOC数学建模与实验---学习笔记---整理汇总表】&#x1f680; &#x1f308;【学习网址&#xff1a;MOOC---郑州轻工业大学---数学建模与实验】&#x1f308; 【第1、2章】【概述、软件介绍】【第3章】【数据处理方法】【第4章】【规划模型】【第5章】【图与网络…

数学建模理论自制笔记1:微分方程及其模型

1、微分方程基础概念&#xff1a; 微分方程&#xff1a;含有自变量、未知函数及未知函数的导数或微分的等式&#xff0c;其定义式为&#xff1b;常微分方程&#xff08;Ordinary Differential Equations, ODE&#xff09;&#xff1a;不含偏导数或偏微分的微分方程&#xff0c…

微分方程模型

微分方程模型简介 在研究生物、经济等学科的实际问题时&#xff0c;常常会联系到某些变量的变化率或导数&#xff0c;这样所得到变量之间的关系式就是微分方程。微分方程反映的是变量之间的间接关系&#xff0c;因此&#xff0c;要得到直接关系&#xff0c;就得求解微分方程。…

【数学建模】常用微分方程模型 + 详细手写公式推导 + Matlab代码实现

文章目录 一、学习内容二、学习时间三、学习产出3.1 微分方程基本概念3.2 微分方程在数学建模中的应用3.3 微分方程常用模型3.3.1 人口增长模型3.3.1.1 指数增长模型(马尔萨斯模型)3.3.1.2 阻滞增长模型(Logistic模型)3.3.1.3 人口模型小结 3.3.2 传染病模型3.3.2.1 SI模型3.3.…

数学建模之微分方程模型详解

全文共10110个字&#xff0c;码字总结不易&#xff0c;老铁们来个三连&#xff1a;点赞、关注、评论 作者&#xff1a;[左手の明天] 原创不易&#xff0c;转载请联系作者并注明出处 版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c…

Station P2(ROC-RK3568-PC) 裸机开发5_RKUBoot TPL

完整编译 u-boot-next-dev&#xff1a;./make.sh rk3568 2>&1 >log.txt 生成两个主要的文件是&#xff1a; RKLoader&#xff1a;rk356x_spl_loader_v1.08.111.bin Uoot FIT Image&#xff1a;uboot.img 两个都是有特定格式的混合文件。 RKLoader 的生成&#xf…

tpl怎么搞_emlog后台模板设置功能插件tpl_options

到目前为止emlog都没有集成模板后台设置功能&#xff0c;可能是和emlog一直走轻量级路径有关。但是集成模板后台配置功能&#xff0c;无论是对emlog模板开发者还是用户来说&#xff0c;其作用都非常大&#xff0c;可以使一些模板功能不需要修改模板文件就可以改变设置&#xff…

tpl.js的使用

tpl.js的使用 tpl.js简介1.如何写模板2.如何引用模板tpl.js的下载地址 tpl.js简介 tpl.js是用于和require.js相结合的html模板,和template.js的用法非常相似&#xff0c;我们可以从以下几点来学习它&#xff0c;我们先来看一下小案例中的目录结构&#xff1a; 1.如何写模板 …

vscode配置tpl文件关联html语言

使用beego框架的时候&#xff0c;有个操作&#xff0c;需要将tpl文件修改vscode识别成html&#xff1b; 有两种方法&#xff1a; 方法一&#xff1a;页面配置 ctrl shift p 选择打开工作区设置 找到Files:Associations文件关联 添加项&#xff1a;*.tpl html 方法二&…

基于JAVA的TPL解释器

基于JAVA的TPL解释器 编写一个Java程序&#xff0c;该程序读取一个文件中的TPL指令&#xff08;见下文&#xff09;&#xff0c;并执行这些指令。该语言编写的程序每一行都必须以这些单词中的一个开头&#xff0c;不区分大小写。具体代码可参考链接 https://download.csdn.net…