微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 scipy (curve_fit)

如何解决使用 scipy (curve_fit)

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

我是 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,n_max),x_data,y_data)

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

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

  1. 我需要计算一个总和....尽管 Stack 上有几个例子,但我不知道如何处理它。用几行来解释它会很棒。
  2. 参数“a”和“n”应该是我将根据情况提供的固定值。所以不应该对它们进行优化。 (这应该在 curve_fit 中使用 lambda 来解决。)

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

解决方法

curve_fit 将使用 NumPy 数组的值调用您的函数。 math.exp 不知道如何操作 NumPy 数组并导致错误。使用 np.exp 而不是使用 math.exp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。