Примеры
1. Уравнение механического движения. Пусть материальная точка массы т движется под действием силы Fпо оси х. Обозначим tвремя ее движения, и — скорость, а — ускорение. Второй закон Ньютона, а = Fmпримет вид дифференциального уравнения, если записать ускорение, а как вторую производную: a=x’’.
Уравнение тх" = Fназывают уравнением, механического движения, где x = x(t)—неизвестная функция, ти F— известные величины. В зависимости от условий задачи по-разному и записываются различные дифференциальные уравнения.
2. Радиоактивный распад
— масса распадающего вещества. Количество распадающего вещества пропорционально количеству и времени, т.е. при имеем .Решение дифференциального уравнения-
. Дополнительные условия- , тогда задачаРешение задачи:
3.Движение системы N материальных точек.
Система уравнений Ньютона
, -масса, - радиус вектор i-ой точки, - сила воздействующая на i-ую точку.Частный случай колебания маятника
.При малых колебаниях
и тогда уравнение имеет вид: .4. Прогибание упругого стержня.
Если стержень однороден, то вдоль стержня постоянное касательное натяжение
. Тогда вертикальная сила в точке x, где смещение u(x). Если в каждой точке стержня действует внешняя сила то .Откуда
Рассмотрим частный случай
, тогда получаем уравнениеи его решение
.Дополнительные условия (закрепленные концы) -
. Тогда задача .Ответ:
5. Примеры решения задач в matlab
Задача 1. Построить семейство функций
( ) и найти их общие точки, при чём в объекте Figure подписать графики и точки, обозначить оси, подписать заголовок и использовать разные цвета для построенных графиков. При решении использовать функцию num2str(x), переводящее число x в строковую величину:Программа:
x=-2:0.1:2;
title('{\itf(x)=x^{n}}');
xlabel('x');
ylabel('y');
hFigure=gcf;
set(hFigure,'Color',[1 1 1]);
hText=text;
set(hText,'FontSize',[18]);
for n=2:4
y=x.^n;
hold on
hPlot=plot(x,y);
set(hPlot,'Color',[1.8/n 0.7 0.5]);
set(hPlot,'LineWidth',2);
if n~=2
for i=1:length(y)
s='';
if y(i)==y1(i)
hold on
plot(x(i),y(i),'ko');
s=['(' num2str(x(i)) ',' num2str(y(i)) ')'];
hText=text(x(i),y(i)+2, s); set(hText,'FontSize',[16]);
end
end
end
y1=y; s2=['n=' num2str(n)];
hText=text(1.5, 1.5^2*n-1, s2); set(hText,'FontSize',[14]);
end
Результат (рис. 12):
Задача 2. Написать программу-функцию, строящую график функции (funstr) и касательную к нему в точке х0.
Программа:
function kasat(funstr,x0)
f=sym(funstr); y0=subs(f,'x',x0); A=x0-1; B=x0+1; X=[A:(B-A)/100:B]; F=subs(f,'x',X);
Hline=plot(X,F); set(Hline,'LineWidth',2)
syms x
k=diff(f,x,1); K=subs(k,'x',x0); yt=sym('y0+k*(x-x0)');
yt=subs(yt,'k',K); yt=subs(yt,'x0',x0); yt=subs(yt,'y0',y0);
hold on
ezplot(yt,[A B])
plot(x0,y0,'o')
grid on
Результат (рис. 13): >> kasat('x^4',2)
Задача 3. Построить поверхность вращения графика функции заданной явно:
(где ), вокруг оси Ох.Результат (рис. 14)
Программа:
x1=0; x2=2; a=1;
u=x1:0.1:x2;
v=0:pi/20:2*pi;
[U,V]=meshgrid(u,v);
F=a*(exp(-U/a)+exp(U/a))/2;
X=U; Y=F.*cos(V); Z=F.*sin(V);
figure; hFigure=gcf;
set(hFigure,'Color',[0.9 0.8 0.8]);
surf(X,Y,Z)
colorbar;
view([-75,20])
hold on
x=0:0.1:x0; y=a*(exp(-x/a)+exp(x/a))/2;
hPlot=plot(x,y); set(hPlot,'LineWidth',5)
Задача 4. Визуализировать поверхность, образованной вращением астроиды
.Программа:
Построение астроиды
a=2;
t=-2*pi:pi/20:2*pi;
X=a*cos(t).^3;
Y=a*sin(t).^3;
w=300;
h=300; figure('Units','Pixels','position',
[100,100,w,h]);
plot(X,Y)
xlabel('x'); ylabel('y');
axis([-3, 3, -3, 3]);
% Поверхность вращения
a=2;
t=-2*pi:pi/20:2*pi;
X=a*cos(t).^3;
v=0:pi/20:2*pi;
[T,V]=meshgrid(t,v);
Y=a*sin(T).^3;
X1=X;
Y1=Y.*cos(V);
Z1=Y.*sin(V);
figure;
hFigure=gcf;
set(hFigure,'Color',[1 1 1]);
surf(X1,Y1,Z1)
hAxes=gca;
set(hAxes,'Color',[0.9,0.9,0.9]);
colorbar;
xlabel('x'); ylabel('y'); zlabel('z');
view([-24,40])
hold on
hPlot=plot(X,Y);
set(hPlot,'LineWidth',5)
set(hPlot,'Color',[1 0 1])
Задача 5. Построить в полярных координатах лемнискату Бернулли:
.Программа:
a=1;
r=[]; phi=[];
for p=0:pi/60:2*pi
if 2*a^2*cos(2*p)>=0
r=[r sqrt(2*a^2*cos(2*p))];
phi=[phi p];
end
end
hFigure=gcf;
set(hFigure,'Color',[1 1 1]);
hP=polar(phi,r);
set(hP,'LineWidth',2);
Результат (рис. 17):
Задача 6. Используя численные и символьные вычисления в MATLAB найти: а) определённый интеграл; б) двойной интеграл; в) поверхностный интеграл (1-го рода).
а) Классической задачей численного анализа является задача о вычислении определённых интегралов. Из всех методов вычисления определённых интегралов самым простым, но в то же время довольно успешно применяемым является метод трапеции. В MATLAB для этого метода предусмотрена функция: trapz(x,y) (команда edit trapz позволяет вывести текст этой функции). Одномерный массив х (вектор) содержит дискретные значения аргументов подынтегральной функции. Значения подынтегральной функции в этих точках сосредоточены в одномерном массиве y. Чаще всего для интегрирования выбирают равномерную сетку, то есть значения элементов массива х отстоят друг от друга на одну и ту же величину – шаг интегрирования. Точность вычисления интеграла зависит от величины шага интегрирования: чем меньше этот шаг, тем больше точность.
Задача 7. Вычислить интеграл
методом трапеции с различными шагами интегрирования (для наблюдения 14 десятичных цифр после запятой нужно предварительно ввести и исполнить команду formatlong).Программа: Результат:
functiont=trap(dx)
x=0:dx:5;
y=sin(x).*exp(-x);
t=trapz(x,y); >> format long
>> trap(1)
ans = 0.42255394026468
>> trap(0.1)
ans = 0.50144886299125
>> trap(0.01)
ans = 0.50226667654901
>> trap(0.001)
ans = 0.50227485744814
Метод трапеций является очень универсальным методом и хорошо подходит интегрирования не слишком гладких функций. Если же функция под знаком интеграла является гладкой (существуют и непрерывны несколько первых производных), то лучше применять методы интегрирования более высоких порядков точности. При одном и том же шаге интегрирования методы более высоких порядков точности достигают более точных результатов.
В системе МАТLАВ методы интегрирования более высоких порядков точноcти реализуются функциями quad (метод Симпсона) и quad8 (метод Ньютона-Котеса 8-го порядка точности). Оба этих метода являются к тому же адаптивными. Последнее означает, что пользователю нет необходимости контролировать достигнутую точность результата путем сравнения последовательных значении, соответствующих разным шагам интегрирования. Все это указанные данные функции выполняют самостоятельно.