回覆列表
  • 1 # 使用者4383246126739

    解:

    建立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不能隨便賦值,要用擾動產生又意義不大,還是麻煩你自己執行檢查一下吧。

  • 中秋節和大豐收的關聯?
  • 在印度,為什麼公交車是用牛糞做燃料的?