跳至內容

使用最小二乘法擬合乘冪函數y=a*x^b和指數函數y=b*exp(a)

更新時間
快连VPN:速度和安全性最佳的VPN服务
快连VPN:速度和安全性最佳的VPN服务

運用最小二乘法分別進行乘冪函數 y a x^b指數函數y b expa x曲

x=[0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43];

y=[0.211 0.313 0.466 0.692 1.03 1.532 2.190 3.250 4.823 7.158];

擬合第一個:

function f = first(c, x, y)

f = y - c(1) .* x .^ c(2);

保存爲first.m文件。

命令行下運行:

c = lsqnonlin('first', [0 0], [], [], [], x, y);

a = c(1)

b = c(2)

擬合第二個:

function f = first2(c, x, y)

f = y - c(2) .* exp(c(1) .* x);

保存爲first2.m文件。

命令行下運行:

c2 = lsqnonlin('first2', [0 0], [], [], [], x, y);

a2 = c2(1)

b2 = c2(2)

如何使用matlab進行最小二乘法擬合

用polyfit函數,(用來多項式擬合的,是用最小二乘法)

舉個例子

x=[90 91 92 93 94 95 96];

z=[70 122 144 152 174 196 202];

a=polyfit(x,z,1)

結果:

a =

1.0e+03 *

0.0205 -1.7551

1表示1次多項式(一次時就是直線,適用於你的情況)

a是多項式的係數向量,是從高次項往低次項排的,

如果想運用結果,比如想知道當x=97時z等於多少

那麼有兩種方法,

直接用係數

>>a(1)*97+a(2)

ans =

233.4286

或者用polyval函數

>>polyval(a,97)

ans =

233.4286

最小二乘法的應用??

最小二乘法是一種數學優化技術,它通過最小化誤差的平方和找到一組數據的最佳函數匹配。

最小二乘法是用最簡的方法得一些絕對不可知的真值,而令誤差平方之和爲最小。

最小二乘法通常用於曲線擬合。很多其他的優化問題也可通過最小化能量或最大化熵用最小二乘形式表達。

比如從最簡單的一次函數y=kx+b講起

已知座標軸上有些點(1.1,2.0),(2.1,3.2),(3,4.0),(4,6),(5.1,6.0),經過這些點的圖象的一次函數關係式.

當然這條直線不可能經過每一個點,我們只要做到5個點到這條直線的距離的平方和最小即可,這這就需要用到最小二乘法的思想.然後就用線性擬合來.講起來一大堆,既然你只問最小二乘法,我就講這麼多.

這是大學裏才學的內容,一般用於建模.

以上就是使用最小二乘法擬合乘冪函數y=a*x^b和指數函數y=b*exp(a)的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。