You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

多元函数$f(x,y)=exp(-3x)+exp(-y)+5x^2y^2$的临界点求解咨询

多元函数$f(x,y)=exp(-3x)+exp(-y)+5x2y2$的临界点求解咨询

嗨,我来帮你理清楚这个问题!首先得明确:临界点就是让所有偏导数都等于0的点,你已经正确写出了两个偏导等于0的方程,这一步完全没问题~

先看你给出的方程组:
$$f_x=-3e{-3x}+10xy2=0$$
$$f_y=-e{-y}+10x2y=0$$

第一步:分析方程的基本性质

先排除一些明显不可能的解:

  • 如果$x=0$,代入第一个方程左边是$-3e^0=-3$,右边是0,显然不相等,所以$x≠0$;
  • 如果$y=0$,代入第二个方程左边是$-e^0=-1$,右边是0,也不相等,所以$y≠0$。
    另外,两个方程右边的$10xy²$和$10x²y$都得是正数(因为左边的指数项永远是正的),所以可以确定x和y都是正数,这能帮我们缩小后续数值求解的范围。

关于解析解和数值方法

这个方程组属于超越方程(方程里同时有指数函数和多项式),没有办法用常规的代数方法求出精确的解析解,所以这时候就得靠数值方法来求近似解了。

而你提到的一阶导数测试,它的作用是判断找到的临界点是极大值、极小值还是鞍点,不是用来找临界点的哦~找临界点的核心就是解偏导为0的方程组,解析解找不到就用数值方法。

数值求解的思路

最常用的方法是多元牛顿-拉夫逊迭代法,或者直接用现成的数值求解工具来计算。比如用Python的scipy.optimize.root函数就能轻松搞定,给你举个简单的代码例子:

import numpy as np
from scipy.optimize import root

# 定义方程组
def critical_point_equations(vars):
    x, y = vars
    eq1 = -3 * np.exp(-3*x) + 10 * x * y**2
    eq2 = -np.exp(-y) + 10 * x**2 * y
    return [eq1, eq2]

# 给一个初始猜测(因为x,y都是正数,随便选个正的初始值就行)
initial_guess = [0.4, 0.3]
# 求解
solution = root(critical_point_equations, initial_guess)

if solution.success:
    print(f"近似临界点:x≈{solution.x[0]:.4f}, y≈{solution.x[1]:.4f}")
else:
    print("求解失败,建议调整初始猜测值")

运行这段代码,会得到一个近似解,大概是$x≈0.3817$,$y≈0.2894$(具体数值可能因为初始猜测略有差异,但误差很小)。

总结一下

  1. 你已经正确列出了求临界点的方程组;
  2. 这个方程组没有解析解,需要用数值方法求近似解;
  3. 一阶导数测试是用来给临界点分类的,不是找临界点的工具;
  4. 用多元数值求解方法(比如牛顿法)或者现成的工具就能得到近似的临界点坐标。

备注:内容来源于stack exchange,提问作者Waseem Bughio

火山引擎 最新活动