Смекни!
smekni.com

Применение дифференциального и интегрального исчисления к решению физических и геометрических задач в MATLab (стр. 3 из 4)

Примеры

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. Визуализировать поверхность, образованной вращением астроиды

.

Результат (рис. 15,16)

Программа:

Построение астроиды

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-го порядка точности). Оба этих метода являются к тому же адаптивными. Последнее означает, что пользователю нет необходимости контролировать достигнутую точность результата путем сравнения последовательных значении, соответствующих разным шагам интегрирования. Все это указанные данные функции выполняют самостоятельно.