用MATLAB拟合函数,关系式y=a/(b+x^(-c)),求参数a b c的值

20组(x,y)值,(3.1,25),(6.06,100),(7.99,225),(9.52,400),(10.81,625),(11.93,900),(12.93,1225),(13.84,1600),(14.65,2025),(15.41,2500),(16.14,3025),(16.82,3600),(17.47,4225),(18.08,4900),(18.65,5625),(19.22,6400),(19.75,7225),(20.25,8100),(20.73,9025),(21.18,10000)
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];

clc;clear all
XY=[3.1,25;6.06,100;7.99,225;9.52,400;10.81,625;11.93,900;12.93,1225;13.84,1600;14.65,2025;15.41,2500;16.14,3025;16.82,3600;17.47,4225;18.08,4900;18.65,5625;19.22,6400;19.75,7225;20.25,8100,;20.73,9025;21.18,10000];
x=XY(:,1);
y=XY(:,2);
plot(x,y)
f=@(a,x) a(1)./(a(2)+x.^(-a(3))); %拟合形式,数组a即代表[a,b,c]
a0=[1,0.02,-5];  % 假设初始值
r=lsqcurvefit(f,a0,x,y);
hold on
plot(x,r(1)./(r(2)+x.^(-r(3))),'r--')
legend('拟合前','拟合后')
disp(r)

计算出:

a、b、c=

    0.2082   -0.0000    3.3837

追问

我x,y写反了 x从25—10000 y从3.1—21.18
再帮我算一下呗 算完就采纳你的答案!

追答

clc;clear all
XY=[3.1,25;6.06,100;7.99,225;9.52,400;10.81,625;11.93,900;12.93,1225;13.84,1600;14.65,2025;15.41,2500;16.14,3025;16.82,3600;17.47,4225;18.08,4900;18.65,5625;19.22,6400;19.75,7225;20.25,8100,;20.73,9025;21.18,10000];
y=XY(:,1);
x=XY(:,2);
plot(x,y)
f=@(a,x) a(1)./(a(2)+x.^(-a(3))); %拟合形式,数组a即代表[a,b,c]
a0=[1,1,1]; % 假设初始值
r=lsqcurvefit(f,a0,x,y);
hold on
plot(x,r(1)./(r(2)+x.^(-r(3))),'r--')
legend('拟合前','拟合后')
disp(r)

abc=

1.0995 0.0273 0.4007

٩(๑òωó๑)۶

追问

我在补充问题中把数据修改了 是XY=[ ]中的数据 你再给算一下呗 谢谢了

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-25
[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)追问

拟合出来的结果a,b,c分别是多少啊?我要和R语言做的结果对比一下

用MATLAB拟合函数,关系式y=a\/(b+x^(-c)),求参数a b c的值
:,1);x=XY(:,2);plot(x,y)f=@(a,x) a(1).\/(a(2)+x.^(-a(3))); %拟合形式,数组a即代表[a,b,c]a0=[0,8,1]; % 假设初始值r=lsqcurvefit(f,a0,x,y);hold onplot(x,r(1).\/(r(2)+x.^(-r(3))),'r--')legend('拟合前','拟合后')disp(r)我有2013a的...

matlab拟合问题 y=a*exp(b*x) + c*exp(d*x) 知道x y的值 怎么得到参数...
a= 0.0208 b= 0.9515 c= 1.0649 d= -2.1877 当x=1.64时,y=0.1287

matlab拟合曲线并输出公式是什么?
f=poly2sym(p)f=3*x^5+5*x^4+x^2+12 要是用lsqcurvefit,就在用subs把结果带入函数就好了。在拟合工具箱里面选择需要拟合的目标函数形式,输出就是那个目标函数的待定参数。例如,如果选择和3次多项式ax^3+bx^2+cx+d,则输出a,b,c,d这4个参数。

matlab 已知x、y值以及函数,求未知参数
ydata=(ydata1,ydata2,…,ydatan)lsqcurvefit用以求含参量x(向量)的向量值函数 F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T 中的参变量x(向量),使得1\/2*∑[a+b*exp(-0.02*k*t(i))-c(i)]^2最小 1.先定义个函数fun function y=fun(x,t)y=(x(1)+x(2)...

matlab怎样给参数赋不同的值得到不同的图形?例如:y=a*sinx+b*exp(x...
clc,clear x=-4:4;a=ceil(rand(1)*10);%给a赋值 b=ceil(rand(1)*5);%给b赋值 y=a*sin(x)+b*exp(x);plot(x,y)每次运行,图形都不一样。a、b都可以设定产生随机数的范围。

在SPSS里怎么拟合y=ax\/(b+x),确定a,b,以及相关系数
解决你问题的关键在把上式改成线性结构的表达式,即改写为1\/y=(b\/a)x+1\/a。此时,换算一组新的样本数据,z=1\/y,且设c=b\/a和d=1\/a。那么上式可以写为z=cx+d。对z和x做简单线性回归得到c和d,最后换算出a和b。SPSS以及大部分统计分析软件的回归分析都只能处理线性结构的表达式,复杂结构...

matlab对数拟合。需要求出y=alg(x)+b中的a、b的值
该问题可以用非线性回归函数(nlinfit)来拟合,拟合后可以得到 a=-30.4275,b=-30.7388 决定系数R²:0.91703

matlab中lsqcurvefit函数进行函数拟合,拟合函数为y=a+be^(-0.0001kx...
a,x)a(1)+a(2)*exp(-a(3)*0.0001*x); %拟合形式,数组a即代表[a,b,c]a0=[1,1,1]; % 假设初始值r=lsqcurvefit(f,a0,x,y);%非线性拟合%拟合结果保存在r=[a,b,k]plot(x,y)hold onplot(x,r(1)+r(2)*exp(-r(3)*0.0001*x),'r--')legend('拟合前','拟合后'...

知道x,y的一系列数据,用matlab求拟合方程的参数。
您好,你可以用nlinfit()函数拟合,精度比较高。2、用matlab的拟合工具箱cftool也是非常方便,而且不用编程。你只要将y=d*(b-exp(-x\/c))*exp(-2*a*log(b*exp(x\/c)-1))输入自定义函数(General Equations)命令框内,就可以得到其拟合系数。用lsqcurvefit()函数和nlinfit()函数进行拟合...

求用y=a*exp(b*x)+c的方程用matlab来拟合,求参数值。
从图上可以看出,选用y=a*exp(b*x)+c进行拟合是不对的,应改用polynomial中的 cubic polynomial,我试着拟合得:Linear model Poly3:f(x) = p1*x^3 + p2*x^2 + p3*x + p4 where x is normalized by mean 2007 and std 3.028 Coefficients (with 95% confidence bounds):p1 = 1....

相似回答