解:
建立m檔案,命名為fun.m好了:
function f=fun(a,x1,x2,x3,x,y)
f=sqrt((a(1)+a(3)*cos(x1+a(6))+a(4)*cos(x1+x2+a(6)+a(7))+a(5)*cos(x1+x2+x3+a(6)+a(7)+a(8))-x).^2+...
(a(2)+a(3)*sin(x1+a(6))+a(4)*sin(x1+x2+a(6)+a(7))+a(5)*cos(x1+x2+x3+a(6)+a(7)+a(8))-y).^2);
儲存在work資料夾下
呼叫該檔案求解:
a0=ones(1,8); %取初始值
x1=?; x2=?; x3=?; x=?; y=?;
%上面這一行既然為已知量,請你在"?"號處自己賦值
[a,norm]=lsqnonlin(@fun,a0,[],[],[],x1,x2,x3,x,y)
注意到:
1)|x-X|與|y-Y|在同一組a值下同時達到最小不是自然的,所以這一題取的是|x-X|.^2+|y-Y|.^2的最小,即最後一式輸出的norm,誤差的平方和,是|x-X|^2+|y-Y|^2;
2)由於你沒有給我 x1,x2,x3,x,y的值,我寫好試著執行時,x1,x2,x3倒是我自己隨便定,但x,y不能隨便賦值,要用擾動產生又意義不大,還是麻煩你自己執行檢查一下吧。
解:
建立m檔案,命名為fun.m好了:
function f=fun(a,x1,x2,x3,x,y)
f=sqrt((a(1)+a(3)*cos(x1+a(6))+a(4)*cos(x1+x2+a(6)+a(7))+a(5)*cos(x1+x2+x3+a(6)+a(7)+a(8))-x).^2+...
(a(2)+a(3)*sin(x1+a(6))+a(4)*sin(x1+x2+a(6)+a(7))+a(5)*cos(x1+x2+x3+a(6)+a(7)+a(8))-y).^2);
儲存在work資料夾下
呼叫該檔案求解:
a0=ones(1,8); %取初始值
x1=?; x2=?; x3=?; x=?; y=?;
%上面這一行既然為已知量,請你在"?"號處自己賦值
[a,norm]=lsqnonlin(@fun,a0,[],[],[],x1,x2,x3,x,y)
注意到:
1)|x-X|與|y-Y|在同一組a值下同時達到最小不是自然的,所以這一題取的是|x-X|.^2+|y-Y|.^2的最小,即最後一式輸出的norm,誤差的平方和,是|x-X|^2+|y-Y|^2;
2)由於你沒有給我 x1,x2,x3,x,y的值,我寫好試著執行時,x1,x2,x3倒是我自己隨便定,但x,y不能隨便賦值,要用擾動產生又意義不大,還是麻煩你自己執行檢查一下吧。