【问题标题】:How to get an approximate equation for reverse look up如何获得反向查找的近似方程
【发布时间】:2019-11-25 17:47:08
【问题描述】:

有没有什么方法或者方法可以得到近似方程(x = g(y)) 进行从Y到X的反向查找。下面是简单的y = f(x)及其绘图。

import numpy as np
import matplotlib.pyplot as plt  
formula = "2*x**6 + x**5 -3*x**4 + 7*x**3 + 9*x**2 + x + 6"
x = np.arange(1, 10)
y = eval(formula)
plt.plot(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

您能否建议在 R 或 Python 中以最小误差获得反向查找函数(从 Y 到 X)的任何可能方式?

【问题讨论】:

  • 所以如果我理解正确你想要多项式回归曲线?如果是这样,请查看sklearn
  • 对不起,我不明白。 Y 将进入一组 X;逆不是函数。你是在说“任何 X”、“最接近某个值的 X”还是什么?
  • @CharlesMerriam OP 的图片从 x=1 变为 x=9。在该范围内,f(x) 严格增加,因此存在一个倒数(在该范围内)。

标签: python r algebra polynomial-math


【解决方案1】:

这是一个基本的 R 解决方案。在要覆盖的范围内选择 x,生成 f(x),然后将函数拟合到 y 作为 x 的函数。我计算并绘制一个值的倒数作为确认。

f = function(x) 2*x**6 + x**5 -3*x**4 + 7*x**3 + 9*x**2 + x + 6

## Generate inverse function
x = seq(0,9, 0.1)
y = f(x)
f_inv = approxfun(y, x)

## Plot as a confirmation
plot(f, xlim=c(0,9))
x100K = f_inv(100000)
points(x100K, 100000, pch=16, col="red")

【讨论】:

  • 谢谢。我们如何从 f_inv 获取方程并在 C 中使用另一种语言。r 文档有一个警告“ approxfun 返回的值包含对当前 R 版本中代码的引用:它不打算保存和加载进入不同的 R 会话。这对于 R >= 3.0.0 更安全。"
猜你喜欢
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
相关资源
最近更新 更多