注:首先计算微分方程的解析解,如果发现没有解析解,再用数值解
一、Matlab中求微分方程的数值解函数
[x,y]=solver('f',ts,x0,options)
1)x代表自变量
2)y代表函数值
3)solver代表求解函数,常用的为ode45->函数图像变化较为平稳,ode15s->函数图像存在突变(一个运行时间长时,换另一个)
4)ts=[t0,t1],代表自变量函数的初值和终值,也可以指定以一个向量
5)x0表示函数的初始值
6)options(可选):options=odeset(‘reltol’,’rt’,’abstol’,at),rt,at分别为设定的相对误差,默认为10e-3,10e-6
7)f表示由待解微分方程编写的m函数文件名
二、一阶微分方程的数值解
1、求解步骤:
1)化为标准型(等号左边为微分)如下图
2)带入函数求解
2、例子
例1(求方程):
题目:,初始值为y(0)=3,x范围为[0,2]
解:
1)化为标准型:
2)matlab求解如下:
2.1)新建一个m文件,用来编辑f函数
function dy = f(x,y) % dy是标准化后左边的式子,x是式子右边的自变量,y是因变量
dy = y - 2*x;
end
2.2)新建一个m文件用来计算结果
[x y] = ode45('f',[0,2],3); %x是自变量,y是因变量
figure(1)
plot(x,y,'*-')
axis([0 2 -inf inf])
grid on
3)运行结果
例2:(求方程组)
题目:
,自变量,初始值
解:
1)化为标准型(题目已经为标准型)
2)matlab代码
2.1)新建一个m文件,用来编辑f函数
function dy = f(x,y) % dy是标准化后左边的式子,x是式子右边的自变量,y是因变量
dy = zeros(3,1);
dy(1) = y(2)*y(3);
dy(2) = -y(1)*y(3);
dy(3) = -0.51*y(1)*y(2);
end
2.2) 新建一个m文件用来计算结果
[x, y] = ode45('f', [0 4*pi], [0 1 1]); % 这里的y是一个有3列的矩阵哦!x是自变量,y是因变量
plot(x, y(:,1), 'o', x, y(:,2), '*', x, y(:,3), '+')
legend('y1','y2','y3') % 加上标注
axis([0, 4*pi, -inf, +inf]) % 设置横坐标范围为0-4pi,纵坐标范围不需要设置,写成-inf到+inf
3)结果
三、高阶微分方程的数值解
1、步骤
1)标准化
高阶方程转化为一阶方程组合
2)按一阶求解
2、例子
1)标准化
2)matlab求解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38172.html