如何用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
展开
 我来答
吓栋栋
推荐于2017-10-03 · TA获得超过2831个赞
知道小有建树答主
回答量:386
采纳率:100%
帮助的人:186万
展开全部

首先令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不可以么?
希波鸿0HDeac
2015-07-30 · TA获得超过427个赞
知道小有建树答主
回答量:591
采纳率:68%
帮助的人:162万
展开全部
MATLAB 必须可以啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式