《MATLAB应用 求解非线性方程》由会员分享,可在线阅读,更多相关《MATLAB应用 求解非线性方程(16页珍藏版)》请在人人文库网上搜索。

1、第7章 求解非线性方程7.1 多项式运算在MATLAB中的实现一、多项式的表达n次多项式表达为:,是n+1项之和在MATLAB中,n次多项式可以用n次多项式系数构成的长度为n+1的行向量表示a0, a1,an-1,an二、多项式的加减运算设有两个多项式和。它们的加减运算实际上就是它们的对应系数的加减运算。当它们的次数相同时,可以直接对多项式的系数向量进行加减运算。当它们的次数不同时,应该把次数低的多项式无高次项部分用0系数表示。例2 计算a=1, -2, 5, 3; b=0, 0, 6, -1; c=a+b例3 设,求f(x)+g(x)f=3, -5, 2, -7, 5, 6; g=3, 5,。

2、 -3; g1=0, 0, 0, g;%为了和f的次数找齐f+g1, f-g1三、多项式的乘法运算conv(p1,p2)例4 在上例中,求f(x)*g(x)f=3, -5, 2, -7, 5, 6; g=3, 5, -3; conv(f, g)四、多项式的除法运算Q, r=deconv(p1, p2)表示p1除以p2,给出商式Q(x),余式r(x)。Q,和r仍为多项式系数向量例4 在上例中,求f(x)/g(x)f=3, -5, 2, -7, 5, 6; g=3, 5, -3; Q, r=deconv(f, g)五、多项式的导函数p=polyder(P):求多项式P的导函数p=polyder(P。

3、,Q):求PQ的导函数p,q=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。参数P,Q是多项式的向量表示,p,q也是多项式的向量表示。例4 求有理分式的导函数P=3, 5, 0, -8, 1, -5; %有理分式分子Q=10, 5, 0, 0, 6, 0, 0, 7, -1, 0, -100; %有理分式分母p,q=polyder(P,Q)六、多项式求根多项式求根就是求满足多项式p(x)0的x值。N次多项式应该有n个根。这些根可能是实根,也可能是若干对共轭复根。其调用格式是x=roots(P)其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),x(。

4、n)分别代表多项式的n个根。该命令每次只能求一个一元多项式的根,该指令不能用于求方程组的解,必须把多项式方程变成Pn (x) = 0的形式;例4 求方程的解。首先将方程变成Pn (x) = 0的形式:roots(1 -1 0 -1)例5 求多项式x4+8x3-10的根。A=1,8,0,0,-10;x=roots(A)若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为:P=poly(x)若x为具有n个元素的向量,则poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。例6 已知 f(x)=3x5+4x3-5x2-7.2x+5(1) 计算f(x)=0 的全部根。(。

5、2) 由方程f(x)=0的根构造一个多项式g(x),并与f(x)进行对比。P=3,0,4,-5,-7.2,5;X=roots(P) %求方程f(x)=0的根G=poly(X) %求多项式g(x)将这个结果乘以3,就与f(x)一致7.2 求解非线性方程f ( x ) = 0方程求根的一般形式是求下列方程的根:f ( x ) = 0 (l)实际上,就是寻找使函数 f ( x)等于零的变量x,所以求方程(l)的根,也叫求函数 f ( x)的零点。如果变量x是列阵,则方程(l)就代表方程组。当方程(l)中的函数 f (x)是有限个指数、对数、三角、反三角或幂函数的组合时,则方程(l)被称为超越方程,例。

6、如 e-x - sin(x / 2 ) lnx = 0 就是超越方程。当方程(l)中的函数f(x)是多项式时,即 f(x)Pn(x)= anxn + an-1xn alx + a0,则方程(l)就成为下面的多项式方程,也称代数方程:Pn(x)= anxn + an-1xn alx + a0 = 0 ( 2 ) Pn(x)的最高次数n等于2、3时,用代数方法可以求出方程(2)的解析解,但是,当n 5时,伽罗瓦(Galois)定理已经证明它是没有代数求根方法的。至于超越方程,通常很难求出其解析解。所以,方程(l)的求解经常使用作图法或数值法,而计算机的发展和普及又为这些方法提供了广阔的发展前景,使。

7、之成为科学和工程中最实用的方法之一。本章首先介绍求解 f ( x ) = 0 的 MATLAB 符号法指令,然后介绍求方程数值解的基本原理,最后再介绍求解 f ( x ) = 0 的 MATLAB 数值法指令。一、符号方程求解在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:solve(s):求解符号表达式s的代数方程,求解变量为默认变量。当方程右端为0时,方程可以不标出等号和0,仅标出方程的左端。solve(s,v):求解符号表达式s的代数方程,求解变量为v。solve(s1,s2,sn,v1,v2,vn):求解符号表达式s1,s2,sn组成的代数方程组,。

8、求解变量分别v1,v2,vn。例1 解下列方程。1x= solve(1/(x+2)+4*x/(x2-4)=1+2/(x-2), x)2f=sym(x-(x3-4*x-7)(1/3)=1)x= solve(f)3x= solve(2*sin(3*x-pi/4)=1)4x= solve(x+x*exp(x)-10, x) %仅标出方程的左端二、求方程f ( x ) = 0数值解的基本方法并非所有的方程 f ( x ) = 0 都能求出精确解或解析解,不存在这种解的方程就需要用数值解法求出近似解,有几种常见的数值解法基本原理:二分法。 1 求实根的二分法原理设方程 f (x) =0中的函数 f ( 。

9、x)为实函数,且满足: 函数 f (x)在 a , b上单调、连续; 方程 f (x) = 0 在(a , b)内只有一个实根 x*。则求方程 f (x) = 0 的根,就是在(a, b)内找出使f (x)为零的点x*:f (x*) = 0 ,即求函数 f ( x ) 的零点。因为 f (x)单调连续,由连续函数的性质可知,若任意两点aj,bj a , b ,而且满足条件 f (aj) f (bj) 0, break, end %表示无解,结束maxl=l+round( (log (b-a) -log (delta)/log (2); %从误差表达式得到最小等分次数nfor k=1:max1c。

10、=(a+b)/2; %取区间中点yc=feval (f,c); if yc=0a=c; b=c; %这时解已经找到elseif yb*yc0b=c; %区间减半yb=yc; else a=c; ya=yc; end if b-a In D:MATLAB6p5toolboxsymbolicsolve.m at line 136如果做代换:,方程3就变成方程2,就可解这个问题说明,符号求解并不是万能的。如果用MATLAB得出无解或未找到所期望的解时,应该用其它方法试探求解。4x y=solve(x2+y2=5, 2*x2-3*x*y-2*y2) %变量由默认规则确定二、求解非线性方程组的基本方法对。

11、于非线性方程组(以二元方程组为例,其他可以类推)( 11) 的数值解求法,跟一元非线性方程的切线法(牛顿法)雷同,也是把非线性函数线性化,近似替代原方程得出数值解,所以也叫作牛顿迭代法。假设方程组(11)的初始估计值为(x0,y0),可以把方程组(11)中的两个函数f1(x,y)和f2(x,y)在(x0,y0)处用二元泰勒级数展开,只取线性部分,移项得出:(12)若系数矩阵行列式,则方程组(12)的解为:,方程组(11)中的两个函数f1(x,y)和f2(x,y)在(x1,y1)处,再用二元泰勒级数展开,只取线性部分, 如此继续替代下去,直到方程组的根达到所要求的精度,就完成了方程组的求解。求解。

12、方程组(11)还有许多其他办法,如“最速下降法”,它是利用方程组(11)构成所谓模函数,通过求模函数极小值的方法得到方程组的数值解,诸如此类在此不再一一列举。三、求方程组数值解的指令fsolve是用最小二乘法求解非线性方程组 F (X) 0 的指令,变量X可以是向量或矩阵,方程组可以由代数方程或者超越方程构成。它的使用格式为:fsolve ( fun , X0 , OPTIONS ) 参数 fun 是编辑并存盘的M函数文件的名称,可以用代替单引号对它进行标识。 M函数文件主要内容是方程 F ( X ) = 0 中的函数 F (X) ,即方程左边的函数。 参数X0是向量或矩阵,为探索方程组解的起。

13、始点。求解将从X0出发,逐渐趋向,最终得到满足精度要求、最接近X0的近似根X* : F ( X*) 0 。由于X0是向量或矩阵,无法用画图方法进行估计,实际问题中常常是根据专业知识、物理意义等进行估计。 该指令输出一个与X0同维的向量或矩阵,为方程组的近似数值解。 参数OPTIONS为设置选项,用它可以设置过程显示与否、误差、算法 ,具体内容可用 help查阅。通常可以省略该项内容。例 求方程组在x01 ,y01,z01附近的数值解。解(l)在文本编辑调试窗中编辑 M函数文件。首先将方程组变换成 F ( X ) = 0 的形式, x, y, z看成向量X的三个分量。function ms=li。

14、4_7(X)ms(1) = X(1).2 - 10* X(1) + X(2).2 + X(3) +7;ms(2) = X(1).*X(2).2 - 2* X(3);ms(3) = X(1).2 + X(2).2 - 3* X(2) + X(3).2; 这里,X (l)x , X (2)y , X (3)z,输出参量 ms 也有三个分量用“li4_7”为M函数文件名存盘。(2)在指令窗中键入:fsolve ( li4_7,1 1 1)若键入:x = fsolve (li4_7,1 1 1, optimset(Display, iter)则得出求解过程。该方程也可以用 MATLAB 的符号指令so。

15、lve求解,但结果非常冗长。例 求解方程组,在 x00.1,y00.1和z0 - 0.1附近的数值解。解:首先将方程组变换成fj (x, y, z)f (X)0 ( j1 , 2 , 3)的形式,设X为一个三维向量,令X (l)x , X (2)y , X (3)z ,则三维向量yy3f (X)fj (x, y, z),然后编程计算。(l) 在文本编辑调试窗中编辑M函数文件function yy3=li4_8(X)yy3(1) = 3*X(1) - cos(X(2)*X(3) - 0.5;yy3(2) = 2*X(1)2 - 81*(X(2) + 0.1)2 +sin(X(3) + 0.06;。

16、yy3(3) = exp(-X(1)*X(2) + 20*X(3) + 10*pi/3 -1;(2)在指令窗中键入:fsolve(li4_8,0.1 0.1 -0.1)这个方程组用符号指令solve无法得出最终结果。例1 求解方程组在(1,1,1)附近的解,并对结果进行验证。(1) 建立函数文件myfun.m。function F=myfun(X) %X、F是性质相同的向量x=X(1);y=X(2);z=X(3);F(1)= sin(x)+y+z2.*exp(x);F(2)=x+y+z;F(3)=x.*y.*z; (2) 在给定的初值x0=1,y0=1,z0=1下,调用fsolve函数求方程的。

17、根。X=fsolve(myfun,1,1,1,optimset(Display,off)(3) 将求得的解代回原方程,可以检验结果是否正确,命令如下:q=myfun(X)例2 求非线性方程组在(0.5,0.5) 附近的数值解。(1) 建立函数文件myfun1.m。function F=myfun1(X)x=X(1);y=X(2);F(1)=x-0.6*sin(x)-0.3*cos(y);F(2)=y-0.6*cos(x)+0.3*sin(y);function F=myfun1(X)x=X(1);y=X(2);F(1)=x-0.6*sin(x)-0.3*cos(y);F(2)=y-0.6*cos(x)+0.3*sin(y);(2) 在给定的初值x0=0.5,y0=0.5下,调用fsolve函数求方程的根。X=fsolve(myfun1,0.5,0.5,optimset(Display,off)将求得的解代回原方程,可以检验结果是否正确,命令如下:q=myfun1(X。

非线性方程求解 matlab,MATLAB应用 求解非线性方程相关推荐

  1. matlab四元一次非线性方程求解,[转载]MATLAB求解非线性方程(转)

    1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=i ...

  2. matlab求解helmholtz,MATLAB与科学计算(第2版)

    第1章  安装及使用前的准备1.1  MATLAB 6.x简介1.1.1  21世纪的科学计算语言1.1.2  MATLAB的发展历史1.1.3  MATLAB 6.x的新特点1.1.4  MATLA ...

  3. matlab微分方程求法,matlab微分方程的求解的方法ppt课件

    <matlab微分方程的求解的方法ppt课件>由会员分享,可在线阅读,更多相关<matlab微分方程的求解的方法ppt课件(44页珍藏版)>请在人人文库网上搜索. 1.定义:含 ...

  4. matlab两个多项式相除,C++和MATLAB混合编程求解多项式系数(矩阵相除)

    摘要:MATLAB对于矩阵处理是非常高效的,而C++对于矩阵操作是非常麻烦的,因而可以采用C++与MATLAB混合编程求解矩阵问题. 主要思路就是,在MATLAB中编写函数脚本并使用C++编译为dll ...

  5. matlab定积分上界求解,定积分问题的数值求解及Matlab实现.pdf

    定积分问题的数值求解及Matlab实现 第28卷第5期 哈 尔滨 商 业 大 学 学报 (自然科学版) Vo1.28No.5 2012年 10月 JournalofHarbinUniversityof ...

  6. 利用Matlab优化工具箱求解旅行商最短路径问题

    前面介绍了利用Matlab二元整数规划求解数独问题,对于另一个问题-旅行商问题也可以用它来求解. 旅行商问题就是找到经过所有站点的最短闭合路径,如下图为在美国地图框架内产生的200个旅行站点,而旅行商 ...

  7. matlab龙格库塔法求通解,基于matlab及龙格库塔法求解布拉修斯方程.doc

    基于matlab及龙格库塔法求解布拉修斯方程 Runge-Kutta法求解布拉修斯解 摘要 薄剪切层方程主要有三种解法,即相似解,非相似条件下对偏微分方程组的数值解和近似解.布拉修斯解是布拉修斯于19 ...

  8. Matlab随笔之求解线性方程

    原文:Matlab随笔之求解线性方程 理论知识补充: %矩阵除分为矩阵右除和矩阵左除. %矩阵右除的运算符号为"/",设A,B为两个矩阵,则"A/B"是指方程X ...

  9. matlab求解多项式系数,C++和MATLAB混合编程求解多项式系数(矩阵相除)

    摘要:MATLAB对于矩阵处理是非常高效的,而C++对于矩阵操作是非常麻烦的,因而可以采用C++与MATLAB混合编程求解矩阵问题. 主要思路就是,在MATLAB中编写函数脚本并使用C++编译为dll ...

  10. matlab用高斯消元法解线性方程组,用matlab利用高斯消元法求解线性方程组

    用matlab利用高斯消元法求解线性方程组Tag内容描述: 1.用C语言编写软件完成以下任务:请用高斯列主元消元法解下列线性方程组:方法说明(以4阶为例):第1步消元在增广矩阵(A,b)第一列中找到绝 ...

最新文章

  1. 线程编程常见API简介(中)
  2. matplotlib可视化基本散点图、在图像指定区域绘制方框并进行自定义色彩填充(Draw Rectangle filled with color)
  3. 当机器学习性能遭遇瓶颈时,如何优化?如何去尝试解决问题?
  4. mysql聚集索引和二级索引_mysql8 参考手册--聚集索引和二级索引
  5. Android中asset文件夹和raw文件夹区别
  6. boost::fibers::launch::dispatch的用法测试程序
  7. Bypass WAF实战总结
  8. 不止代码:保留道路(ybtoj 最小生成树)
  9. cdr 表格自动填充文字_做平面广告设计,AI和CDR如何选择?
  10. Bootstrap媒体对象
  11. 以腾讯云IoT Suite为例 谈谈边缘计算在物联网的实践与实现
  12. hdu4906:3-idiots【FFT】
  13. java long转float_Java中为什么long能自动转换成float类型
  14. Linux 音频编程 -- 如何使用ALSE库播放wav文件
  15. Excel插入斜线表头
  16. 交错、反交错与IVTC —— 从入门到放弃
  17. 直属领导和老板都给了我绩效A,HR最后审核时降成了B,平时没有得罪她,她为什么这么做?...
  18. 在未提供官方驱动的Windows平板上安装Win10且完美驱动的解决方案
  19. 5G的主要业务场景:eMBB、URLLC、mMTC
  20. 商务通“隐形手机”牛皮轰轰可以休矣!

热门文章

  1. 9道CCNA经典测试题
  2. python好用的内置库_python内置的高效好用各种库
  3. SMART PLC PID算法基本解析(附公式)
  4. 企业网络管理和华为企业级路由交换产品介绍
  5. 【Python古诗词鉴赏小程序】千古绝唱,精选中国最美古诗句,经典咏流传~
  6. 海信电视一直处在Android,【干货收藏】海信电视免root精简教程,去除自带无用软件,替换桌面可实现开机自启动...
  7. MVC2 扩展Models和自定义验证(学习笔记)
  8. php存储富文本编辑器内容到数据库
  9. Maxthon2.5.10.2576 beta苦菜花增强优化防假死正式版(1031)
  10. 【android】安卓高仿京东分类页