1樓:匿名使用者
問題分析
time = 0:1:24;
tem = [15,14,14,14,14,15,16,18,20,20,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16];
f = inline('x(1)*exp(-x(2)*(t-x(3)).^2)', 'x', 't');
x0 = [30 0.1 15];
x = lsqcurvefit(f,x0,time,tem)
plot(time,tem,'-o',time,f(x,time),'r.:');
得到的擬合係數(依次為a、b、c):
optimization terminated: relative function value
changing by less than options.tolfun.
x =27.7940 0.0057 14.2074
改進擬合公式
如果考慮修改擬合公式,加入乙個常數項d,即a*exp(-b*(t-c)^2)+d,則**修改如下:
time = 0:1:24;
tem = [15,14,14,14,14,15,16,18,20,20,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16];
f = inline('x(1)*exp(-x(2)*(t-x(3)).^2)+x(4)', 'x', 't');
x0 = [30 0.1 15 14];
x = lsqcurvefit(f,x0,time,tem)
plot(time,tem,'-o',time,f(x,time),'r.:');
程式執行結果如下:
optimization terminated: relative function value
changing by less than options.tolfun.
x =16.6593 0.0283 14.5690 14.1598
由圖可見,效果相對而言比較理想。
2樓:
如果能加上乙個直流偏置項的話,可以得到比較滿意的擬合精度。
而只按您要求的模型,擬合誤差會很大(rmse=2)。可能是我自己估計的引數初始值有問題?您能給一組可靠些的初始值麼?下圖是取對數後做二次函式擬合的結果。
最小二乘法擬合指數函式,matlab polyfit線性擬合問題
3樓:兩性情感社
%方法一
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-y
plot(t,y,'r+',t,yf,'b-')
legend('原始點','擬合線')
%方法二
%% 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 axes
xlabel( 't' );
ylabel( 'y' );
fitresult
gof%方法三
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-y
plot(t,y,'r+',t,yf,'b-')
legend('原始點','擬合線')
%方法四
regress
用matlab最小二乘法擬合指數函式 10
4樓:匿名使用者
^myfun。抄m
function y = myfun(beta,x)a=....
b=....
c=....
m=beta(1);
n=beta(2);
y=a*(b^m)*(c*x^n)
視窗bai
下執行以du下命zhi令
beta0=rand(1,2)
[beta,r,j]=nlinfit(x,y,@daomyfun,beta0);
5樓:哦的啊
呵呵copy,還需要
bai轉換du一次啊。及
zhiy1=exp(z1)
clear all
x=[1971:1990];
y=[8.5229 8.7177 8.
9221 9.0859 9.2420 9.
3717 9.4974 9.6259 9.
7542 9.8705 10.0072 10.
1654 10.3008 10.4357 10.
5851 10.7507 10.9300 11.
1026 11.2704 11.4333];
fun=inline('exp(a(1)*t+a(2))','a','t')
a=nlinfit(x,y,fun,[0.01 -20])xx=1970:1990;
yy=exp(a(1)*xx+a(2));
plot(x,y,'o',xx,yy)
z=log(y);
p=polyfit(x,z,1)
z1=polyval(p,x);
y1=exp(z1);
figure
plot(x,y,'*',x,y1)
結果dao:
a =0.014631 -26.68p =0.01468 -26.777
6樓:匿名使用者
matlab有自帶的擬合程式的。
最小二乘法擬合指數函式(matlab程式設計),著急,請指點!
7樓:五味子芊
%方法一
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-y
plot(t,y,'r+',t,yf,'b-')
legend('原始點','擬合線')
%方法二
%% 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 axes
xlabel( 't' );
ylabel( 'y' );
fitresult
gof%方法三
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-y
plot(t,y,'r+',t,yf,'b-')
legend('原始點','擬合線')
%方法四
regress
用matlab 最小二乘法擬合指數曲線
8樓:匿名使用者
用曲線擬合工具箱做,很簡單的,不過x,y的值要到你的工作空間裡去,如圖,這裡的a,b相當於你的c,n
幫我用matlab用最小二乘法擬合乙個人口指數增長模型和阻滯增長模型,只要擬合出來的函式影象,資料如下:
9樓:匿名使用者
t = 2004:2012;
x = [714.33 720.22 730.51 759.67 780.37 798.62 833.89 843.23 857.97];
% 模型一: 指數增長模型。
y = log(x);
a = polyfit(t,y,1);
r = a(1);
x0 = exp(a(2));
x1 = x0 * exp(r*t);
% 模型二:阻滯增長模型
f = @(a,t) a(1)./(1+(a(1)/x(1)-1)*exp(-a(2)*(t-t(1))));
a = lsqcurvefit(f,[880 1],t,x);
plot(t,x,'o',t,x1,'r:.')x2 = f(a,t);
plot(t,x,'o',t,x1,'r:.',t,x2,'g*--')
legend('原始資料','指數增長模型','阻滯增長模型',2)xlabel 年份; ylabel 人口(萬人)
10樓:情如氮磷鉀
阻滯模型我沒搞出來,只有指數型。
用最小二乘法求形如原型函式為y(x)=a*exp(bx)得經驗公式...要求用matlab..... 20
11樓:匿名使用者
% 1、擬合和很多因素有關,比如初值、擬合函式的選擇、演算法設定等。
% 2、從結果看,你現在的擬合函式形式不太適合所給的資料,請重新考慮其他形式的函式。
% 3、懷疑x的第乙個點(7.2)是否正確,請核實。
x=[7.2 2.7 3.5 4.1 4.8];
y=[65 60 53 50 46];
f = inline('c(1)+exp(c(2)*x)','c','x');
opt = optimset('maxfunevals',1e5);
c = lsqcurvefit(f, [0 0], x, y,,,opt);
a = c(1)
b = c(2)
% 把擬合結果與原始資料對照
plot(x,y, '-o', x, f(c, x), 'r:x');
legend('原始資料', '擬合函式')
最小二乘法程式(C語言,matlab都可以)
我的數學網路 t 20 t為隨機數個數 x 1 t y rand 1,t 隨即產生t個隨機數,範圍是0到1,你也可以都乘以某個常數 n 1 直線擬合n就取1,p polyfit x,y,n 計算n次多項式係數p xi linspace 0,t,100 linspace用於產生x1,x2之間的n點行向...
怎樣使用excel計算最小二乘法
擊掌慶賀 設yi a bxi 將已知yi,xi列於excel表a,b列中例如yi位於a1 a10,xi位於b1 b10則可利用函式計算 斜率 slope a1 a10,b1 b10 截距 intercept a1 a10,b1 b10 怎樣用excel進行多元最小二乘法的計算? 1 將方程組輸入ex...
請問Eviews做出最小二乘法的結果,這個圖怎麼看呢,主要的
最後乙隻恐龍 coefficient是係數,ser02 10是這些變數 有些變數比如01沒有意義,捨去了 c是常數項 eviews最小二乘法得到的結果,每個資料是什麼意思? 劉得意統計服務 內容很多,抓 copy關鍵點就行了。一看判定系bai數r方,為0.72,擬合優度尚du可。具體地說,在zhi因...