1. 用Matlab求解微分方程y=2y+2x2+2x,y(0)=1y'=-2y+2x^{2}+2x,y\left( 0\right) =1
1
2
y1 = dsolve('Dy=-2*y+2*x.^2+2*x')
y2 = dsolve('Dy=-2*y+2*x.^2+2*x','y(0)=1','x')

image-20230717150216016

  1. 用Matlab分别求解微分方程y=2y+2x2+2x,y(0)=1y'=-2y+2x^{2}+2x,y\left( 0\right) =1,0≤x≤0.5的符号解和数值解;并在同一个图形界面上画出数值解和符号解的曲线。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
% 使用 ode45 求解微分方程
[x, y] = ode45(@f3, [0, 0.5], 1);

yFunc = matlabFunction(y2);%将符号解转换为函数句柄
x_values = linspace(0, 0.5, 7);
y_values = yFunc(x_values);

% 绘制结果

plot(x,y,'--r')
hold on
plot(x_values,y_values,'-k')
xlabel('x');
ylabel('y');
legend('数值解','符号解')

image-20230717223523597

  1. 请运用 Matlab呈现Lorenz 模型系统的三维演化轨迹,并判断取值基本接近的两个不同初始条件对系统轨线演化的影响,由此分析该模型对初值的敏感性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
% Lorenz 系统参数
sigma = 10;
rho = 28;
beta = 8/3;

% 定义 Lorenz 系统的微分方程
dxdt = @(t, x) [sigma * (x(2) - x(1));
x(1) * (rho - x(3)) - x(2);
x(1) * x(2) - beta * x(3)];

% 模拟 Lorenz 系统演化
[t1, y1] = ode45(dxdt, [0, 100], [1; 0; 0]);
[t2, y2] = ode45(dxdt, [0, 100], [1.001; 0; 0]);

% 绘制三维演化轨迹
figure;
subplot(2,2,1);
plot3(y1(:, 1), y1(:, 2), y1(:, 3), 'b', 'LineWidth', 1.5);
hold on;
plot3(y2(:, 1), y2(:, 2), y2(:, 3), 'r', 'LineWidth', 1.5);
xlabel('x');
ylabel('y');
zlabel('z');
title('Lorenz 系统三维演化轨迹');
legend('初始条件1', '初始条件2');
%view(-35, 15); % 设置视角
subplot(2,2,2);
plot(t1,y1(:,1),t2,y2(:,1))
title('X(1)');
subplot(2,2,3);
plot(t1,y1(:,2),t2,y2(:,2))
title('X(2)');
subplot(2,2,4);
plot(t1,y1(:,3),t2,y2(:,3))
title('X(3)');

untitled

初始条件微小变化会导致系统轨迹快速分离

4.一个慢跑者在平面上按如下规律跑步:X=10+20cost,Y=20+15sint.突然有一只狗攻击他,这只狗从原点出发,以恒定速率w跑向慢跑者,狗运动方向始终指向慢跑者。分别求出w=20,w=5时狗的运动轨迹。

提示:

image-20230717151109041

1
2
3
4
5
6
7
8
9
10
11
12
clf;
[t1,y1] = ode45('f4',[0,10],[0;0]);
T = 0:0.1:2*pi;
X = 10 + 20 * cos(T);
Y = 20 + 15 * sin(T);
plot(X,Y,'b*',y1(:,1),y1(:,2),'r')
title('w=20狗的运动轨迹');
legend('跑道', '狗的运动轨迹');
[t2,y2] = ode45('f5',[0,100],[0;0]);
plot(X,Y,'b*',y2(:,1),y2(:,2),'r')
title('w=5狗的运动轨迹');
legend('跑道', '狗的运动轨迹');
1
2
3
4
5
6
7
8
9
10
11
12
13
function dy = f4(t,y)
dy = zeros(2,1);
dy(1) = 20 * (10 + 20 * cos(t) - y(1)) / sqrt((10 + 20 * cos(t) - y(1))^2 + (20 + 15 * sin(t) - y(2))^2);
dy(2) = 20 * (20 + 15 * sin(t) - y(2)) / sqrt((10 + 20 * cos(t) - y(1))^2 + (20 + 15 * sin(t) - y(2))^2);

end

function dy = f5(t,y)
dy = zeros(2,1);
dy(1) = 5 * (10 + 20 * cos(t) - y(1)) / sqrt((10 + 20 * cos(t) - y(1))^2 + (20 + 15 * sin(t) - y(2))^2);
dy(2) = 5 * (20 + 15 * sin(t) - y(2)) / sqrt((10 + 20 * cos(t) - y(1))^2 + (20 + 15 * sin(t) - y(2))^2);

end

image-20230717150829283

image-20230717150815030

w = 20 时狗可以追上人,当w = 5时,狗不能追上人