xdata = [0.03447378, 0.06894757, 0.10342136, 0.13789514, 0.17236893,
0.20684271, 0.24131649, 0.27579028, 0.31026407, 0.34473785,
0.37921163, 0.41368542, 0.44815921, 0.48263299]
ydata = [ 2.5844 , 2.87449, 3.01929, 3.10584, 3.18305, 3.24166,
3.28897, 3.32979, 3.35957, 3.39193, 3.41662, 3.43956,
3.45644, 3.47135]
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def func(x, a, b, c, d):
return a + b*x - c*np.exp(-d*x)
popt, pcov = curve_fit(func, xdata, ydata))
plt.figure()
plt.plot(xdata, ydata, 'ko', label="Original Noised Data")
plt.plot(xdata, func(xdata, *popt), 'r-', label="Fitted Curve")
plt.legend()
plt.show()
这是代码运行的唯一方式。有没有办法将值直接传递给pair1对象实例
答案 0 :(得分:0)
您将错误的类型传递给构造函数:
"Jack"
的类型为const char[5]
,第二个参数28.2
的类型为double
您的构造函数虽然期望std::vector<string>
和std::vector<double>
。所以问题是你的构造函数期待一个字符串和双打的“列表”,你没有给他什么
考虑到您班级的名称,正确的解决方案应该是:
class NamePairs
{
private:
double age;
std::string name;
public:
NamePairs(const std::string& name, double Age)
{
this->name = name;
this->age = age;
}
};
现在您可以像这样实例化它:
NamePairs pair("Alfred", 43.4);
另请考虑使用std::pair
考虑到你想要一个每个人都有名字和年龄的人员名单,那里有一些不同的解决方案:
您可以创建一个具有两个属性的类Person
:
class Person
{
private:
double Age;
std::string Name;
public:
Person(double age, const std::string& name)
{
Age = age;
Name = name;
}
};
并使用它:
std::vector<Person> persons;
persons.push_back(Person(23.4, "Alfons");
或者你也可以(更像你的尝试)创建一个类PersonList:
class PersonList
{
private:
std::vector<double> Ages;
std::vector<std::string> names;
public:
void addPerson(double Age, const std::string& Name)
{
Ages.push_back(Age);
Names.push_back(Names);
}
};
并使用它:
PersonList list;
list.addPerson(23.5, "Andrea");
我更喜欢第一种方法,因为如果它们不在列表中(例如,由访问者返回或传递给其他函数/对象,或者如果您需要对他们进行操作)。它对我来说看起来更干净