用MATLAB拟合函数,关系式y=a/(b+x^(-c)),求参数a b c的值
XY=[25,3.1;100,6.06;225,7.99;400,9.52;625,10.81;900,11.93;1225,12.93;1600,13.84;2025,...
XY=[25,3.1;100,6.06;225,7.99;400,9.52;625,10.81;900,11.93;1225,12.93;1600,13.84;2025,14.65;2500,15.41;3025,16.14;3600,16.82;4225,17.47;4900,18.08;5625,18.65;6400,19.22;7225,19.75;8100,20.25;9025,20.73;10000,21.18]; 给算一下吧!有MATLAB的安装包么 32位的 发给我 呗~
展开
1个回答
展开全部
1
2
3
4
5
6
7
8
9
10
11
[x,I]=sort(x);y=y(I);%由于你的数字是杂乱的,我排列一下
f=@(a,x)a(1).*x.^(a(2))+a(3);
%拟合形式,数组a即代表[a,b,c]
a0=[1,0.02,-5];
%
假设初始值
r=lsqcurvefit(f,a0,x,y);
%非线性拟合
%拟合结果保存在r=[a,b,c]
plot(x,y)
hold
on
plot(x,r(1)*x.^r(2)+r(3),'r--')
legend('拟合前','拟合后')
disp(r)
2
3
4
5
6
7
8
9
10
11
[x,I]=sort(x);y=y(I);%由于你的数字是杂乱的,我排列一下
f=@(a,x)a(1).*x.^(a(2))+a(3);
%拟合形式,数组a即代表[a,b,c]
a0=[1,0.02,-5];
%
假设初始值
r=lsqcurvefit(f,a0,x,y);
%非线性拟合
%拟合结果保存在r=[a,b,c]
plot(x,y)
hold
on
plot(x,r(1)*x.^r(2)+r(3),'r--')
legend('拟合前','拟合后')
disp(r)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询