下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 matlab-解方程

matlab-解方程.doc

matlab-解方程

leexueyong0201
2013-03-28 0人阅读 举报 0 0 暂无简介

简介:本文档为《matlab-解方程doc》,可适用于工程科技领域

、解方程最近有多人问如何用matlab解方程组的问题其实在matlab中解方程组还是很方便的例如对于代数方程组Ax=b(A为系数矩阵非奇异)的求解MATLAB中有两种方法:()x=inv(A)*b  采用求逆运算解方程组()x=A  采用左除运算解方程组。例:xx= xx=>>A=,,b=>>x=inv(A)*b x =         >>x=Ax =     即二元一次方程组的解x和x分别是和。对于同学问到的用matlab解多次的方程组有符号解法方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解具体步骤如下:第一步:定义变量syms x y z 第二步:求解x,y,z,=solve('eqn','eqn',,'eqnN','var','var','varN')第三步:求出n位有效数字的数值解x=vpa(x,n)y=vpa(y,n)z=vpa(z,n)。如:解二(多)元二(高)次方程组:x^*y=y^*x=解法如下:>>syms x y>>x,y=solve('x^*y=','y^*x=')>>x=vpa(x,)>>y=vpa(y,)结果是:x =     *i    *i       y =     *i    *i       。二元二次方程组共个实数根还有的同学问如何用matlab解高次方程组(非符号方程组)?举个例子好吗?解答如下:基本方法是:solve(s,s,…,sn,v,v,…,vn)即求表达式s,s,…,sn组成的方程组求解变量分别v,v,…,vn。具体例子如下:x^  x*y  y = x^  *x   = 解法:>> x,y = solve('x^  x*y  y = ','x^  *x   = ')运行结果为 x =      y =      即x等于和y等于和或>>x,y = solve('x^  x*y  y = ','x^  *x  = ','x','y') x =        y =      结果一样二元二方程都是个实根。通过这三个例子可以看出用matlab解各类方程组都是可以的方法也有多种只是用到解方程组的函数注意正确书写参数就可以了非常方便。 citefrom:http:bbsseueducnpcpcconphpid=nid=tid=、变参数非线性方程组的求解对于求解非线性方程组一般用fsolve命令就可以了但是对于方程组中某一系数是变化的该怎么求呢?定义方程组如下其中k为变量functionF=myfun(x,k)H=Pc=W=F=PcH*(*(x()W)*(x()W)^)x()  x()k*sqrt(x())求解过程H=Pc=W=x=*WPc*H        取初值options=optimset('Display','off')k=::        变量取值范围fori=::length(k)kk=k(i)                x=fsolve((x)myfun(x,kk),x,options)求解非线性方程组x(i)=x()x(i)=x()endplot(k,x,'b',k,x,'r')xlabel('k')legend('x','x')citefrom:http:forumsimwecomarchivertidhtml、非线性方程数值求解matlab里solve如何使用,是否有别的函数可以代替它matlab里我解y=*exp(*t)*^()*sin(*^()*t)=这样的方程为什么只得到这一个解,如何可以的到*^()*t=n*(pi)这样一族解 在matlab里面solve命令主要是用来求解代数方程(即多项式)的解,但是也不是说其它方程一个也不能解不过求解非代数方程的能力相当有限通常只能给出很特殊的实数解。(该问题给出的方程就是典型的超越方程非代数方程)从计算机的编程实现角度讲如今的任何算法都无法准确的给出任意非代数方程的所有解但是我们有很多成熟的算法来实现求解在某点附近的解。matlab也不例外它也只能给出任意非代数方程在某点附近的解函数有两个:fzero和fsolve,具体用法请用help或doc命令查询吧。如果还是不行你还可以将问题转化为非线性最优化问题求解非线性最优化问题的最优解可以用的命令有:fminbnd,fminsearch,fmincon等等。 *非线性方程数值求解*单变量非线性方程求解   在MATLAB中提供了一个fzero函数可以用来求单变量非线性方程的根。该函数的调用格式为:   z=fzero('fname',x,tol,trace)其中fname是待求根的函数文件名x为搜索的起点。一个函数可能有多个根但fzero函数只给出离x最近的那个根。tol控制结果的相对精度缺省时取tol=epstrace指定迭代信息是否在运算中显示为时显示为时不显示缺省时取trace=。   例求f(x)=xx=在x=附近的根。   步骤如下:()建立函数文件funxm。   functionfx=funx(x)   fx=x^x   ()调用fzero函数求根。   z=fzero('funx',)   z=       **非线性方程组的求解   对于非线性方程组F(X)=用fsolve函数求其数值解。fsolve函数的调用格式为:   X=fsolve('fun',X,option)其中X为返回的解fun是用于定义需求解的非线性方程组的函数文件名X是求根过程的初值option为最优化工具箱的选项设定。最优化工具箱提供了多个选项用户可以使用optimset命令将它们显示出来。如果想改变其中某个选项则可以调用optimset()函数来完成。例如Display选项决定函数调用时中间结果的显示方式其中‘off’为不显示‘iter’表示每步都显示‘final’只显示最终结果。optimset(‘Display’,‘off’)将设定Display选项为‘off’。   例 求下列非线性方程组在(,)附近的数值解。   ()建立函数文件myfunm。functionq=myfun(p)x=p()y=p()q()=x*sin(x)*cos(y)q()=y*cos(x)*sin(y)   ()在给定的初值x=,y=下调用fsolve函数求方程的根。x=fsolve('myfun',,',optimset('Display','off'))x=      将求得的解代回原方程可以检验结果是否正确命令如下:q=myfun(x)q=     e*         可见得到了较高精度的结果。citefrom:http:blogsinacomcnsblogefdebewhtml、fsolve函数解方程X,FVAL,EXITFLAG,OUTPUT,JACOB=FSOLVE(FUN,X,)returnsthe   JacobianofFUNatX     Examples     FUNcanbespecifiedusing:        x=fsolve(myfun,,optimset('Display','iter'))    wheremyfunisaMATLABfunctionsuchas:        functionF=myfun(x)       F=sin(x)    FUNcanalsobeananonymousfunction:        x=fsolve((x)sin(*x),,optimset('Display','off'))    IfFUNisparameterized,youcanuseanonymousfunctionstocapturethe   problemdependentparametersSupposeyouwanttosolvethesystemof   nonlinearequationsgiveninthefunctionmyfun,whichisparameterized   byitssecondargumentcHeremyfunisanMfilefunctionsuchas            functionF=myfun(x,c)       F=*x()x()exp(c*x())             x()*x()exp(c*x())              Tosolvethesystemofequationsforaspecificvalueofc,firstassignthe   valuetocThencreateaoneargumentanonymousfunctionthatcaptures   thatvalueofcandcallsmyfunwithtwoargumentsFinally,passthisanonymous   functiontoFSOLVE:        c=defineparameterfirst       x=fsolve((x)myfun(x,c),)citefrom:、 导数diff(f) 函数f对符号变量x或字母表上最接近字母x的符号变量求导数diff(f,t)函数f对符号变量t求导数。例: symsabtxyf=sin(a*x)cos(b*t)g=diff(f)gg=diff(f,t)  可以看作二元函数求偏导数)g=cos(a*x)*agg=sin(b*t)*b 用diff(f,)求二阶导数例: symsabtxyf=sin(a*x)cos(b*t)f=sin(a*x*t)cos(b*t*x^)*x*t^diff(f,)diff(f,t,) ans=sin(a*x*t)*a^*t^*cos(b*t*x^)*b^*t^*x^*sin(b*t*x^)*b*tans=sin(a*x*t)*a^*x^cos(b*t*x^)*b^*x^*x*t 当微分运算作用于符号矩阵时是作用于矩阵的每个元素如: symsax a=sin(a*x),cos(a*x)cos(a*x),sin(a*x)dy=diff(a) a= sin(a*x), cos(a*x)cos(a*x),sin(a*x)dy= cos(a*x)*a,sin(a*x)*a sin(a*x)*a,cos(a*x)*a 、 积分int(f)函数f对符号变量x或接近字母x的符号变量求不定积分int(f,t)函数f对符号变量t求不定积分int(f,a,b)函数f对符号变量x或接近字母x的符号变量求从a到b的定积分 int(f,t,a,b)函数f对符号变量t求从a到b的定积分。例:symsaxf=sin(a*x)g=int(f) gg=int(f,a) f=sin(a*x)ff=sin(x^)g=a*cos(a*x) gg=x*cos(a*x) 例:symsaxf=sin(a*x)g=int(f,,pi) f=sin(a*x)g=(cos(pi*a))a 注:当不定积分无解析表达式时可用double计算其定积分的数值解。例:symxf=exp(x^)g=int(f)gg=int(f,,)a=double(gg) ans=xf=exp(x^)g=*pi^()*erf(x)gg=*erf()*pi^()a=    、 极限limit(f)当符号变量x(或最接近字母x的符号变量)>时函数f的极限limit(f,t,a)当符号变量t>a时函数f的极限。例:symsxtaf=sin(x)xg=limit(f)limit((cos(xa)cos(x))a,a,)limit((xt)^t,t,inf) f=sin(x)xg=ans=sin(x)ans=exp(x) 例:左、右极限的求法symxlimit(x)limit(x,x,,'left')limit(x,x,,'right') ans=xans=NaNans=infans=inf 、 级数和symsum(s,t,a,b)表示s中的符号变量t从a到b的级数和(t缺省时设定为x或最接近x的字母)例:symsxksymsum(x,,) ans= s=symsum(x^,,inf)s=symsum(x^k,k,,inf) s=*pi^s=(x) 、 泰勒(Taylor)多项式taylor(f,n,a)函数f对符号变量x(或最接近字母x的符号变量)在a点的n阶泰勒多项式(n缺省时值为a缺省值为)例:taylor(sin(x)) ans=x*x^*x^ f=log(x)s=taylor(f,,) f=log(x)s=log()*x*(x)^*(x)^ 、 代数方程solve(f,t)对f中的符号变量t解方程f=(t缺省值为x或最接近x的字母)例:symsabxcf=a*x^b*xcs=solve(f) ss=solve(f,b) f=a*x^b*xcs= a*(b(b^*a*c)^()) a*(b(b^*a*c)^()) ss=(a*x^c)x 注:求解形如f(x)=q(x)形式的方程则需要用单引号把方程括起来。例:s=solve('cos(*x)sin(x)=') s=         pi*pi*pi 例:求解方程组x,y=solve('x^x*yy=','x^*x=') x=y=    即解为()和()、 微分方程dsolve('S','s','s',…,'x')其中S为方程s,s,s,…为初始条件x为自变量。方程S中用D表示求导数D,D,…表示二阶、三阶等高阶导数初始条件缺省时给出带任意常数C,C,的通解自变量缺省值为t。也可求解微分方程组。例:dsolve('Dy=y^')  ans=tan(tC) y=dsolve('Dy=y^','y()=','x')  y=tan(x*pi) x=dsolve('Dx*Dx*x=exp(t)','x()=','Dx()=')  x=*exp(t)*exp(t)*sin(t)*exp(t)*cos(t) S=dsolve('Df=*f*g','Dg=*f*g')   解微分方程组S=   f:xsym   g:xsym 计算结果返回在一个结构S中为了看到其中f,g的值有如下指令f=Sfg=Sg f=exp(*t)*(cos(*t)*Csin(*t)*C)g=exp(*t)*(sin(*t)*Ccos(*t)*C) 

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/11

matlab-解方程

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利