python - 如何求解一个函数并得到三个未知变量?
问题描述
我试图从下面的函数中找到x_my
,y_my
和。我有三个值以及每个对应的三个值。这意味着我有三个方程和三个未知的含义,它可以被解决。但我不知道如何用 python 做到这一点。z_my
f
f
curr_location
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))))
解决方案
您可以使用curve_fit
(文档)。请注意如何将输入和输出放入向量中:
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 ])
推荐阅读
- javascript - Meteor/SSR/Apollo 客户端 - 尝试使用 Apollo 设置 SSR 并没有找到 fetch
- php - 无法在 codeigniter 中按类别过滤数据
- reactjs - 如何在 ReactJS 中使表格可排序?
- amazon-web-services - AWS S3:React 失效请求的定价。托管在 S3 上的 Node.js 应用程序
- matplotlib - 在一个图中绘制 4 个子图时,set_xlabel 在 ax[0, 0] 中无效
- android - Android通过改进的API的大写第一个字符
- php - 如何修复“NULL 不是有效的 DataTable”。- Laravel Lavacharts
- java - 在事务之外保存实体
- cmd - Tableau:在选项卡 cmd(命令/脚本)中设置数据提取刷新的优先级
- java - 在类中找不到 main(String[]) 方法:TapeDeck。主要方法在运行程序的另一个类中