Моделирование в Matlab — проблема сопровождения ракет

математика

Математическое моделирование рассматривается в конце семестра, и с целью подведения итогов пишется блог.В основном основное внимание уделяется построению модели примера и реализации части кода.Читатели могут исправить недостатки.

Использование набора инструментов дифференциального решения Matlab

  • решать численно

dsolve('уравнение 1','уравнение 2',...,'уравнение n','начальные условия','независимые переменные')

  • Аналитическое решение

[t, x] = решатель ('f', ts, x0, параметры)

Для получения подробных инструкций, пожалуйста, обратитесь к сообщению в блогеРешение дифференциальных уравнений Matlab

Ракетная проблема

Введение проблемы

  • Предположим, что корабль А в начале координат запускает ракеты по кораблю В в точке А(1, 0) по оси абсцисс, а головная часть ракеты всегда нацелена на корабль В. Если корабль В движется с максимальной скоростьюv0v_0(Постоянная) При движении по прямой линии, параллельной оси Y, скорость ракеты равна 5v0v_0, найти уравнение кривой работы ракеты. Какое расстояние пройдет корабль Б, прежде чем в него попадет ракета?

在这里插入图片描述

Построение модели и решение

1. Аналитический метод

Установление модели: пусть положение ракеты в момент времени t равно P(x(t), y(t)), а корабль B находится в точке Q(1,V0tV_0t), из вопроса (головка ракеты всегда направлена ​​на корабль Б), касательная ракеты в точке p дуги движенияy'=v0ty1xy^{\prime}=\frac{v_{0} t-y}{1-x}которыйv0t=(1x)y'+y(1)v_{0} t=(1-x) y^{\prime}+y(1)А из смысла названия (скорость ракеты в 5 раз больше скорости корабля) есть:0x1+y'2dx=5v0t(2)\int_0^x {\sqrt {1 + y{'^2}} } {\rm{d}}x = 5{v_0}t (2)Имеются уравнения (1) и (2), дифференциально-дифференциальное уравнение можно получить в виде:(1x)y''=151+y'2(3)(1-x) y^{\prime \prime}=\frac{1}{5}\sqrt{1+y^{\prime2}} (3)Уравнение начального значения:y(0)=0y(0) = 0,y'(0)=0y'(0) = 0, который может быть решен Matlab:y=58(1x)45+512(1x)65+524y = - \frac{5}{8}{(1 - x)^{\frac{4}{5}}} + \frac{5}{{12}}{(1 - x)^{\frac{6}{5}}} + \frac{5}{{24}}

2. Численное решение

Преобразуя приведенное выше уравнение в уравнение первого порядка, мы можем установитьy1=y,y2=y'y_1=y,y_2=y', подставляя в (3), чтобы получить{y1'=y2y2'=151+y12/(1x)\left\{\begin{array}{l}y_{1}^{\prime}=y_{2} \\ y_{2}^{\prime}=\frac{1}{5} \sqrt{1+y_{1}^{2}} /(1-x)\end{array}\right.Решить с помощью Matlab:

%定义函数
function dy=eq1(x,y)
    dy=zeros(2,1);
    dy(1)=y(2);
    dy(2)=1/5*sqrt(1+y(1)^2)/(1-x);
end

调用
x0=0;
xf=0.9999;
[x,y]=ode15s('eq1',[x0 xf],[0 0]);
plot(x,y(:,1),'-') 
hold on
y=0:0.01:2;
plot(1,y,'*')

在这里插入图片描述Как видно из рисунка, ракета попала в Корабль Б примерно в точку (1,0,2).

3. Параметрическое уравнение

Полагая, что вышеуказанный вывод остается неизменным, на этом основании скорость ракеты устанавливается равнойww, то в точке P находятся:(dxdt)2+(dydt)2=w2(1){({{{\rm{d}}x} \over {{\rm{d}}t}})^2} + {({{{\rm{d}}y} \over {{\rm {д}}т}})^2} = {ш^2}(1)При этом ракета всегда нацелена на Корабль Б, то есть вектор скорости ракеты параллелен вектору положения Корабля Б, поэтому имеются:

\ frac {\ mathrm {d} x} {\ mathrm {d} t} \\ \ frac {\ mathrm {d} y} {\ mathrm {d} t} \ end {array} \ right) = \ lambda \ left(\begin{array}{l} Xx \\ Yy \end{array}\right), \quad \lambda>0(2)$$ будет $$\left\{\begin{array}{l} \ frac {\ mathrm {d} x} {\ mathrm {d} t} = \ frac {w} {\ sqrt {(Xx) ^ {2} + (Yy) ^ {2}}} (Xx) \\ \ frac {\ mathrm {d} y} {\ mathrm {d} t} = \ frac {w} {\ sqrt {(Xx) ^ {2} + (Yy) ^ {2}}} (Yy) \ end { array}\right.(3)$$ Предположим, что скорость корабля B равна 1, тогда w=5, X=1, Y=t, параметр траектории ракеты в это время: $$\left\{ \begin{массив} {l} \frac{\mathrm{d} x}{\mathrm{d} t}=\frac{5}{\sqrt{(1-x)^{2}+(ty)^ {2}}} (1-x) \\ \frac{\mathrm{d} y}{\mathrm{d} t}=\frac{5}{\sqrt{(1-x)^{2}+ (ty)^{ 2}}}(ty) \\ x(0)=0, y(0)=0 \end{array}\right.$$ Решение Matlab: ```php function dy=eq2(t ,y) dy= нули(2,1); dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(ty(2))^2) ; dy(2) =5*(ty(2))/sqrt((1-y(1))^2+(ty(2))^2); end % call [t,y]=ode45(' eq2',[0 2],[0 0]); Y=0:0,01:2; plot(1,Y,'-') удерживается на plot(y(:,1),y(:,2), '*') ` `` ![здесь вставьте описание изображения](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c12063ad33dd4333b64448e9ae4d3075~tplv-k3u1fbpfcp-zoom-1 .image) Как видно из рисунка, ракета окончательно попала в цель примерно на (1, 0,2). Здесь мы пытаемся использовать идею дихотомии, чтобы получить более точный ответ, ... tf=0,21 - это доступное изображение решения: ![Вставьте сюда описание изображения](https://p3-juejin.byteimg. com/tos -cn-i-k3u1fbpfcp/b4f9a6123c24433383fcd64a18b1adfa~tplv-k3u1fbpfcp-zoom-1.image), чтобы получить более точный ответ.