Matlab求解非线性超定方程组恰定方程组欠定方程组.docx

上传人:b****2 文档编号:2054827 上传时间:2022-10-26 格式:DOCX 页数:13 大小:50.86KB
下载 相关 举报
Matlab求解非线性超定方程组恰定方程组欠定方程组.docx_第1页
第1页 / 共13页
Matlab求解非线性超定方程组恰定方程组欠定方程组.docx_第2页
第2页 / 共13页
Matlab求解非线性超定方程组恰定方程组欠定方程组.docx_第3页
第3页 / 共13页
Matlab求解非线性超定方程组恰定方程组欠定方程组.docx_第4页
第4页 / 共13页
Matlab求解非线性超定方程组恰定方程组欠定方程组.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Matlab求解非线性超定方程组恰定方程组欠定方程组.docx

《Matlab求解非线性超定方程组恰定方程组欠定方程组.docx》由会员分享,可在线阅读,更多相关《Matlab求解非线性超定方程组恰定方程组欠定方程组.docx(13页珍藏版)》请在冰豆网上搜索。

Matlab求解非线性超定方程组恰定方程组欠定方程组.docx

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*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1