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)和
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/27 07:03:09
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)和
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函数解决最小二乘逼近问题!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)和
建立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不能随便赋值,要用扰动产生又意义不大,还是麻烦你自己运行检查一下吧.
【补充】修改了,所以,排到后面去了。
值得关注,好问题,收藏了。
看看这个例子:
function hh
x0 = [0.3 0.4]
[x,resnorm] = lsqnonlin(@myfun,x0)
function F = myfun(x)
k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*...
全部展开
【补充】修改了,所以,排到后面去了。
值得关注,好问题,收藏了。
看看这个例子:
function hh
x0 = [0.3 0.4]
[x,resnorm] = lsqnonlin(@myfun,x0)
function F = myfun(x)
k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));
结果:
x =
0.2578 0.2578
resnorm =
124.3622
>> syms a1 a2 a3 a4 a5 a6 a7 a8 x1 x2 x3 x y
f1=-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
f2=-y+a2+a3*sin(x1+a6)+a4*sin(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
m=f1+f2
x=solve(m,'x')
f1 =
-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
f2 =
-y+a2+a3*sin(x1+a6)+a4*sin(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
m =
-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+2*a5*cos(x1+x2+x3+a6+a7+a8)-y+a2+a3*sin(x1+a6)+a4*sin(x1+x2+a6+a7)
x =
2*a5*cos(x1+x2+x3+a6+a7+a8)+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a4*sin(x1+x2+a6+a7)-y+a2+a3*sin(x1+a6)
这次如何啊?
收起
0.2578 0.2578
resnorm =
124.3622
我感觉,把a当成x,把x1,x2,x3, x, y当成k,就和这个例子类似了。
syms a1 a2 a3 a4 a5 a6 a7 a8 x1 x2 x3 x y
f1=-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a...
全部展开
0.2578 0.2578
resnorm =
124.3622
我感觉,把a当成x,把x1,x2,x3, x, y当成k,就和这个例子类似了。
syms a1 a2 a3 a4 a5 a6 a7 a8 x1 x2 x3 x y
f1=-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
f2=-y+a2+a3*sin(x1+a6)+a4*sin(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
m=f1+f2
a1=solve(m,'a1')
结果:
a1 =
x+y-a3*cos(x1+a6)-a4*cos(x1+x2+a6+a7)-2*a5*cos(x1+x2+x3+a6+a7+a8)-a2-a3*sin(x1+a6)-a4*sin(x1+x2+a6+a7)
收起
看看这个例子:你就会明白的!
function hh
x0 = [0.3 0.4]
[x,resnorm] = lsqnonlin(@myfun,x0)
function F = myfun(x)
k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));
结果:
x =
0...
全部展开
看看这个例子:你就会明白的!
function hh
x0 = [0.3 0.4]
[x,resnorm] = lsqnonlin(@myfun,x0)
function F = myfun(x)
k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));
结果:
x =
0.2578 0.2578
resnorm =
124.3622
我感觉,把a当成x,把x1,x2,x3, x, y当成k,就和这个例子类似了。
syms a1 a2 a3 a4 a5 a6 a7 a8 x1 x2 x3 x y
f1=-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
f2=-y+a2+a3*sin(x1+a6)+a4*sin(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
m=f1+f2
a1=solve(m,'a1')
结果:
a1 =
x+y-a3*cos(x1+a6)-a4*cos(x1+x2+a6+a7)-2*a5*cos(x1+x2+x3+a6+a7+a8)-a2-a3*sin(x1+a6)-a4*sin(x1+x2+a6+a7)
把a1当作Y,x,y,x1,x2,x3当作A(1),A(2),A(3),A(4),A(5);a2a8分别当作x(1)到x(7)。0.2578 0.2578
resnorm =
124.3622
我感觉,把a当成x,把x1,x2,x3, x, y当成k,就和这个例子类似了。
syms a1 a2 a3 a4 a5 a6 a7 a8 x1 x2 x3 x y
f1=-x+a1+a3*cos(x1+a6)+a4*cos(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
f2=-y+a2+a3*sin(x1+a6)+a4*sin(x1+x2+a6+a7)+a5*cos(x1+x2+x3+a6+a7+a8)
m=f1+f2
a1=solve(m,'a1')
结果:
a1 =
x+y-a3*cos(x1+a6)-a4*cos(x1+x2+a6+a7)-2*a5*cos(x1+x2+x3+a6+a7+a8)-a2-a3*sin(x1+a6)-a4*sin(x1+x2+a6+a7)
收起
http://bbs.bc-cn.net/viewthread.php?tid=104259&page=9
仅供参考