Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб. 7 КП МатАн.docx
Скачиваний:
6
Добавлен:
30.08.2024
Размер:
951.4 Кб
Скачать

Упражнение 4

x, y = sp.symbols('x y') z = x*y**2+2*y-x**2 dx=diff(z,x,2)*0.1**2 dy=diff(z,y,2)*(-0.2)**2 dxdy=sp.diff(sp.diff(z, x), y)*0.1*(-0.2)*2 dxsubs=dx.subs(x,2) dxsubs=dxsubs.subs(y,-1) dysubs=dy.subs(x,2) dysubs=dysubs.subs(y,-1) dxdysubs=dxdy.subs(x,2) dxdysubs=dxdysubs.subs(y,-1) dz=dxsubs+dysubs+dxdysubs print(dz)

0.220000000000000

def seconddif(f, x, y, delx, dely ,x0, y0): dx=diff(f,x,2)*delx**2 dy=diff(f,y,2)*dely**2 dxdy=diff(diff(f,x),y)*delx*dely*2 dxsubs=dx.subs(x,x0) dxsubs=dxsubs.subs(y,y0) dysubs=dy.subs(x,x0) dysubs=dysubs.subs(y,y0) dxdysubs=dxdy.subs(x,x0) dxdysubs=dxdysubs.subs(y,y0) dz=dxsubs+dysubs+dxdysubs return dz x, y = sp.symbols('x y') f = x*y**2+2*y-x**2 delx=0.1 dely=-0.2 x0=2 y0=-1 seconddif(f, x, y, delx, dely, x0, y0)

0.220000000000000

Упражнение 5

def teilorfirst(f, x, y, dx, dy, x0, y0, delx, dely): dxx=diff(f,x)*dx dyy=diff(f,y)*dy f0=f.subs(x,x0) f0=f0.subs(y,y0) dxsubs=dxx.subs(x,x0) dxsubs=dxsubs.subs(y,y0) dxsubs=dxsubs.subs(dx,delx) dysubs=dyy.subs(x,x0) dysubs=dysubs.subs(y,y0) dysubs=dysubs.subs(dy,dely) p1sim=f+dxx+dyy p1=f0+dxsubs+dysubs print(p1sim) print(p1) return p1sim

x, y, dx, dy = sp.symbols('x y dx dy') f = x*y**2+2*y-x**2 delx=0.1 dely=-0.2 x0=2 y0=-1 teilorfirst(f, x, y, dx, dy, x0, y0, delx, dely)

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

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

import matplotlib.pyplot as plt import numpy as np fig = plt.figure() xs = np.linspace(-4, 4, 50) ys = np.linspace(-4, 4, 50) X, Y = np.meshgrid(xs, ys) Z = X*Y**2+2*Y-X**2 ZZ = (X-2)*(-2*x0 + y0**2) + (Y+1)*(2*x0*y0 + 2) - x0**2 + x0*y0**2 + 2*y0 import matplotlib.pyplot as plt from matplotlib import cm import numpy as np fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) # построение поверхности surf = ax.plot_surface(X, Y, Z, cmap=cm.cool, linewidth=0) surf1 = ax.plot_surface(X, Y, ZZ, cmap=cm.winter, linewidth=0) # цветовой индикатор fig.colorbar(surf, shrink=0.5, aspect=5) fig.colorbar(surf1, shrink=0.5, aspect=5) plt.show()

<Figure size 640x480 with 0 Axes>

Упражнение 6

def teilorsecond(f, x, y, dx, dy, x0, y0, delx, dely): dxx=diff(f,x)*dx dyy=diff(f,y)*dy dxdy=diff(diff(f,x),y)*dx*dy*2 dx2=diff(f,x,2)*dx**2 dy2=diff(f,y,2)*dy**2 f0=f.subs(x,x0) f0=f0.subs(y,y0) dxsubs=dxx.subs(x,x0) dxsubs=dxsubs.subs(y,y0) dxsubs=dxsubs.subs(dx,delx) dysubs=dyy.subs(x,x0) dysubs=dysubs.subs(y,y0) dysubs=dysubs.subs(dy,dely) dxdysubs=dxdy.subs(x,x0) dxdysubs=dxdysubs.subs(y,y0) dxdysubs=dxdysubs.subs(dx,delx) dxdysubs=dxdysubs.subs(dy,dely) dx2subs=dx2.subs(x,x0) dx2subs=dx2subs.subs(y,y0) dx2subs=dx2subs.subs(dx,delx) dy2subs=dy2.subs(x,x0) dy2subs=dy2subs.subs(y,y0) dy2subs=dy2subs.subs(dy,dely) p1sim=f+dxx+dyy+0.5*(dxdy+dx2+dy2) p1=f0+dxsubs+dysubs+0.5*(dxdysubs+dx2subs+dy2subs) print(p1sim) print(p1) return p1sim

x, y, dx, dy = sp.symbols('x y dx dy') f = x*y**2+2*y-x**2 delx=0.1 dely=-0.2 x0=2 y0=-1 teilorsecond(f, x, y, dx, dy, x0, y0, delx, dely)

-1.0*dx**2 + 2.0*dx*dy*y + dx*(-2*x + y**2) + 1.0*dy**2*x + dy*(2*x*y + 2) - x**2 + x*y**2 + 2*y -3.79000000000000

-1.0*dx**2 + 2.0*dx*dy*y + dx*(-2*x + y**2) + 1.0*dy**2*x + dy*(2*x*y + 2) - x**2 + x*y**2 + 2*y

import matplotlib.pyplot as plt import numpy as np fig = plt.figure() xs = np.linspace(-4, 4, 50) ys = np.linspace(-4, 4, 50) X, Y = np.meshgrid(xs, ys) Z = X*Y**2+2*Y-X**2 ZZ = (X-2)*(-2*x0 + y0**2) + (Y+1)*(2*x0*y0 + 2) - x0**2 + x0*y0**2 + 2*y0 ZZZ = 2*(X-2)*(Y+1)*y0 + (X-2)*(-2*x0 + y0**2) + (Y+1)*(2*x0*y0 + 2) - x0**2 +x0*y0**2 + 2*y0 import matplotlib.pyplot as plt from matplotlib import cm import numpy as np fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) # построение поверхности surf = ax.plot_surface(X, Y, Z, cmap=cm.cool, linewidth=0) surf1 = ax.plot_surface(X, Y, ZZ, cmap=cm.winter, linewidth=0) surf2 = ax.plot_surface(X, Y, ZZ, cmap=cm.spring, linewidth=0) # цветовой индикатор fig.colorbar(surf, shrink=0.5, aspect=5) fig.colorbar(surf1, shrink=0.5, aspect=5) fig.colorbar(surf2, shrink=0.5, aspect=5) plt.show()

<Figure size 640x480 with 0 Axes>