import pandas as pd
import math
import numpy as np
from scipy.optimize
import curve_fit
L_data = np.array([0.856, 0.451])
t_data = np.array([0.398, 0.507])
y_data = np.array([0.63, 0.5])
def model(x, c1, c2):
x = ([L, t])
return ((480 / c2) * (math.sqrt(((1 + (c1 ** 2)) / 3)) * np.cos((L * math.pi) / 6)) + c1 * (t + (1 / 3) * np.sin((L * math.pi) / 6))) ** (-1 / 0.19741)
xd = [L_data, t_data]
p0 = 0.003, 231
popt, pcov = curve_fit(model, xd, y_data, p0)
我试图曲线拟合一个多变量模型与2个参数没有任何运气。我发现的文档主要关注单个变量。我试着跟随其他关于链接和解包的帖子,但我一直得到这个错误消息“TypeError:can 't multiply sequence by non-int of type 'float'"错误链接到代码的最后一行。除了这个错误,我还需要修改代码以获得更好的解决方案吗?
y是模型的输出。
我是Python新手,所以任何帮助都很感激。谢谢
我尝试将输入更改为np.array
,但这并没有解决问题
2条答案
按热度按时间67up9zun1#
在你的代码中,你试图用一个浮点数乘以一个数组,就像这个例子一样;
对于多元曲线拟合,请选中此answer。
bbmckpt72#
这不是曲线拟合问题;你只有两个数据点这实际上是一个二维的寻根问题。
以下内容修复了大部分问题,包括解包问题;但如何更好地配合,已超出了这个问题的范围。