急求,用matlab求擬合函式Y L 1 a exp b

2022-10-08 10:30:28 字數 5541 閱讀 4842

1樓:匿名使用者

解答如下:

分兩個步驟:

第一步建立函式模型的m檔案

開啟m編輯器,輸入如下**;

function yd=model(beta0,x)

%% l/1+a*exp(-b*x)

a=beta0(1);

b=beta0(2);

l=beta0(3);

x1=x;

yd=l./(1+a.*exp(-b.*x1));

儲存這個m檔案到work資料夾下,名稱為:model

第二步:在命令視窗中輸入如下**:

x=[0 1 2 3 4 5 6 7 8 9]';

y=[1 2.31969 4.50853 6.

90568 6.00512 5.56495 5.

32807 7.56101 8.9392 9.

5817]';

beta0=[3 0.3 11];

[beta,r,j]=nlinfit(x,y,'model',beta0)

執行後得到如下結果:

beta =

3.5457 0.3194 10.8337

r =-1.3833

-0.7098

0.7359

2.3149

0.5556

-0.7416

-1.7921

-0.2955

0.4443

0.5539

j =-0.5243 0 0.2200

-0.6155 2.1823 0.2797

-0.6935 4.9176 0.3483

-0.7461 7.9359 0.4238

-0.7638 10.8325 0.5031

-0.7432 13.1754 0.5822

-0.6883 14.6416 0.6573

-0.6088 15.1101 0.7253

-0.5171 14.6675 0.7842

-0.4243 13.5395 0.8334

其中的beta =

3.5457 0.3194 10.8337

依次便是方程的係數:a=3.5457 b=0.3194 l=10.8337

所以迴歸的結果是:

y=10.8337./(1+3.5457.*exp(-0.3194.*x))

畫出影象,在命令視窗中輸入如下**:

x=[0 1 2 3 4 5 6 7 8 9]';

x1=0:0.1:10;

y=[1 2.31969 4.50853 6.

90568 6.00512 5.56495 5.

32807 7.56101 8.9392 9.

5817]';

y1=10.8337./(1+3.5457.*exp(-0.3194.*x1));

plot(x,y,'+',x1,y1)

計算x=10的估計值,輸入如下**:

x=10;

回車執行後得到結果為:

y =9.4584

matlab擬合工具箱自定義函式中 中輸入y=l./(1+a*exp(-bt))出現錯誤,要擬合的函式是 泊松曲線,該怎麼輸入

2樓:匿名使用者

這個表示式輸入跟一般的書寫是一致的,不需要用點乘、點除之類的,直接寫表示式,但是乘除符號是必須要有的.你這個表示式明顯是錯的,「y=l./(1+aexp(-bt))」,這裡是

「l/」,「a*exp」,「b*t」,即:y=l/(1+a*exp(-b*t)).

再一個,使用自定義的函式表示式擬合時,其中的引數(l,a,b)是需要指定範圍的(當你輸入完函式表示式後,在表示式下方就會出現引數範圍設定),根據你自己的實際問題大概估計一下範圍就行,一般不能直接按照matlab預設的-inf到+inf去擬合,這樣往往弄不出來你想要的結果.

3樓:

點乘;或-b*t;試一下

請教如何用matlab擬合指數函式曲線:y=a*exp(b*x),不用cftool,用函式

4樓:匿名使用者

clc;clear

x=;%自己給資料

y=;%自己給資料

p=polyfit(x,log(y),1);

b=p(1);

a=p(2);

yfit=a*exp(b*x);

plot(x,y,'r-.')

plot(x,yfit,'b-.')

legend('擬合前','擬合後')

用matlab擬合 y=a*exp(x-b) 怎麼寫?

5樓:匿名使用者

你的擬合資料呢。發出來啊。

改成如下,試試。要點乘的

fun=inline('a(1).*exp(a(3).*(x-a(2)))','a','x')

6樓:匿名使用者

x=[......]

y=[......]

fun=inline('a(1)*exp(x-a(2))','a','x')

a=lsqcurvefit(fun,[0 0],x,y)a=a(1)

b=a(2)

求問怎麼在matlab中用縮張演算法擬合richards函式y =k / (1+a*exp(-bx))m?

7樓:匿名使用者

解答如下:分兩個步驟:第一步建立函式模型的m檔案開啟m編輯器,輸入如下**;functionyd=model(beta0,x)%%l/1+a*exp(-b*x)a=beta0(1);b=beta0(2);l=beta0(3);x1=x;yd=l.

/(1+a.*exp(-b.*x1));儲存這個m檔案到work資料夾下,名稱為:

求用y=a*exp(b*x)+c的方程用matlab來擬合,求引數值。 25

8樓:我行我素

從圖上可以看出,選用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.903e+006  (-3.354e+007, 3.734e+007)

p2 =  2.888e+007  (5.686e+005, 5.719e+007)

p3 =  7.472e+007  (1.333e+007, 1.361e+008)

p4 =  1.204e+008  (8.642e+007, 1.543e+008)

goodness of fit:

sse: 5.048e+015

r-square: 0.922

adjusted r-square: 0.883

rmse: 2.901e+007

畫出圖如下,

matlab中已知x,y資料,如何非線性擬合得到方程y=a/(1+(a/60.2-1)*exp(-b*x))中的a,b的值。

9樓:匿名使用者

目前沒想到什麼好方法,僅做參考:

最大似然法:

令f(x,y | a,b)=y-a/(1+(a/60.2-1)*exp(-b*x)),令(x_i, y_i)為一個樣本點。

那麼均方誤差e(a,b)=sum_^n 。

令grad(e)=0,求得最優的a和b。

可以查一查偏微分方程的數值解法,自己寫一個程式,解grad(e)=0。

10樓:小狐狸的利爪

先輸入x和y的資料。然後在matlab的工作欄輸入cftool.在彈出來的擬合工具箱內選擇變數為你的x和y.

然後右邊的擬合方法選擇custom equation,然後輸入你要擬合的式子的形式,按fit就可以擬合了。

用matlab求y=100-100*exp(-b*x^a)的引數a,b

11樓:匿名使用者

可以用非線性最小二乘法。由於本問題的特殊性,可以轉化為線性最小二乘法來求解。

首先,將原函式變形為:

ln(100-y)-ln(100)=-b*x^a

ln(100/(100-y))=b*x^a 記z=ln(100/(100-y)),則:

ln(z)=ln(b)+a*ln(x) 記y=ln(z),x=ln(x),beta=ln(b)則:

y=beta+a*x

然後線性擬合函式polyfit(x,y,1).(matlab是用最小二乘擬合的)

具體的m檔案:

clc;clear;

x=[3,10,20,30,40];

y=[0.024,0.129,0.163,0.201,0.268];

x=log(x);

y=log(log(100./(100-y)));

p=polyfit(x,y,1);

a=p(1)

beta=p(2);

b=exp(beta)

matlab 指數曲線擬合:y=a*exp((t-b)^2/c)

12樓:匿名使用者

定義擬合函

來數:function s=hansh(x,r)a=x(1);

b=x(2);

c=x(3);

s=a*exp((r-b)^2/c);

主函自數:

t=[219 222 223 226 229 233];

y=[352 2353 3513 6303 3521 3300]; %你的資料少個y

x0=[1 1 1]; %對a,b,c賦初值

[x,resnorm]=lsqcurvefit(@hansh,x0,t,y) %最小二乘曲線擬合

13樓:流浪的醉人

clear

t=[219 222 223 226 229];%你給的資料有問題,請自行調整

y0=[352 2353 3513 6303 3521];

y1=ones(size(y0),1);

y1=log(y0);%對原方程兩邊取對數p=polyfit(t,y1,2);%p為擬合多項式的係數,降冪排列c=1/p(1);%把取回對數後的式子整理答一下,就可以得到abc跟p的對應關係

b=-p(2)*c/2;

a=exp(p(3)-b^2/c);abc

14樓:匿名使用者

同意二樓做法,應該使用最佳平方逼近,但你的資料好像有問題啊

Matlab應用matlab怎麼用函式求超調量 上升時間等,不是在圖上顯示。如圖題目

幾種方法 1 利用控制系統工具箱的step求階躍響應,然後通過滑鼠操作在階回躍響應曲線上直答接獲取相關效能指標 g tf 25,1 4 25 step g 注意調節時間的誤差帶以及上升時間的定義可以通過properties對話方塊設定。2 利用二階系統的效能指標公式求,其中wn 5,zeta 0.4...

幫忙用matlab擬合一下這個多元函式

x1 0.1160 0.1020 0.1010 0.1000 0.0910 0.0830 0.0840 0.0760 x2 0.1780 0.2253 0.2869 0.4176 0.1548 0.1457 0.1240 0.0896 y 0.1863 0.2760 0.2396 0.3203 1....

用MATLAB求函式的泰勒展開式

syms x taylor exp 2 x 7 用matlab求函式的5階泰勒級數式。syms x taylor 1 2 x x 3 0.5 1 3 x x 2 1 3 x,expansionpoint 0,order 6 ans 239 x 5 72 119 x 4 72 x 3 x 2 6 結果...