对两bai边取对数,得到dulny=rx+lna.这就变成了一个使用lny和x对zhir和lna的一个线性拟dao合.如果使专用MATLAB程序如下(假属设你的x和y都是列向量):A(:,1)=x;A(:,2)=ones(length(x),1);b=log(y);aa=(A'*A)\(A'*b);得到的依次分别是r和防采集。
1、首先对baiy=a*exp(-b/t)进行变量替换,令duT=1/t,Y=log(y),则方程可化成zhi
%先写这样一个函数 function f=fun(c, xdata) xdata = 0:0.2:5; ydata = 2 - exp(0.3.*xdata); f=c(1) - exp(c(2).*xdata) - ydata; end % 然后 c0 = [1, 1]; % 初始值 lsqnonlin('fun', c0) ans = 2.0000 0.3000 >>
Y=log(y)=b*log(e)*T+log(a)。
1、首先对y=a*exp(-b/t)进行变量替换,令T=1/t,Y=log(y),则方程可化成 Y=log(y)=b*log(e)*T+log(a)。 2、按变量代换,将t,y替换成T、Y,即 T=[1/5,1/10,1/15,。。。] Y=[log(1.27),log(2.16),log(2.86),。。。] 3、最后,用polyfit()去拟合
2、按变量代dao换,将t,y替换成T、Y,即
T=[1/5,1/10,1/15,。。版。]
Y=[log(1.27),log(2.16),log(2.86),。。。]
3、最后权,用polyfit()去拟合,即
p=polyfit(T,Y,1) %Y=A*T+B,A=b*log(e),B=log(a)
通过拟合,得到
a=5.2151;b=-7.4962
你的支持,就是对我的鼓励。如有不懂的地方,可以私聊。.12.15 0:19答
%方法一y=[50 40 30 20 10 ]; t=[55 63 73 100 121];yp=log(y);p = polyfit(t,yp,1);b=-p(1)a=exp(p(2))yf=a*exp(-b*t);yf-yplot(t,y,'r+',t,yf,'b-')legend('原始点','拟合线')%方法二62616964757a686964616fe4b893e5b19e31333335313839 %% Fit: 'exp1'.[xData, yData] = prepareCurveData( t, y );% Set up fittype and options.ft = fittype( 'exp1' );opts = fitoptions( ft );opts.StartPoint = [145.2 -0.3];% Fit model to data.[fitresult, gof] = fit( xData, yData, ft, opts );% Plot fit with data.figure( 'Name', 'untitled fit 1' );h = plot( fitresult, xData, yData );legend( h, 'y vs. t', 'exp1', 'Location', 'NorthEast' );% Label axesxlabel( 't' );ylabel( 'y' );fitresultgof%方法三 y=[50 40 30 20 10 ]'; yp=log(y); t=[55 63 73 100 121]'; tl=ones(size(t)); t1=[tl t]; p=t1\yp;b=-p(2)a=exp(p(1))yf=a*exp(-b*t);yf-yplot(t,y,'r+',t,yf,'b-')legend('原始点','拟合线')%方法四regress追问你好,能把那个曲线的未知系数求出来吗?程序,再次感谢追答你拟合的目的就是求出a和b,每个程序都能求出来的。b = 0.0229a = 172.2620,clc;clear all;y=[50 40 30 20 10 ]; x=[55 63 73 100 121];a=[145.2345667367 -0.02061401470466 ];%设置2113初值,很关键。f=@5261(a,x)a(1)*exp(-a(2)*x);nlinfit(x,y,f,a)%可以利用toolbox里面的拟合4102函数来确定初值:1653(先在版窗口输入x,y值)权command window输入cftool,然后再data里面选x,y数值。create data set。Fitting里面选择new fit, type of fit 里面选择exponential,单击apply。在result里面就可以看到a,b的值。(还有不同的组合)然后你点击File,Generate M-file.打开你生成的M-File,里面有st_就是matlab设置的初值。希望可以帮到你内容来自请勿采集。
matlab 线性拟合polyfit_matlab最小二乘法拟合y=a*exp(-b/t) 转换成线性用polyfit怎么写程序啊 有偿私聊我...