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/04/28 20:04:31
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)和
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
仅供参考

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中用什么函数返回向量中的最大元素 MATLAB中用diff(函数,n),求表达式的n阶导的例子 matlab中用平方根,改进的平方根求解系数矩阵正定的方程的函数是哪个? matlab中用什么函数可以知道一个向量数的个数? MATLAB中用size函数求图像的行数和列数时,为什么出现如下结果? 谁知道怎么把matlab中用plot函数画出来的图形的坐标给提取出来, 在MATLAB中用factor函数,求100-150中的全部素数.具体语句, 在Matlab中用什么函数求解非线性方程的根?写出求解如下非线性方程根的Matlab代码.x^2+exp(x)-3=0 MATLAB中用哪一个命令画折线图 matlab中用fplot画图,怎么加粗线条? 已知我满足某个函数原型,然后根据一组数据用最小二乘拟合来求这个函数原型中的参数,MATLAB中用什么函数 matlab中用mesh函数画得3维曲面图形,并用不同颜色标记出重要的点,但是保存图像后发现,标记的点没出现? 在matlab中用哪个函数求F分布的分位点(分子分母的自由度和概率均已知)注意是求分位点而不是概率值 matlab中用while语句求12的阶乘求教 matlab中用for和while语句有何要求? 自然指数e在MATLAB中用什么字母表示? Matlab中用surf作图双叶双曲面,怎么做