mathematica非线性拟合拟合的形式是Log((5.47-2*a+y)/(4*y-2*a))=1/150*b*x ,我有一批x相应y的数据,想求参数a、b.用mathematica应该怎么写啊?(包括x、y的录入方式也不知道.)
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 22:47:02
mathematica非线性拟合拟合的形式是Log((5.47-2*a+y)/(4*y-2*a))=1/150*b*x ,我有一批x相应y的数据,想求参数a、b.用mathematica应该怎么写啊?(包括x、y的录入方式也不知道.)
mathematica非线性拟合
拟合的形式是Log((5.47-2*a+y)/(4*y-2*a))=1/150*b*x ,我有一批x相应y的数据,想求参数a、b.用mathematica应该怎么写啊?(包括x、y的录入方式也不知道.)
mathematica非线性拟合拟合的形式是Log((5.47-2*a+y)/(4*y-2*a))=1/150*b*x ,我有一批x相应y的数据,想求参数a、b.用mathematica应该怎么写啊?(包括x、y的录入方式也不知道.)
data = {{1, 1.81747}, {2, 1.8204}, {3, 1.82137}, {4, 1.82186}, {5, 1.82216}, {6, 1.82235}, {7, 1.82249}, {8, 1.8226}, {9, 1.82268}, {10, 1.82275}, {11, 1.8228}, {12, 1.82284}, {13, 1.82288}, {14, 1.82291}, {15, 1.82294}, {16, 1.82297}, {17, 1.82299}, {18, 1.82301}, {19, 1.82302}, {20, 1.82304}};
solu = Flatten[Solve[Log[10,(5.47 - 2 a + y)/(4 y - 2 a)] == 1/(150 b x), y]];
fitparameter = (FindFit[data, y /. solu, {a, b}, x])
fit = y /. solu /.fitparameter;
Show[ListPlot[data, PlotStyle -> Red], Plot[fit, {x, 1, 20}]]
将上述代码中的data输入成你需要的数据点即可,最后一行代码中的{x, 1, 20}用来调整画图的定义域范围