python - 如何解决绘图变量尺寸不匹配的错误?

标签 python curve-fitting scipy-optimize

我正在尝试将使用公式 1 生成的数据拟合到公式 2 中。前者有3个参数,后者有5个拟合参数。但现在由于形状不匹配,我在绘制拟合曲线时遇到错误。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def func(x, a, b, c, d, e):
    return (((a/e) * (2*x)**b) + (d * (2*x)**c))

y = []
x = []
A = 6.7
B = 2.0
C = 0.115
for N in np.logspace(1, 9., 100, base = 10.):
    x.append(int(N))
    y.append(np.exp((A-np.log(int(N)))/B)+C)
plt.loglog(x, y, 'b:*', label='data')

popt, pcov = curve_fit(func, x, y)
print(popt)
plt.loglog(x, func(x, *popt))

我想查看拟合曲线,但最后一行有尺寸错误 '''plt.loglog(x, func(x, *popt))'''

最佳答案

实现此目的的一种方法是创建一个列表 y_model,在其中添加与每个 x 相对应的元素 y。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def func(x, a, b, c, d, e):
    return (((a/e) * (2*x)**b) + (d * (2*x)**c))

y = []
x = []
A = 6.7
B = 2.0
C = 0.115
for N in np.logspace(1, 9., 100, base = 10.):
    x.append(int(N))
    y.append(np.exp((A-np.log(int(N)))/B)+C)

popt, pcov = curve_fit(func, x, y)

y_model = []
for e in x:
    y_model.append(func(e, *popt))

plt.loglog(x, y, 'b:*', label='data')
plt.loglog(x, y_model)

结果:

enter image description here

关于python - 如何解决绘图变量尺寸不匹配的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169868/

相关文章:

python - 用于简单 python 应用程序的传统 SQL 与 MongoDB/CouchDB

python - 验证 Flask WTF 表单中的选择字段

python - 如何使 scipy.optimize.curve_fit 产生更好的正弦回归拟合?

基于缺货的替代的Python非线性编程模型返回 'function'对象而不是iterab

python - 是否存在运算符(operator)错误,因为执行后它说不明确错误。我在做什么错误?

python - Scipy 拟合向量中的参数

python - 使用具有向后依赖性的 scipy 进行曲线拟合

python - SciPy:将参数传递给 optimize.shgo 函数

python - 打印选择的 scipy.optimize.minimize 方法

python - 在 Python 中用名称绘制 (x,y) 坐标