当前位置:网站首页>【数学建模】微分方程求解 | dsolve函数 | ode45函数
【数学建模】微分方程求解 | dsolve函数 | ode45函数
2022-08-08 05:25:00 【今天一定要洛必达】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
参考教材。数学实验:基于matlab软件
一、微分方程解析解(dsolve函数)
1.1 例子一

如果不考虑初值条件直接求解:
y=dsolve('D2y=sin(2*x)-y','x');
第一个‘’是微分方程,第二个‘’是自变量
得到结果如下(包含未知参数C1C2):

如果考虑初值条件直接求解:
y=dsolve('D2y=sin(2*x)-y','y(0)=0,Dy(pi)=0','x');
相比于无初值条件只是中间多了‘’
但是此时matlab会报错,是因为新版本matlab在求解微分方程时需要声明“谁是谁的函数”,这里就是y是x的函数

修改后不报错了
syms y(x);
y=dsolve('D2y=sin(2*x)-y','y(0)=0,Dy(pi)=0','x');
y
那如果想画图展示一下呢?如果直接使用plot如下:
syms y(x);
y=dsolve('D2y=sin(2*x)-y','y(0)=0,Dy(pi)=0','x');
plot(0:0.01:pi,y)
直接会报错:
这是因为此时得到的解析解y是字符串,直接画图是不行的。
修改后:
syms y(x);
y=dsolve('D2y=sin(2*x)-y','y(0)=0,Dy(pi)=0','x');
plot(0:0.01:pi,subs(y,0:0.01:pi));
xlabel('x');ylabel('y');title('解析解')
结果如下:
二、微分方程数值解(ode45函数)
1.1例子1

从上面我们可以看到,教材把一个二阶微分方程降阶了,变成了两个微分方程。我们这里编的程序是根据我自己的习惯来的,和教程上不一样。
代码如下(示例):
[t,x] = ode45(@model,[0:0.1:6],[0,1]);
plot(t,x(:,1),t,x(:,2));
legend('y(x)','y\prime(x)')
function dx = model(t,x)
dx = zeros(2,1);
dx(1) = x(2);
dx(2) = 4*sin(8*t)-3*x(1);
end
结果如下所示:
1.2 例子2 阿波罗卫星运动轨迹

同理,我们依然给他降降阶,变成下面:
代码如下(示例):
边栏推荐
- 2022-08-07 mysql/stonedb slow SQL-subquery-semi-join
- cs软件ui构建办法
- 顺序表(下)
- 预处理笔记
- 【OAuth2】十八、OIDC的认识应用
- 云计算和云服务,云计算
- 28. Anomaly detection
- Object.prototype.toString()如何判断数据类型及注意点
- 【多任务CTR】阿里ESMM:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conve
- Week 8 Generative Adversarial Networks
猜你喜欢
随机推荐
【Redis】Redis学习——事务
力扣84 双周赛 t4 6144 和力扣305周赛t4 6138
走进音视频的世界——RGB与YUV格式
CAP定理实例分析
Eighteen, OIDC OAuth2 】 【 the understanding of the application
Rust开发——Struct使用示例
Single host docker builds redis-cluster
Typescript 命名空间
OLTP和OLAP问题的个人总结
Style of DataGrid in wpf
28.异常检测
【OAuth2】十八、OIDC的认识应用
TCP/IP基本实现
硬盘基础知识
顺序表(下)
【u-boot】u-boot的驱动模型分析
VSCode已经设置过为中文但变成英文的解决办法
Sqlmap + dnslog injection of repetition
C语言框架FreeSwitch自定义事件介绍与使用示例
Error: [Intervention] Unable to preventDefault inside passive event listener due to target ...









