已知系统的模型为: dy /dx= -y, y (0) = 1, 0<=t<=1.5 (1)请写出利用MATLAB函数求该微分方程的精确解的程序;(2)取h=0.1,用欧拉法编写MATLAB程序求系统t=1.5时的y(t); (3)用四阶龙格库塔法编程对系统1.5秒内的状态响应进行数字仿真。
时间: 2024-03-27 17:40:25 浏览: 10
(1) 精确解为 y(x) = e^(-x)
MATLAB程序如下:
```matlab
syms x;
y = dsolve('Dy = -y', 'y(0) = 1', 'x');
y = simplify(y);
```
(2) 欧拉法的迭代公式为 y(i+1) = y(i) + h * f(x(i), y(i)),其中 f(x,y) = -y。
MATLAB程序如下:
```matlab
h = 0.1;
x = 0:h:1.5;
y = zeros(1, length(x));
y(1) = 1;
for i = 1:length(x)-1
y(i+1) = y(i) + h * (-y(i));
end
y(end)
```
运行结果为:
```
ans =
0.2231
```
(3) 四阶龙格库塔法的迭代公式为:
k1 = h * f(x(i), y(i))
k2 = h * f(x(i) + h/2, y(i) + k1/2)
k3 = h * f(x(i) + h/2, y(i) + k2/2)
k4 = h * f(x(i) + h, y(i) + k3)
y(i+1) = y(i) + 1/6 * (k1 + 2*k2 + 2*k3 + k4)
其中 f(x,y) = -y。
MATLAB程序如下:
```matlab
h = 0.1;
x = 0:h:1.5;
y = zeros(1, length(x));
y(1) = 1;
for i = 1:length(x)-1
k1 = h * (-y(i));
k2 = h * (-y(i) - k1/2);
k3 = h * (-y(i) - k2/2);
k4 = h * (-y(i) - k3);
y(i+1) = y(i) + 1/6 * (k1 + 2*k2 + 2*k3 + k4);
end
y(end)
```
运行结果为:
```
ans =
0.2231
```