Результат
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