【问题标题】:Problem fitting a function containing a sum with scipy (curve_fit)使用 scipy (curve_fit) 拟合包含总和的函数时出现问题
【发布时间】:2021-08-21 17:02:09
【问题描述】:

这是我的第一篇文章,所以请不要太苛刻 如果信息不完善。

我是 scipy 的普通用户,我通常将它用于拟合.... 我看到有人问过类似的问题,但我真的无法得到 我对这个问题的看法......

这是我想要拟合的函数的(简化版):

function to fit

(其中总和是 n 以内的奇数)

和我的代码:

def func(x, a, b, n_max):
    y = 0
    for n in np.arange(1, n_max ,2):
        y =+ 2*a + 4*np.pi * (1/(n*a))*math.exp(n*b*x) 
    return y


a = 10
n_max = 20
parameters, covariance = curve_fit(lambda x, b: func(x, a, b, n_max), 
                                   x_data, 
                                   y_data)

它给了我错误: 它给了我错误“TypeError:只有 size-1 数组可以转换为 Python 标量”。 我知道这个错误意味着什么,但我不知道如何更正我的代码。

这里有两个问题需要解决:

  1. 我需要计算一个总和.... 尽管 Stack 上有几个示例,但我不知道如何处理它。能用几行字来解释就太棒了。
  2. 参数“a”和“n”应该是我将根据具体情况提供的固定值。所以不应该为他们做任何优化。 (这应该使用 curve_fit 中的 lambda 来解决。)

任何提示或示例解决方案都将不胜感激......干杯

【问题讨论】:

  • 欢迎来到 SO,您的帖子看起来不错。如果您想提高帖子质量,可以阅读stackoverflow.com/help/how-to-ask。
  • 嗨@blondelg,谢谢...我会看一下链接,我会整理帖子....

标签: python scipy sum curve-fitting exponential


【解决方案1】:

curve_fit 将使用 NumPy 数组的值调用您的函数。 math.exp 不知道如何对 NumPy 数组进行操作,这会导致错误。不要使用math.exp,而是使用np.exp。

【讨论】:

  • 我不敢相信我解决了所有以前的错误并被困在这样的事情上。谢谢@Warren Weckesser,建议解决了问题.....
猜你喜欢
  • 2016-09-16
  • 2017-04-11
  • 1970-01-01
  • 2016-04-24
  • 2012-11-02
  • 2014-11-21
  • 2016-01-16
  • 1970-01-01
  • 2017-07-13
相关资源
最近更新 更多