Matlab求解非线性超定方程组恰定方程组欠定方程组.docx
- 文档编号:2054827
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:13
- 大小:50.86KB
Matlab求解非线性超定方程组恰定方程组欠定方程组.docx
《Matlab求解非线性超定方程组恰定方程组欠定方程组.docx》由会员分享,可在线阅读,更多相关《Matlab求解非线性超定方程组恰定方程组欠定方程组.docx(13页珍藏版)》请在冰豆网上搜索。
Matlab求解非线性超定方程组恰定方程组欠定方程组
Matlab求解非线性超定方程组
3x+2/(5+y)二6,4x+4/(5+y)二7,9x+4/(8+y)二12llx+2/(4+y)二15x,y是未知数
clc;clear;
%其实楼主的问题可以等效为求最小值的问题,我使用的指标是典型的平方和最小
xtt=[l,1];
f二@(x)(3*x(l)+2/(5+x
(2))-6)A2+(4*x(l)+4/(5+x
(2))-7)A2+(9*x(l)+4/(8+x
(2))-12)丿I2+(1l*x(l)+2/(4+x
(2))-15)丿、2;
[x,fval]^fminsearch(f,xtt)
求解线性方程组
solve,linsolve
例:
A二[5042;1-121;4120;1111];
%矩阵的行之间用分号隔开,元素之间用逗号或空格
B二[3;1;1;0]
X二zeros(4,1);%建立一个4元列向量
X=1insolve(A,B)diff(fun,var,n):
对表达式fun中的变量var求n阶导数。
例如:
F=sym('u(x,y)*v(x,y)');%sym()用来定义―个符号表达式diff(F);%matlab区分大小写
Pretty(ans)%pretty():
用习惯书写方式显不变量;ans是答案表达式
非线性方程求解
fsolve(fun,xO,options)
其中fun为待解方程或方程组的文件名;
xO位求解方程的初始向量或矩阵;
option为设置命令参数建立文件:
functiony二fun(x)y二[x(l)*sin(x(l))*cos(x
(2)),
x
(2)-*cos(x
(1))+*sin(x
(2))];
>>clear;x0=[,];fsolve(@fun,xO,optimset('fsolve'))
注:
…为续行符m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。
Matlab求解线性方程组
AX二B或XA=B
在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/和
”o如:
X二A\B表示求矩阵方程AX二B的解;
X二B/A表示矩阵方程XA二B的解。
对方程组X二A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数
等于矩阵A的列数,方程X二B/A同理。
如果矩阵a不是方阵,其维数是mxn,则有:
m=n恰定方程,求解精确解;
m>n超定方程,寻求最小二乘解;
m 针对不同的情况,MATLAB将采用不同的算法来求解。 ・恰定方程组恰定方程组由n个未知数的n个方程构成,方程有唯一的一组解,其一般形式可用矩阵,向量写成如下形式: Ax二b其中A是方阵,b是一个列向量; 在线性代数教科书中,最常用的方程组解法有: 1)利用cramer公式来求解法; 利用矩阵求逆解法,即x=A-lb; 利用gaussian消去法; 利用lu法求解。 一般来说,对维数不高,条件数不大的矩阵,上面四种解法所得的结果差别不大。 前三种解法的真正意义是在其理论上,而不是实际的数值计算。 MATLAB中,出 于对算法稳定性的考虑,行列式及逆的计算大都在lu分解的基础上进行。 在MATLAB中,求解这类方程组的命令十分简单,直接米用表达式: 在x=A\boMATLAB的指令解释器在确认变量A非奇异后,就对它进行lu分解,并最 终 给出解X;若矩阵A的条件数很大,MATLAB会提醒用户注意所得解的可靠性。 如果矩阵A是奇异的,则Ax二b的解不存在,或者存在但不唯一;如果矩阵A接近奇异时,MATLAB将给出警告信息;如果发现A是奇异的,则计算结果为inf,并且给出警告信息;如果矩阵A是病态矩阵,也会给出警告信息。 注意: 在求解方程时,尽量不要用in讥A)*b命令,而应采用A\b的解法。 因为后者的计算速度比前者快、精度高,尤其当矩阵A的维数比较大时。 另外,除法命令的适用行较强,对于非方阵A,也能给出最小二乘解。 2.超定方程组对于方程组Ax二b,A为nXill矩阵,如果A列满秩,且n>m。 则方程组没有精确 解,此时称方程组为超定方程组。 线性超定方程组经常遇到的问题是数据的曲线拟合。 对于超定方程,在MATLAB中,禾I」用左除命令(x=A\b)来寻求它的最小 二乘解;还可以用广义逆来求,即x二pinv⑷所得的解不一定满足Ax二b,x只是 最小二乘意义上的解。 左除的方法是建立在奇异值分解基础之上,由此获得的解最口J靠;广义逆法是建立在对原超定方程直接进行householder变换的基础上,其算法可靠性稍逊与奇异值求解,但速度较快; 求解超定方程组 A二[2-13;31-5;4-11;13-13] A二 2-13 31-5 4-1113-13b=[303一6]';rank(A)ans二 xl=A\bxl=x2=pinv(A)*bx2二 A*xl-bans二 可见X1并不是方程Ax二b的精确解,用x2=pinv(A)*b所得的解与xl相同。 3.欠定方程组 欠定方程组未知量个数多于方程个数,但理论上有无穷个解。 MATLAB将寻求一 个基本解,其中最多只能有m个非零元素。 特解由列主元qr分解求得。 解欠定方程组 A=[1-211;1-21-1;1-215] 1-21 1-21-1 1-21-1 1-21b二[1-15]' xl二A\b Warning: Rankdeficient,rank二2tol二xl二x2二pinv(A)*bx2= 4.方程组的非负最小二乘解在某些条件下,所求的线性方程组的解出现负数是没有意义的。 虽然方程组可以得到精确解,但却不能取负值解。 在这种情况下,其非负最小二乘解比方程的精确解更有意义。 在MATLAB中,求非负最小二乘解常用函数nnls,其调用格式为: (1)X=nnls(A,b返回方程Ax二b的最小二乘解,方程的求解过程被限制在x的条 件下; (2)X=nnls(A,b,T01指定误差TOL来求解,TOL的默认值为 TOL=max(size⑷)*norm(A,l)*eps矩阵的一1范数越大,求解的误差越大; (3)[X,W]二nnls(A,b)当x(i)二0时,w(i)〈0;当下x(i)>0时,w(i)0,同时返回一个双向量w。 例9]求方程组的非负最小二乘解 A=[ ];b=[]; [X,W]=nnls(A,b) W二xl二A\bxl二 A*X~bans二 A*xl-bans= 关于采用matlab进行指定非线性方程拟合的问题 (1) 探1。 优化工具箱的利用 函数描述 LSQLIN有约束线性最小二乘优化 LSQNONNEG非负约束线性最小二乘优化问题 当有约束问题存在的时候,应该采用上面的方法代替Polyfit与反斜线()。 具体例子请参 阅优化工具箱文档中的相应利用这两个函数的例子。 d.非线性曲线拟合 利用MATLAB的内建函数 函数名描述 FMINBND只解决单变量固定区域的最小值问题 FMINSEARCH多变量无约束非线性最小化问题(Nelder-Mead方法)。 面给出一个小例子展示一下如何利用FMINSEARCH 1・首先生成数据 >>t=0: .1: 10; »t=t(: ); »Data=40*exp*t)+rand(size(t));%将数据加上随机噪声 2.写一个m文件,以曲线参数作为输入,以拟合误差作为输出 functionsse=myfit(params,1nput,Actural_0utput) A二params (1); lamda=params (2); Fitted_Curve二A・*exp(-lamda*lnput); Error_Vector=Fi11ed_Curve~Actural_0utput; %当曲线拟合的时候,一个典型的质量评价标准就是误差平方和sse=sum(Error_Vector.A2); %当然,也可以将sse写作: sse=Error_Vector(: )*Error_Vector(: ); 3.调用FMINSEARCH»Strarting=rand(l,2); >>options二optimsetCDisplay'Jite门; 〉>Estimates=fiminsearch(@myfit,Strarting,options,t,Data); »plot(t,Data,'; »holdon>>plot(t,Estimates(l)*exp(-Estimates (2)*t)JF); Estimates将是一个包含了对原数据集进行估计的参数值的向量。 附图见后面: $r>2 FMINSEARCH通常能够用来解决不连续情况,特别是如果他们不出现在解的附近的时候。 它得到的通常也是局部解。 FMINSEARCH只能够最小化实数值(也就是说,解的域必须只能包 括实数,函数的输出只能够为实数值)。 当感兴趣的是复数变量的域的时候,他们必须被分割为实部与虚部。 ※的FIGURE窗口: 最基本的拟合界面与数据统计工具 MATLAB通过基本的拟合界面也支持基本曲线拟合。 利用这个界面,你可以快速地在简单易 用的环境中实现许多基本的曲线拟合。 这个界面可以实现以下功能: a.通过比样条插值(splineinterpolant)、hermite插值、或者是高达10阶的多项式插值实现数据的拟合; b.对给定数据同时实现多样插值的绘制; c.绘制残差图; d.检查拟合结果的残差的数值; e.通过内插值或者外推插值评价一个拟合结果; f.对拟合结果和残差的模进行图形绘制; g.将拟合结果保存入MATLAB工作空间。 数,也可以同时作用。 你可以通过基本拟合界面只能够实现 2-D数据的拟合。 然而,如果 你用subplot绘制多个数据集,只要有至少一个数据集是 2D的,那么就可以用基本拟合界 开发你的拟合应用的时候,你可以通过基本拟合( BasicFitting)界面,也可以通过命令行函 面 可以通过如下步骤激活基本拟合界面: 1.绘制数据; 2.从figure窗口的Tools菜单条下面选择BasicFitting菜单项; 有关BasicFitting界面的更多信息,请查阅MATLAB帮助文档的相应部分。 注意: 对于HP,IBM以及SGI平台,()以及的基本拟合界面不受支持。 统计界面激活: 1.制数据; 2.从figure窗口的Tools菜单条下面选择DataStatistics菜单项; 关于采用matlab进行指定非线性方程拟合的 问题 (2) 一。 优化工具箱函数 LSQNONLIN解决非线性最小二乘法问题,包括非线性数据拟合问题 LSQCURVEFIT解决非线性数据拟合问题 面给出利用这两个函数的例子: LSQNONLIN禾U用这个函数最小化连续函数只能够找到句柄解。 下面的例子说明利用 LSQNONLIN函数用下面的函数进行拟合: f=A+Bexp(C*x)+D*exp(E*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 求解 非线性 方程组
![提示](https://static.bdocx.com/images/bang_tan.gif)