天天看點

lsqnonlin函數_matlab非線性最小二乘函數

函數文法

x = lsqnonlin(fun,x0)

函數用于:

解決非線性最小二乘(非線性資料拟合)問題

解決非線性最小二乘曲線拟合問題的形式

lsqnonlin函數_matlab非線性最小二乘函數

變量x的限制上下限為ub和lb,

lsqnonlin函數_matlab非線性最小二乘函數

x = lsqnonlin(fun,x0)從x0點開始,找到fun中描述的函數的最小平方和。函數fun應該傳回一個向量(或數組),而不是值的平方和。(該算法隐式地計算了fun(x)元素的平方和。)

舉例:

從指數衰減模型和噪聲中生成資料。模型是

lsqnonlin函數_matlab非線性最小二乘函數

t在0~3之間取值

問題是:給定資料(d, y),找出最适合資料的指數衰減率。

建立一個匿名函數,該函數接受指數衰減率r的值,并傳回與該衰減率和資料的模型不同的向量。

fun = @(r)exp(-d*r)-y;
           

求出最優衰減率的值。任意選擇一個初始值x0 = 4

x0 = 4;
x = lsqnonlin(fun,x0)
           

局部最小值

lsqnonlin停止了,因為相對于其初始值的平方和的最終變化小于函數容差的值。

x = 1.2645
           

繪制資料和最佳拟合指數曲線

plot(d,y,'ko',d,exp(-x*d),'b-')
legend('Data','Best fit')
xlabel('t')
ylabel('exp(-tx)')
           
lsqnonlin函數_matlab非線性最小二乘函數

繼續閱讀