需求:利用matlab求解二元函数y=f(x1,x2)
=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2)的最大值
步骤:1、symsx1x2;
2、y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2)得y=-195*x1-225*x2-x1*(x1/100+(3*x2)/1000-339)-x2*(x1/250+x2/100-399)-400000
3、y=simple(y)得y=-x1^2/100-(7*x1*x2)/1000+144*x1-x2^2/100+174*x2-400000
4、求偏导dydx1=diff(y,x1)得dydx1=144-(7*x2)/1000-x1/50dydx2=diff(y,x2)得dydx2=174-x2/50-(7*x1)/1000
5、令偏导等于0,解方程S=solve(dydx1,dydx2)得S=x1:[1x1sym]x2:[1x1sym]
6、显示结果S.x1得ans=554000/117S.x2得ans=824000/117
7、把得到的结果代入原f(x1,x2),求最大y值:
y=subs(y,x1,554000/117);y=subs(y,x2,824000/117)得y=5.5364e+005
当然,该最大值是不是真正的最大值,还需要进一步结合实际情况验证(通过画出图形,观察二阶导数的符号等).比如,symsx1x2;y=(339-0.01*x1-0.003*x2)*x1+(399-0.004*x1-0.01*x2)*x2-(400000+195*x1+225*x2);然后使用ezsurf(y,[010000],[010000]);就可以得到三维的图形如下图所示:
可以看到,在感兴趣区间内,函数是有最大值的,即上面求出的y=5.5364e+005,在x1=554000/117,x2=824000/117处取得.