首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何求解一个函数并得到三个未知变量?

如何求解一个函数并得到三个未知变量?
EN

Stack Overflow用户
提问于 2019-03-22 03:57:07
回答 1查看 62关注 0票数 0

我正在尝试从下面的函数f中查找x_myy_myz_my。我为f设置了三个值,并为每个相应的curr_location设置了三个值。这意味着我有三个方程和三个未知数,这意味着它可以求解。但是我不知道如何使用python来做到这一点。

sigma_x=3
sigma_y=3
sigma_z=3

curr_location_x1=3
curr_location_y1=3
curr_location_z1=3

curr_location_x2=4
curr_location_y2=4
curr_location_z2=4

curr_location_x3=6
curr_location_y3=6
curr_location_z3=6

f_1=0.4
f_2=0.3
f_3=0.24

f = math.exp(-((((curr_location_x - x_my) * (curr_location_x - x_my)) / (2*sigma_x * sigma_x)) + (((curr_location_y - y_my) *(curr_location_y - y_my)) / (2 * sigma_y * sigma_y)) + (((curr_location_z - z_my) *(curr_location_z - z_my)) / (2 * sigma_z * sigma_z))))
EN

回答 1

Stack Overflow用户

发布于 2019-03-22 04:19:06

您可以使用curve_fit (docs)。注意如何将输入和输出放在向量中:

from scipy.optimize import curve_fit
import numpy as np

sigma_x=3
sigma_y=3
sigma_z=3

def f(curr_location, x_my, y_my, z_my):
    curr_location_x, curr_location_y, curr_location_z = curr_location
    return np.exp(-((((curr_location_x - x_my) * (curr_location_x - x_my))
                     / (2*sigma_x * sigma_x)) + (((curr_location_y - y_my)
                     *(curr_location_y - y_my)) / (2 * sigma_y * sigma_y)) +
    (((curr_location_z - z_my) *(curr_location_z - z_my)) /
 (2 * sigma_z * sigma_z))))

curr_location_values = [[3,3,3,], [4,4,4], [6,6,6]]
output_values = [0.4, 0.3, 0.24]
popt, pcov = curve_fit(f, curr_location_values, output_values)
popt
>> array([2.99570375, 2.38445522, 1.7246244 ])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55288368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档