一、问题描述
二、拉格朗日手工求解方法
三、拉格朗日编程求解方法
代码如下
from sympy import *
x,y,z,k=symbols('x,y,z,k')
a,b,c=symbols('a,b,c')
f=8*x*y*z
g=x**2/a**2+y**2/b**2+z**2/c**2-1
L=f+k*g
dx=diff(L,x)
print("dx=",dx)
dy=diff(L,y)
print("dy=",dy)
dz=diff(L,z)
print("dz=",dz)
dk=diff(L,k)
print("dk=",dk)
dx=8*y*z+2*k*x/a**2
dy=8*x*z+2*k*y/b**2
dz=8*x*y+2*k*z/c**2
dk=x**2/a**2+y**2/b**2+z**2/c**2-1
m=solve([dx,dy,dz,dk],[x,y,z,k])
print(m)
x=sqrt(3)*a/3
y=sqrt(3)*b/3
z=sqrt(3)*c/3
k=-4*sqrt(3)*a*b*c/3
f=8*x*y*z
print("最大值为:",f)
结果如下: