Материал: Никитина Дарья ПИН-21Д ЛР5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторная работа №5

Компьютерный практикум по математическому анализу

никитина дарья пин-21д

Текст программы

clear;clc;close all

% Практикум 6. Дифференцирование функции нескольких переменных.

% Упражнение 1. (Upr_6_1.m)

disp(' Вычисление частных производных')

syms x y

z=cos(x+y^2);

dzdx=diff(z,x) ; disp( 'z''x=')

disp( dzdx)

dzdy=diff(z,y);

disp( 'z''y='); disp( dzdy)

d2zdx=diff(z,x,2);

disp( 'z''''x='); disp( d2zdx)

d2zdy=diff(z,y,2);

disp( 'z''''y='); disp( d2zdy)

d2zdxdy=diff(dzdx,y);

disp( 'z''''xy='); disp( d2zdxdy)

% Поиск градиента функции а точке (1, 2, -3)

disp('Вычисление градиента функции')

syms x y z

v=2*x^3*y+x-z;

disp(v)

Grs=[diff(v,x) diff(v,y) diff(v,z)];

disp('Символьный вид градиента')

disp(Grs)

Gr=subs(Grs,[x, y,z],[1,2,-3]);

disp('Значение градиента в точке (1, 2, -3)')

disp(Gr)

Результат

Вычисление частных производных

z'x=

-sin(y^2 + x)

z'y=

-2*y*sin(y^2 + x)

z''x=

-cos(y^2 + x)

z''y=

- 2*sin(y^2 + x) - 4*y^2*cos(y^2 + x)

z''xy=

-2*y*cos(y^2 + x)

Вычисление градиента функции

2*y*x^3 + x - z

Символьный вид градиента

[ 6*y*x^2 + 1, 2*x^3, -1]

Значение градиента в точке (1, 2, -3)

[ 13, 2, -1]

Текст программы

clear;clc

% Практикум 6. Дифференцирование функции нескольких переменных.

% Упражнение 2. (Upr_6_2.m)

syms r t z

% а) Вычислите якобиан перехода от декартовой системы координат к цилиндрической

% формулы перехода от декартовой системы координат к цилиндрической

x=r*cos(t);

y=r*sin(t);

z=z;

disp('Якобиан перехода от декартовой системы координат к цилиндрической')

A=[diff([x;y;z],r) diff([x;y;z],t) diff([x;y;z],z) ]

disp('Определитель Якобиана')

I=det(A)

disp('Упрощенное выражение определителя')

I=simplify(I)

disp('Якобиан перехода от декартовой системы координат к сферической')

% а) Вычислите якобиан перехода от декартовой системы координат к

% сферической

syms r t z u

% формулы перехода от декартовой системы координат к сферической

x=r*cos(t)*cos(u);

y=r*sin(t)*cos(u);

z=r*sin(u);

A=[diff([x;y;z],r) diff([x;y;z],t) diff([x;y;z],u) ]

disp('Определитель Якобиана')

I=det(A)

disp('Упрощенное выражение определителя')

I=simplify(I)

Результат

Якобиан перехода от декартовой системы координат к цилиндрической

A =

[ cos(t), -r*sin(t), 0]

[ sin(t), r*cos(t), 0]

[ 0, 0, 1]

Определитель Якобиана

I =

r*cos(t)^2 + r*sin(t)^2

Упрощенное выражение определителя

I =

r

Якобиан перехода от декартовой системы координат к сферической

A =

[ cos(t)*cos(u), -r*cos(u)*sin(t), -r*cos(t)*sin(u)]

[ cos(u)*sin(t), r*cos(t)*cos(u), -r*sin(t)*sin(u)]

[ sin(u), 0, r*cos(u)]

Определитель Якобиана

I =

r^2*cos(t)^2*cos(u)^3 + r^2*cos(t)^2*cos(u)*sin(u)^2 + r^2*cos(u)^3*sin(t)^2 + r^2*cos(u)*sin(t)^2*sin(u)^2

Упрощенное выражение определителя

I =

r^2*cos(u)

Текст программы

clear;clc

% Практикум 6. Дифференцирование функции нескольких переменных.

% Упражнение 3a). (Upr_6_3а.m)

%а) Найдите первый дифференциал dz функции

syms x y z dx dy

z=x*y^2+2*y-x^2

dzx=diff(z,x)

dzy=diff(z,y)

d1x=0.1; d1y=0.2;

x0=2;y0=-1;

disp('Дифференциал 1-го порядка в символьном виде')

dzs=dzx*dx+ dzy*dy

disp('Численное значение дифференциала 1-го порядка ')

dz=subs(dzx,[x,y],[x0,y0])*d1x+subs(dzy,[x,y],[x0,y0])*d1y

Результат

z =

- x^2 + x*y^2 + 2*y

dzx =

y^2 - 2*x

dzy =

2*x*y + 2

Дифференциал 1-го порядка в символьном виде

dzs =

dy*(2*x*y + 2) - dx*(- y^2 + 2*x)

Численное значение дифференциала 1-го порядка

dz =

-7/10

Текст программы

clear;clc

% Практикум 6. Дифференцирование функции нескольких переменных.

% Упражнение 3a). (Upr_6_3b.m)

%а) Найдите первый дифференциал dz функции

global z

syms x y z

z=x*y^2+2*y-x^2

dx=0.1; dy=0.2;

x0=2;y0=-1;

disp('Дифференциал 1-го порядка')

[dzs,dz]=Dif(x0,y0,dx,dy);% Обращение к функции вычисляющей 1-й дифференциал

disp('Дифференциал 1-го порядка в символьном виде')

disp(dzs)

disp('Численное значение дифференциала 1-го порядка ')

disp(dz)

function [dzs,dz]=Dif(x0,y0,dx,dy)

% Функция вычисляет дифференциал 1-го порядка

% символьно и численно

syms x y z dz d1x d1y

global z

dzx=diff(z,x);

dzy=diff(z,y);

dzs=dzx*d1x+ dzy*d1y;

dz=subs(dzx,[x,y],[x0,y0])*dx+subs(dzy,[x,y],[x0,y0])*dy;

Результат

z =

- x^2 + x*y^2 + 2*y

Дифференциал 1-го порядка в символьном виде

d1y*(2*x*y + 2) - d1x*(- y^2 + 2*x)

Численное значение дифференциала 1-го порядка

-7/10

Текст программы

% Практикум 6. Дифференцирование функции нескольких переменных.

% Формула Тейлора

% Упражнение 4. (Upr_6_4.m)

% Найдите второй дифференциал d2z функции

syms x y z dx dy

global z

z=x*y^2+2*y-x^2

dx=0.1; dy=-0.2;

x0=2;y0=-1;

[d2zs,d2z]=Dif2(x0,y0,dx,dy);% Обращение к функции вычисляющей 2-й дифференциал

disp('Дифференциал 2-го порядка в символьном виде')

disp(d2zs)

disp('Численное значение дифференциала 1-го порядка ')

disp(d2z)

function [d2zs,d2z]=Dif2(x0,y0,dx,dy)

% Функция вычисляет дифференциал 2-го порядка

% символьно и численно

syms x y z dz d1x d1y

global z

d2zx=diff(z,x,2);

d2zy=diff(z,y,2);

dzxy=diff(z,x,y);

d2zs=d2zx*d1x^2+ dzxy*d1x*d1y+d2zy*d1y^2;

d2z=subs(d2zx,[x,y],[x0,y0])*dx^2+subs(dzxy,[x,y],[x0,y0])*dx*dy+subs(d2zy,[x,y],[x0,y0])*dy^2;

Результат

z =

- x^2 + x*y^2 + 2*y

Дифференциал 2-го порядка в символьном виде

- 2*d1x^2 + 2*y*d1x*d1y + 2*x*d1y^2

Численное значение дифференциала 1-го порядка

9/50

Текст программы

clear;clc

% Практикум 6. Дифференцирование функции нескольких переменных.

% Приближенное вычисление функции в заданной точке с помощью %дифференциала 1-го и 2-го порядка и разложение ее в ряд Тейлора 1-го и 2-го порядка

% Упражнение 5. (Upr_6_5.m)

disp(' ')

global z

syms x y z

z=input('Введите функцию двух переменных ','s');

x0=input('Координата х0= ');

y0=input('Координата y0= ');

dx=input('Смещение dх= ');

dy=input('Смещение dy= ');

disp(' ')

disp('Использование дифференциала 1-го порядка и ряда Тейлора 1-го порядка ')

disp(' ')

[P1T,P1d]=Taylor_1(x0,y0,dx,dy);% Обращение к функции

fprintf('Приближенное значение функции z(x0+dx,y0+dy)=z(x0,y0)+dz =% 5.4f\n',double(P1d))

disp('Функция Тейлора 1-го порядка P1T(x,y) ')

disp(P1T)

F1t=inline(P1T);

P1Tt=subs(P1T,[x,y],[x0+dx,y0+dy]);

fprintf('Значение функции Тейлора 1-го пор. в точке (x0+dx; y0+dy) = %5.4f\n',double(P1Tt))

disp(' ')

disp('Использование дифференциала 2-го порядка и ряда Тейлора 2-го порядка ')

disp(' ')

[P2T,P2d]=Taylor_2(x0,y0, dx, dy);

fprintf('Приближенное значение функции z(x0,y0)+dz+d2z=% 5.4f\n',double(P2d))

disp('Функция Тейлора 2-го порядка P2T(x,y) ')

disp(simplify(P2T))

F2t=inline(P2T);

P2Tt=subs(P2T,[x,y],[x0+dx,y0+dy]);

fprintf('Значение функции Тейлора 2-го пор. в точке (x0+dx; y0+dy) = %5.4f\n',double(P2Tt))

fz=double(subs(z,[x,y],[x0+dx,y0+dy]));

fprintf(' Точное значение функции z(x+dx; y+dy) = %5.4f\n',fz)

function [P1T,P1d]=Taylor_1(x0,y0,dx,dy)

% Определение значения функции с помощью дифференциала 1-го порядка

% и разложения функции в ряд Тейлора 1-го порядка

% P1T - ряд Тейлора 1-го порядка

% P1d - значение функции, вычисленное с помощью дифференц. 1-го порядка

syms x y z dz

global z

dzx=diff(z,x);% z'x

dzy=diff(z,y);% z'y

% Символьное представление функции P1(x,y)в окрестности точки (x0,y0)

P1T=subs(z,[x,y],[x0,y0])+subs(dzx,[x,y],[x0,y0])*(x-x0)+subs(dzy,[x,y],[x0,y0])*(y-y0);

dz=subs(dzx,[x,y],[x0,y0])*dx+subs(dzy,[x,y],[x0,y0])*dy; %Дифференциал 1-го порядка

P1d=subs(z,[x,y],[x0,y0])+dz; % Значение функции z(x+dx,y+dy)

function [P2T,P2d]=Taylor_2(x0,y0,dx,dy)

% Определение значения функции с помощью дифференциала 2-го порядка

% и разложения функции в ряд Тейлора 2-го порядка

% P2T - ряд Тейлора 2-го порядка

% P2d - значение функции, вычисленное с помощью дифференц. 2-го порядка

syms x y z dz

global z

dzx=diff(z,x);

dzy=diff(z,y);

d2zx=diff(z,x,2);

d2zy=diff(z,y,2);

dzxy=diff(z,x,y);

% Символьное представление функции P2(x,y)в окрестности точки (x0,y0)

P2T=subs(z,[x,y],[x0,y0])+subs(dzx,[x,y],[x0,y0])*(x-x0)+subs(dzy,[x,y],[x0,y0])*(y-y0)+ ...

subs(d2zx,[x,y],[x0,y0])*(x-x0)^2/2+subs(d2zy,[x,y],[x0,y0])*(y-y0)^2/2+ ...

subs(dzxy,[x,y],[x0,y0])*(x-x0)*(y-y0);

dz=subs(dzx,[x,y],[x0,y0])*dx+subs(dzy,[x,y],[x0,y0])*dy; %Дифференциал 1-го порядка

d2z=subs(d2zx,[x,y],[x0,y0])*dx^2+2*subs(dzxy,[x,y],[x0,y0])*dx*dy+subs(d2zy,[x,y],[x0,y0])*dy^2;

P2d=subs(z,[x,y],[x0,y0])+dz+d2z; % Значение функции z(x+dx,y+dy)

% Построение поверхностей заданной функции и функций ее разложений в ряд

% Тейлора 1-го и 2-го порядка

x1=linspace(-6,6,20);

y1=linspace(-6,6,20);

[X, Y]=meshgrid(x1,y1);

Z=(2*X.^2+Y.^2).^2;

Z1= F1t(X,Y);

Z2= F2t(X,Y);

mesh(X,Y,Z1) ;

xlabel('x'); ylabel('y'); zlabel('z')

legend('Поверхность z=(2x^2+y^2)^2','Ряд Тейлора 1-го пор', 'Ряд Тейлора 2-го пор.','Location','northoutside','Orientation','horizontal')

hold on

mesh(X,Y,Z2) ;

surf(X,Y,Z)

plot3(x0,y0,subs(z,[x,y],[x0,y0]),'or','LineWidth',5);% Точка (x0,y0)

view(-141,28)

hold off

Результаты

Введите функцию двух переменных x*y^2+2*y-x^2

Координата х0= 2

Координата y0= -1

Смещение dх= 0.1

Смещение dy= -0.2

Использование дифференциала 1-го порядка и ряда Тейлора 1-го порядка

Приближенное значение функции z(x0+dx,y0+dy)=z(x0,y0)+dz =-3.9000

Функция Тейлора 1-го порядка P1T(x,y)

- 3*x - 2*y

Значение функции Тейлора 1-го пор. в точке (x0+dx; y0+dy) = -3.9000

Использование дифференциала 2-го порядка и ряда Тейлора 2-го порядка

Приближенное значение функции z(x0,y0)+dz+d2z=-3.6800

Функция Тейлора 2-го порядка P2T(x,y)

- x^2 - 2*x*y - x + 2*y^2 + 6*y + 2

Значение функции Тейлора 2-го пор. в точке (x0+dx; y0+dy) = -3.7900

Точное значение функции z(x+dx; y+dy) = -3.7860

Введите функцию двух переменных (2*x^2+y^2)^2

Координата х0= 1

Координата y0= 2

Смещение dх= -0.2

Смещение dy= 0.2

Использование дифференциала 1-го порядка и ряда Тейлора 1-го порядка

Приближенное значение функции z(x0+dx,y0+dy)=z(x0,y0)+dz = 36.0000

Функция Тейлора 1-го порядка P1T(x,y)

48*x + 48*y - 108

Значение функции Тейлора 1-го пор. в точке (x0+dx; y0+dy) = 36.0000

Использование дифференциала 2-го порядка и ряда Тейлора 2-го порядка

Приближенное значение функции z(x0,y0)+dz+d2z= 38.8800

Функция Тейлора 2-го порядка P2T(x,y)

40*x^2 + 32*x*y - 96*x + 28*y^2 - 96*y + 108

Значение функции Тейлора 2-го пор. в точке (x0+dx; y0+dy) = 37.4400

Точное значение функции z(x+dx; y+dy) = 37.4544

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

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

Источник: https://studfile.net/preview/16465758/