ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:20.06KB ,
资源ID:6175157      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6175157.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab解方程.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab解方程.docx

1、matlab解方程1、解方程最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=inv(A)*b采用求逆运算解方程组;(2)x=A_采用左除运算解方程组。例:x1+2x2=82x1+3x2=13A=1,2;2,3;b=8;13;x=inv(A)*bx=2.003.00x=A_x=2.003.00;即二元一次方程组的解x1和x2分别是2和3。对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.

2、具体步骤如下:第一步:定义变量symsxyz.;第二步:求解x,y,z,.=solve(eqn1,eqn2,.,eqnN,var1,var2,.varN);第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);.。如:解二(多)元二(高)次方程组:x2+3*y+1=0y2+4*x+1=0解法如下:symsxy;x,y=solve(x2+3*y+1=0,y2+4*x+1=0);x=vpa(x,4);y=vpa(y,4);结果是:x=1.635+3.029*i1.635-3.029*i-.283-2.987y=1.834-3.301*i1.834+3.3

3、01*i-.3600-3.307。二元二次方程组,共4个实数根;还有的同学问,如何用matlab解高次方程组(非符号方程组)?举个例子好吗?解答如下:基本方法是:solve(s1,s2,sn,v1,v2,vn),即求表达式s1,s2,sn组成的方程组,求解变量分别v1,v2,vn。具体例子如下:x2+x*y+y=3x2-4*x+3=0解法:x,y=solve(x2+x*y+y=3,x2-4*x+3=0)运行结果为x=13y=1-3/2即x等于1和3;y等于1和-1.5或x,y=solve(x2+x*y+y=3,x2-4*x+3=0,x,y)x=13y=1-3/2结果一样,二元二方程都是4个实根

4、。通过这三个例子可以看出,用matlab解各类方程组都是可以的,方法也有多种,只是用到解方程组的函数,注意正确书写参数就可以了,非常方便。 cite from:2、变参数非线性方程组的求解对于求解非线性方程组一般用fsolve命令就可以了,但是对于方程组中某一系数是变化的,该怎么求呢?%定义方程组如下,其中k为变量function F = myfun(x,k)H=0.32;Pc0=0.23;W=0.18;F=Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)3)-x(2); x(1)-k*sqrt(x(2);%求解过程H=0.32;Pc0=0.23;W=0.18;x0

5、 = 2*W; Pc0+2*H; % 取初值options = optimset(Display,off); k=0:0.01:1; % 变量取值范围0 1for i=1:1:length(k)kk=k(i); x = fsolve(x) myfun(x,kk), x0, options);%求解非线性方程组x1(i)=x(1);x2(i)=x(2);endplot(k,x1,-b,k,x2,-r);xlabel(k)legend(x1,x2)cite from:3、非线性方程数值求解matlab里solve如何使用,是否有别的函数可以代替它. matlab里我解y=9/17*exp(-1/2

6、*t)*17(1/2)*sin(1/2*17(1/2)*t)=0这样的方程为什么只得到0这一个解,如何可以的到1/2*17(1/2)*t=n*(pi)这样一族解?在matlab里面solve命令主要是用来求解代数方程(即多项式)的解,但是也不是说其它方程一个也不能解,不过求解非代数方程的能力相当有限,通常只能给出很特殊的实数解。(该问题给出的方程就是典型的超越方程,非代数方程)从计算机的编程实现角度讲,如今的任何算法都无法准确的给出任意非代数方程的所有解,但是我们有很多成熟的算法来实现求解在某点附近的解。matlab也不例外,它也只能给出任意非代数方程在某点附近的解,函数有两个:fzero和f

7、solve,具体用法请用help或doc命令查询吧。如果还是不行,你还可以将问题转化为非线性最优化问题,求解非线性最优化问题的最优解,可以用的命令有:fminbnd, fminsearch, fmincon等等。*非线性方程数值求解*单变量非线性方程求解 在MATLAB中提供了一个fzero函数,可以用来求单变量非线性方程的根。该函数的调用格式为: z=fzero(fname,x0,tol,trace)其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,缺省时取tol=eps,trace指定迭代信息是否

8、在运算中显示,为1时显示,为0时不显示,缺省时取trace=0。 例 求f(x)=x-10x+2=0在x0=0.5附近的根。 步骤如下:(1) 建立函数文件funx.m。 function fx=funx(x) fx=x-10.x+2; (2) 调用fzero函数求根。 z=fzero(funx,0.5) z = 0.3758*非线性方程组的求解 对于非线性方程组F(X)=0,用fsolve函数求其数值解。fsolve函数的调用格式为: X=fsolve(fun,X0,option)其中X为返回的解,fun是用于定义需求解的非线性方程组的函数文件名,X0是求根过程的初值,option为最优化工

9、具箱的选项设定。最优化工具箱提供了20多个选项,用户可以使用optimset命令将它们显示出来。如果想改变其中某个选项,则可以调用optimset()函数来完成。例如,Display选项决定函数调用时中间结果的显示方式,其中off为不显示,iter表示每步都显示,final只显示最终结果。 optimset(Display,off)将设定Display选项为off。 例 求下列非线性方程组在(0.5,0.5) 附近的数值解。 (1) 建立函数文件myfun.m。function q=myfun(p)x=p(1);y=p(2);q(1)=x-0.6*sin(x)-0.3*cos(y);q(2)=

10、y-0.6*cos(x)+0.3*sin(y); (2) 在给定的初值x0=0.5,y0=0.5下,调用fsolve函数求方程的根。x=fsolve(myfun,0.5,0.5,optimset(Display,off)x = 0.6354 0.3734将求得的解代回原方程,可以检验结果是否正确,命令如下:q=myfun(x)q = 1.0e-009 * 0.2375 0.2957 可见得到了较高精度的结果。cite from:4、fsolve函数解方程 X,FVAL,EXITFLAG,OUTPUT,JACOB=FSOLVE(FUN,X0,.) returns the Jacobian of

11、FUN at X. Examples FUN can be specified using : x = fsolve(myfun,2 3 4,optimset(Display,iter) where myfun is a MATLAB function such as: function F = myfun(x) F = sin(x); FUN can also be an anonymous function: x = fsolve(x) sin(3*x),1 4,optimset(Display,off) If FUN is parameterized, you can use anony

12、mous functions to capture the problem-dependent parameters. Suppose you want to solve the system of nonlinear equations given in the function myfun, which is parameterized by its second argument c. Here myfun is an M-file function such as function F = myfun(x,c) F = 2*x(1) - x(2) - exp(c*x(1) -x(1)

13、+ 2*x(2) - exp(c*x(2); To solve the system of equations for a specific value of c, first assign the value to c. Then create a one-argument anonymous function that captures that value of c and calls myfun with two arguments. Finally, pass this anonymous function to FSOLVE: c = -1; % define parameter

14、first x = fsolve(x) myfun(x,c),-5;-5) cite from:1、导数diff(f) 函数f对符号变量x或字母表上最接近字母x的符号变量求导数;diff(f,t)函数f对符号变量t求导数。例:syms a b t x yf=sin(a*x)+cos(b*t);g=diff(f)gg=diff(f,t) %可以看作二元函数求偏导数)g =cos(a*x)*agg =-sin(b*t)*b 用diff(f,2)求二阶导数例:syms a b t x yf=sin(a*x)+cos(b*t);f=sin(a*x*t)+cos(b*t*x2)-2*x*t3;diff(

15、f,2)diff(f,t,2) ans =-sin(a*x*t)*a2*t2-4*cos(b*t*x2)*b2*t2*x2-2*sin(b*t*x2)*b*tans =-sin(a*x*t)*a2*x2-cos(b*t*x2)*b2*x4-12*x*t 当微分运算作用于符号矩阵时,是作用于矩阵的每个元素,如:syms a x 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, -c

16、os(a*x)*a 2、积分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 的定积分。例:syms a xf=sin(a*x)g=int(f) gg=int(f,a) f =sin(a*x)ff =sin(x3)g =-1/a*cos(a*x) gg =-1/x*cos(a*x) 例:syms a xf=sin(a*x)g=int(f,0,pi) f =sin(a*x)g =-(cos(p

17、i*a)-1)/a 注:当不定积分无解析表达式时,可用double 计算其定积分的数值解。例:sym xf=exp(-x2)g=int(f)gg=int(f,0,1)a=double(gg) ans =xf =exp(-x2)g =1/2*pi(1/2)*erf(x)gg =1/2*erf(1)*pi(1/2)a = 0.7468 3、极限limit(f)当符号变量x (或最接近字母x 的符号变量)0时函数f 的极限;limit(f,t,a)当符号变量t a 时,函数f 的极限。例:syms x t af=sin(x)/xg=limit(f)limit(cos(x+a)-cos(x)/a,a,

18、0)limit(1+x/t)t,t,inf) f =sin(x)/xg =1ans =-sin(x)ans =exp(x) 例:左、右极限的求法sym xlimit(1/x)limit(1/x,x,0,left)limit(1/x,x,0,right) ans =xans =NaNans =-infans =inf 4、级数和symsum(s,t,a,b)表示s 中的符号变量t 从a 到b 的级数和(t 缺省时设定为x 或 最接近x 的字母)例:syms x ksymsum(1/x,1,3) ans =11/6 s1=symsum(1/x2,1,inf)s2=symsum(xk,k,0,inf

19、) s1 =1/6*pi2s2 =-1/(x-1) 5、泰勒(Taylor)多项式taylor(f,n,a)函数f 对符号变量x (或最接近字母x 的符号变量)在a 点的n-1阶泰勒多项式(n 缺省时值为6,a 缺省值为0)例:taylor(sin(x) ans =x-1/6*x3+1/120*x5 f=log(x)s=taylor(f,4,2) f =log(x)s =log(2)+1/2*x-1-1/8*(x-2)2+1/24*(x-2)3 1、代数方程solve(f,t)对f 中的符号变量t 解方程f=0(t 缺省值为x 或最接近x 的字母)例:syms a b x cf=a*x2+b*

20、x+cs=solve(f) ss=solve(f,b) f =a*x2+b*x+cs = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) ss =-(a*x2+c)/x 注:求解形如f(x)=q(x)形式的方程,则需要用单引号把方程括起来。例:s=solve(cos(2*x)+sin(x)=1) s = 0 pi 1/6*pi 5/6*pi 例:求解方程组x,y=solve(x2+x*y+y=3,x2-4*x+3=0) x = 1 3y = 1 -3/2 即解为(1,1)和(3,-3/2)2、微分方程dsolve(S,s1,s2,x)其中

21、S为方程,s1,s1,s3,为初始条件,x 为自变量。方程S中用D表示求导数,D2,D3,表示二阶、三阶等高阶导数;初始条件缺省时,给出带任意常数C1,C2,.的通解;自变量缺省值为t 。也可求解微分方程组。例:dsolve(Dy=1+y2) ans =tan(t+C1) y=dsolve(Dy=1+y2,y(0)=1,x) y =tan(x+1/4*pi) x=dsolve(D2x+2*D1x+2*x=exp(t),x(0)=1,Dx(0)=0) x =1/5*exp(t)+3/5*exp(-t)*sin(t)+4/5*exp(-t)*cos(t) S=dsolve(Df=3*f+4*g,Dg=-4*f+3*g) %解微分方程组S = f: 1x1 sym g: 1x1 sym 计算结果返回在一个结构S中,为了看到其中 f,g的值,有如下指令f=S.fg=S.g f =exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)g =-exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)

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

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