matlab,最小二乘法,指數型函式

時間 2021-09-07 05:17:17

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因...