06 微分方程式モデル演習

  1. Matlab を使用して微分方程式y ' = − 2 y + 2 x 2 + 2 x , y ( 0 ) = 1 y'=-2y+2x^{2}+2x,y\left( 0\right) = を解きます。 1y=2+2倍_2+2 × 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')

画像-20230717150216016

  1. Matlab を使用して微分方程式y ' = − 2 y + 2 x 2 + 2 x , y ( 0 ) = 1 y'=-2y+2x^{2}+2x,y\left( 0\right) = を解きます。 1y=2+2倍_2+2 × 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('数值解','符号解')

画像-20230717223523597

  1. Matlab を使用して、ローレンツ モデル システムの 3 次元進化軌跡を提示し、システム軌跡の進化に対する基本的に同様の値を持つ 2 つの異なる初期条件の影響を決定し、それによって初期モデルに対するモデルの感度を分析してください。価値。
% 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)');

無題

初期条件の小さな変化により、システムの軌道が急速に分離される可能性があります

4. ジョガーが飛行機上で次のように走ります: X=10+20cost, Y=20+15sint. 突然犬が彼を攻撃します. 犬は原点からスタートしてジョガーに向かって一定の速度で走ります w. 犬は移動します.方向は常にジョガーの方向です。それぞれ w=20 と w=5 のときの犬の移動軌跡を求めます。

ヒント:

画像-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

画像-20230717150829283

画像-20230717150815030

おすすめ

転載: blog.csdn.net/qq_61228493/article/details/131840590
おすすめ