编写Matlab程序求常微分方程组的解
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/03 03:30:25
编写Matlab程序求常微分方程组的解
运行成功再给分
![](http://img.wesiedu.com/upload/5/e4/5e49ad7d490f48668f6c496b11a72efa.jpg)
运行成功再给分
![](http://img.wesiedu.com/upload/5/e4/5e49ad7d490f48668f6c496b11a72efa.jpg)
![编写Matlab程序求常微分方程组的解](/uploads/image/z/4748942-38-2.jpg?t=%E7%BC%96%E5%86%99Matlab%E7%A8%8B%E5%BA%8F%E6%B1%82%E5%B8%B8%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E7%BB%84%E7%9A%84%E8%A7%A3)
先在一个空白的M文件里创建一个M函数,文件名要与函数名相同,例如:
文件名:differential.m
函数内容:
function [dxdt] = differential(t,x)
% x:二维列向量,x(1)代表f(t)的值,x(2)代表g(t)的值
% dxdt:与x对应的对时间导数项
% 这里假设a=b=1
a = 1;
b = 1;
dxdt = zeros(2,1);
dxdt(1) = a*x(1)+b*x(2);
dxdt(2) = -a*x(1)+b*x(2);
end
M函数编写完成后,在相同文件目录下,再建一个空的M文件,文件名任意,写入如下内容:
t0 = 0; % 起始时刻
tf = 10; % 终止时刻
f0 = 10; % f的初始值
g0 = 10; % g的初始值
Hfunc = @differential; % 创建函数句柄
[T,Y] = ode45(Hfunc,[t0 tf],[f0 g0]); % 解算
%运行完后,结果以列向量形式存储,时间存在T中,f存在Y的第一列中(Y(:,1)),g存在Y的第
%二列中(Y(:,2)),可以执行如下绘图指令查看结果
figure(1)
grid on
plot(T,Y(:,1)) % 绘制t-f曲线
figure(2)
grid on
plot(T,Y(:,2)) % 绘制t-g曲线
文件名:differential.m
函数内容:
function [dxdt] = differential(t,x)
% x:二维列向量,x(1)代表f(t)的值,x(2)代表g(t)的值
% dxdt:与x对应的对时间导数项
% 这里假设a=b=1
a = 1;
b = 1;
dxdt = zeros(2,1);
dxdt(1) = a*x(1)+b*x(2);
dxdt(2) = -a*x(1)+b*x(2);
end
M函数编写完成后,在相同文件目录下,再建一个空的M文件,文件名任意,写入如下内容:
t0 = 0; % 起始时刻
tf = 10; % 终止时刻
f0 = 10; % f的初始值
g0 = 10; % g的初始值
Hfunc = @differential; % 创建函数句柄
[T,Y] = ode45(Hfunc,[t0 tf],[f0 g0]); % 解算
%运行完后,结果以列向量形式存储,时间存在T中,f存在Y的第一列中(Y(:,1)),g存在Y的第
%二列中(Y(:,2)),可以执行如下绘图指令查看结果
figure(1)
grid on
plot(T,Y(:,1)) % 绘制t-f曲线
figure(2)
grid on
plot(T,Y(:,2)) % 绘制t-g曲线