非线性方程线性化求参数的简单例子

在摄影测量中单像空间后方交会时,需要用到非线性方程线性化来求参数(外方位元素),这里以一个简单的例子来介绍这种方法是怎么实现的,其中求矩阵方程的导数(偏导数)可以参考http://t.csdn.cn/gLSR7
非线性方程线性化求参数的简单例子_第1张图片
非线性方程线性化求参数的简单例子_第2张图片
非线性方程线性化求参数的简单例子_第3张图片
syms y a x;
D=[1 5.9;2 10.1];
y=a+(a^2)*x;%待求参函数,a为参数
y1=subs(y,x,D(1));%当x=1时的函数形式
y2=subs(y,x,D(2));%当x=2时的函数形式
dy1=diff(y1,a);%y1对a求导
dy2=diff(y2,a);%y2对a求导
a0=1;%初始值a0
sign=1;%sign:迭代是否终止的标志
k=1;%迭代次数,设定迭代最多100次
Z=zeros(100,6);%迭代记录
while(sign==1)
A=[subs(dy1,a,a0);subs(dy2,a,a0)];
L=[D(3)-subs(y1,a,a0);D(4)-subs(y2,a,a0)];
X=(A’*A)(A’*L);
Z(k,:)=[subs(y1,a,a0) subs(dy1,a,a0) subs(y2,a,a0) subs(dy2,a,a0) a0 X];
if((abs(X)<=0.0001)|(k > 100))
sign=0;
else
sign=1;
a0=a0+X;
k=k+1;
end
end
经过迭代之后最终a0=2.0038,即待求参数a=2.0038
非线性方程线性化求参数的简单例子_第4张图片

你可能感兴趣的:(算法,矩阵,matlab)