You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知参数的二维高斯函数,求f(x,y)=g₀/e时的(xₑ,yₑ)

求解二维高斯函数的特定等值点

已知二维高斯函数 f(x,y),其峰值g₀对应坐标(x₀,y₀),所有参数(g₀、x₀、y₀、sigma_x、sigma_y、offset)均由曲线拟合得到。需要找到一组满足f(xₑ,yₑ)=g₀/e的(xₑ,yₑ)值,无需手动推导,借助Python工具库实现。

已定义的高斯函数:

import numpy as np

def f(x, y, g0, x0, y0, sigma_x, sigma_y, offset):
    return offset + g0 * np.exp(-(((x - x0)**2/(2*sigma_x**2)) + ((y - y0)**2/(2*sigma_y**2))))

解决方案:用scipy.optimize.root求解非线性方程

无需手动推导公式,直接借助SciPy的数值求解器找到满足条件的点。核心思路是构造目标函数,让f(x,y) - g₀/e = 0,再用数值方法求解该方程。

完整代码示例

from scipy.optimize import root
import numpy as np

# 替换为你实际拟合得到的参数
g0 = 10
x0 = 5
y0 = 3
sigma_x = 2
sigma_y = 1.5
offset = 1

# 构造目标方程:让f(x,y)等于g0/e,即差值为0
def target_func(vars):
    x, y = vars
    return f(x, y, g0, x0, y0, sigma_x, sigma_y, offset) - g0 / np.e

# 初始猜测值:选在峰值附近,比如x方向偏移sigma_x,y保持峰值坐标
initial_guess = [x0 + sigma_x, y0]

# 执行求解
result = root(target_func, initial_guess)

# 输出结果
if result.success:
    xe, ye = result.x
    print(f"找到一组解:(xₑ, yₑ) = ({xe:.4f}, {ye:.4f})")
    # 验证结果
    calculated_value = f(xe, ye, g0, x0, y0, sigma_x, sigma_y, offset)
    target_value = g0 / np.e
    print(f"验证:f(xₑ,yₑ) = {calculated_value:.4f},目标值g₀/e = {target_value:.4f}")
else:
    print("求解失败,原因:", result.message)

说明

  • 初始猜测值的选择很关键:选在峰值(x₀,y₀)附近(比如示例中x0+sigma_x,y0),能让求解器更快收敛到正确解。
  • 求解成功后建议验证结果,避免因初始值或参数问题得到错误解。

内容的提问来源于stack exchange,提问作者hexaquark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:35:16