作业帮 > 数学 > 作业

Matlab 中用Isqnonlin函数解决最小二乘逼近问题!

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/07/04 00:43:07
Matlab 中用Isqnonlin函数解决最小二乘逼近问题!
x=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));
y=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));
给定(x1,x2,x3)和(x,y)的n组值后,用最小二乘求a
m文件编写和Isqnonlin的调用
Matlab 中用Isqnonlin函数解决最小二乘逼近问题!
建立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不能随便赋值,要用扰动产生又意义不大,还是麻烦你自己运行检查一下吧.