06微分方程模型练习

  1. 用Matlab求解微分方程 y ′ = − 2 y + 2 x 2 + 2 x , y ( 0 ) = 1 y'=-2y+2x^{2}+2x,y\left( 0\right) =1 y=2y+2x2+2x,y(0)=1
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 ′ = − 2 y + 2 x 2 + 2 x , y ( 0 ) = 1 y'=-2y+2x^{2}+2x,y\left( 0\right) =1 y=2y+2x2+2x,y(0)=1,0≤x≤0.5的符号解和数值解;并在同一个图形界面上画出数值解和符号解的曲线。
% 使用 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 模型系统的三维演化轨迹,并判断取值基本接近的两个不同初始条件对系统轨线演化的影响,由此分析该模型对初值的敏感性。
% 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

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('跑道', '狗的运动轨迹');
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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值