函數文法
x = lsqnonlin(fun,x0)
函數用于:
解決非線性最小二乘(非線性資料拟合)問題
解決非線性最小二乘曲線拟合問題的形式
變量x的限制上下限為ub和lb,
x = lsqnonlin(fun,x0)從x0點開始,找到fun中描述的函數的最小平方和。函數fun應該傳回一個向量(或數組),而不是值的平方和。(該算法隐式地計算了fun(x)元素的平方和。)
舉例:
從指數衰減模型和噪聲中生成資料。模型是
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)')