Смекни!
smekni.com

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

У функции quad8 более высокий порядок точности по сравнению с функцией quad, что очень хорошо для гладких функций, так как обеспечивается более высокая точность результата при большем шаге интегрирования (меньшем объеме отчислений). Однако функция quad может иметь не меньшее, а даже большее быстродействие для не слишком гладких функций (разрывны или велики по абсолютной величине вторая или третья производные). В любом случае обе эти функции по умолчанию обеспечивают одинаковую относительную точность результата, равную 0.001.

Как и многие другие функции системы МАТLАВ, функции quad и quad8 могут принимать различное количество параметров. Минимальный формат вызова этих функций включает в себя три параметра: имя подынтегральной функции, нижний предел интегрирования и верхний предел интегрирования. Если применяется четвертый параметр, то он является требуемой относительной точностью результата вычислений. Кстати, если обе эти адаптивные функции не могут обеспечить получение необходимой точности (расходящийся или близкий к этому интеграл), то они возвращают символическую бесконечность Inf.

Для вычисления определённых интегралов символьными методами можно использовать два варианта решения: напрямую или по этапам (с подстановкой символьных чисел).

Задача 8. Вычислить определённый интеграл

.

Программа: Результат:

a1=sym('0'); b1=sym('2');

syms w t a b

w=t^2;

% 1 способ: работа с подстановкой символьных чисел

symbol=int(w,'t',a,b)

symbol2a=subs(symbol,[a,b],[a1,b1])

digits(20);

number=vpa(symbol2a)

% 2 способ: работа с символьными числами

symbol2b=int(w,'t',a1,b1) symbol =

1/3*b^3-1/3*a^3

symbol2a =

8/3

number =

2.6666666666666666667

symbol2b =

8/3

Задача 9. Вычислить площадь поверхности, полученной вращением астроиды вокруг оси Ox:

. (поверхность визуализирована в задаче 2).

Программа: Результат:

t1=sym('0'); t2=sym('pi/2'); a=sym('1');

syms x y t f

x=a*cos(t)^3; y=a*sin(t)^3;

f=y.*sqrt(diff(x)^2+diff(y)^2);

symbol=simplify(int(4*pi*f,'t',t1,t2))

digits(10);

number=vpa(symbol) symbol =

12/5*pi

number =

7.539822370

б) Двойные интегралы сводятся к вычислению повторных определённых интегралов, один из которых является внутренним, а другой внешним. Внутренний интеграл является подынтегральной функцией для внешнего интеграла. Можно было бы для численных вычислений написать некоторую цепочку вычислений, в которой многократные вычисления подынтегральной функции сводились бы к многократным вызовам функции quad. Однако нет необходимости делать это самостоятельно, так как в системе MATLAB для этого имеется специальная функция dblquad.

Задача 8. Вычислить интеграл

, где
.

Программа:

Результат:

function z=fof(x,y)

z=x.*sin(y)+y.*sin(x); >> format long

>> dblquad('fof',0,1,1,2)

ans =

1.16777110966887

Задача 9. С помощью символьных вычислений получить следующие интегралы

,
,
,
,
, где
.

Программа:

symsxy

z=sym('x*sin(y)+y*sin(x)');

i1=int(z,'x')

i2=int(z,'x',0,1)

i3=int(int(z,'x'),'y')

i4=int(int(z,'x',1,2),'y',0,1)

digits(14);

number4=vpa(i4)

i5=int(int(x+y,'y',x,1),'x',0,1) i1 =

1/2*x^2*sin(y)-y*cos(x)

i2 =

1/2*sin(y)-y*cos(1)+y

i3 =

-1/2*x^2*cos(y)-1/2*y^2*cos(x)

i4 =

-1/2*cos(2)-cos(1)+3/2

number4 =

1.1677711124054

i5 =

1/2

Так как символьные вычисления не дают погрешности метода вычисления и сами по себе они более точные, то можно увидеть, что функция dblquad даёт точный результат до 7 знака после запятой.

в) Из высшей математики известно, что к определенным и двойным интегралам могут быть сведены многие другие типы интегралов, например поверхностный интеграл 1-го рода. Так как при его нахождении используется дифференцирование под знаком интеграла, то использовать численные вычисления некорректно.

Задача 10. Вычислить поверхностный интеграл 1-го рода:

, где S – часть плоскости
, лежащая в первом октанте (по теореме 2).

Программа: Результат:

symsxyzf1 f2

f1=1-x-y;

f2=x*y*z;

fun=subs(f2,z,f1)

d=1+diff(f1,x)^2+diff(f1,y)^2

syms x1 x2 y1 y2

x1=sym('0');

x2=sym('1');

y1=sym('0');

y2=sym('1-x');

intpov1=int(int(fun*sqrt(d),'y',y1,y2),'x',x1,x2)

digits(10);

number=vpa(intpov1) fun =

x*y*(1-x-y)

d =

3

intpov1=

1/120*3^(1/2)

number =

1443375673e-1

Задача 11. Вычислить поверхностный интеграл 1-го рода

, где S- сфера
(по теореме 3).

Сначала создадим функцию, описывающую поверхность по которой происходит интегрирование:

function [x,y,z]=pov;

syms x y z u v a

x=a*sin(u)*cos(v);

y=a*sin(u)*sin(v);

z=a*cos(u);

Программа:

syms x y z u v a

f=sym('x^2+y^2');

[x0,y0,z0]=pov;

syms E G F W

E=diff(x0,'u')^2+diff(y0,'u')^2+diff(z0,'u')^2;

G=diff(x0,'v')^2+diff(y0,'v')^2+diff(z0,'v')^2;

F=diff(x0,'u')*diff(x0,'v')+diff(y0,'u')*

diff(y0,'v')+diff(z0,'u')*diff(z0,'v');

W=sqrt(E*G-F^2); f2=W*subs(f,[x,y],[x0,y0]);

syms u1 u2 v1 v2

u1=sym('0');

u2=sym('pi/2');

v1=sym('0');

v2=sym('pi/2');

p=sym('8');

intpov=p*int(int(f2,'v',v1,v2),'u',u1,u2)

intpov2=simplify(intpov)

digits(10);

number=vpa(intpov2)

b=sym('1');

int=subs(intpov2,a,b) intpov =

4/3*a^2*pi*(a^4)^(1/2)*4^(1/2)

intpov2 =

8/3*a^4*pi*csgn(a^2)

number =

8.377580412*a^4*csgn(a^2)

int =

8/3*pi

Примечание. Функция сsgn является специфической в MATLAB. Она не может быть введена пользователем и возникает только при оперировании с функцией simplify (упрощение символьных выражений). Например:

>> syms a t

>> t=csgn(a^2)*a^2

??? Undefined function or variable 'csgn'.

>> simplify((a^4)^(1/2))

ans =

csgn(a^2)*a^2

>> simplify((a^8)^(1/4))

ans =

(a^8)^(1/4)

>> simplify((a^9)^(1/3))

ans =

(a^9)^(1/3)

Список использованных источников

1. Ануфриев, И.Е. Самоучитель MatLab 5.3/6.х / И.Е. Ануфриев. - СПб.: БХВ-Петербург, 2002. - 736 с.

2. Берман, Г.Н. Сборник задач по курсу математического анализа / Г.Н. Берман, И.Г. Араманович, А.Ф. Бермант и др. - М.: Наука, 1966. - 456 с.

3. Бермант, А.Ф. Краткий курс математического анализа для втузов / А.Ф. Бермант, И.Г. Араманович. - М.: Наука, 1966. - 736 с.

4. Гультяев, А. Визуальное моделирование в среде MatLab / А. Гультяев. - СПб.: Питер, 2001. - 553 с.

5. Демидович, Б.П. Задачи и упражнения по математическому анализу для втузов / Б.П. Демидович, Г.С. Бараненков, В.А. Ефименко и др. - М.: Наука, 1966. - 472 с.

6. Лазарев, Ю.Ф. MatLab 5.х / Ю.Ф. Лазарев. - Киев: BHV, 2000. - 388 с.

7. Мартынов, Н.Н. Matlab 5.х: вычисления, визуализация, программирование / Н.Н. Мартынов, А.П. Иванов. - М.: КУДИЦ-ОБРАЗ, 2000. - 336 с.

8. Куринной, Г.Ч. Математика: Справочник / Г.Ч. Куринной. - Харьков: Фолио; Ростов на Дону: Феникс, 1997. - 463 с.

9. Пискунов, Н.С. Дифференциальное и интегральное исчисление для втузов в 2 томах / Н.С. Пискунов. - М.: Наука, 1966. - 2 т. - 312 с.

10. Фихтенгольц, Г.М. Курс дифференциального и интегрального исчисления в 3 томах / Г.М. Фихтенгольц. - М.: Государственное изд-во физико-математической литературы, 1959. - т. 1-3.

11. Сайты http://www/informika.ru, htt://www.softline.ru, http://matlab.ru.