如何用Excel(或者origin MATLAB)来拟合二元二次函数么?
想要拟合i=(k1*p+d1)*(k2*n+d2)这个函数,i是因变量,p和n是两个自变量。怎么用Excel来拟合?如果不行,Origin呢?Matlab?如果都不行,该...
想要拟合i=(k1*p+d1)*(k2*n+d2)这个函数,i是因变量,p和n是两个自变量。
怎么用Excel来拟合?如果不行,Origin呢?Matlab?如果都不行,该怎么办?谢谢了!
i p n
0.255 0.1 0
0.28 0.133333333 0.75
0.43 0.15 1
0.35 0.2 0
0.46 0.233333333 0.428571429
0.48 0.3 1
0.29 0.333333333 0.3
0.4 0.4 0.75
0.435 0.4 0
0.37 0.433333333 0.230769231
0.39 0.5 0.6
0.54 0.566666667 0.882352941
0.61 0.6 1 展开
怎么用Excel来拟合?如果不行,Origin呢?Matlab?如果都不行,该怎么办?谢谢了!
i p n
0.255 0.1 0
0.28 0.133333333 0.75
0.43 0.15 1
0.35 0.2 0
0.46 0.233333333 0.428571429
0.48 0.3 1
0.29 0.333333333 0.3
0.4 0.4 0.75
0.435 0.4 0
0.37 0.433333333 0.230769231
0.39 0.5 0.6
0.54 0.566666667 0.882352941
0.61 0.6 1 展开
2个回答
展开全部
首先令p = x1,n = x2.i = y将问题化成一般式,即:
然后在MATLAB中用regress函数进行拟合,代码如下:
clear
clc
y = [0.255 0.28 0.43 0.35 0.46 0.48 0.29 0.4 0.435 0.37 0.39 0.54 0.61];
x1 = [0.1 0.1333 0.15 0.2 0.2333 0.3 0.3333 0.4 0.4 0.4333 0.5 0.5666 0.6];
x2 = [0 0.75 1 0 0.4286 1 0.3 0.75 0 0.2308 0.6 0.8823 1];
xx = [ones(13,1) x1' x2' (x1.*x2)'];
[b,bint,r,rint,stats] = regress(y',xx)
这里b返回的就是各个拟合参数,拟合结果如下:
下面是验证拟合结果的代码(也可以从上面函数后几个参数看出):
yy = 0.2719 + 0.2033*x1 + 0.0508*x2 + 0.2032*x1.*x2;
absr = abs(yy-y)./y*100;
stem(1:13,absr)
legend('数据点处误差百分比')
figure
bar([y',yy'])
legend('原数据','拟合后数据')
结果如下:
效果还行,我就不用其他函数拟合了。事实上,不同的函数拟合结果略有差别。效果不好时可以换其他函数拟合试试。
追问
[b,bint,r,rint,stats] = regress(y',xx)
这个为什么要用y',那个’代表什么意思?用y不可以么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询