Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Никитина Дарья ПИН-21Д ЛР5.docx
Скачиваний:
0
Добавлен:
15.06.2021
Размер:
615.65 Кб
Скачать

Результат

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