MATLAB求代数方程的近似根(解)

合集下载

matlab用二分法求方程近似根

matlab用二分法求方程近似根

matlab用二分法求方程近似根在MATLAB中,可以使用以下代码使用二分法求解方程的近似根:```matlabfunction root = bisection_method(func, a, b, tol, max_iter)% 输入参数:% func: 待求解方程的函数句柄% a, b: 取值范围% tol: 容差% max_iter: 最大迭代次数fa = func(a);fb = func(b);if fa * fb > 0error('在该区间内没有根存在');endfor k = 1:max_iterc = (a + b) / 2;fc = func(c);if abs(fc) < tolroot = c;return;endif fa * fc < 0b = c;fb = fc;elsea = c;fa = fc;endenderror('未达到收敛条件');end```使用该函数时,首先需要定义待求解方程的函数句柄。

例如,若要求解方程x^2 - 4 = 0的近似根,则可以定义如下函数:```matlabfunction f = equation(x)f = x^2 - 4;end```然后,可以通过调用`bisection_method`函数求解方程的近似根:```matlaba = 1; % 取值范围的下界b = 3; % 取值范围的上界tol = 1e-6; % 容差max_iter = 100; % 最大迭代次数root = bisection_method(@equation, a, b, tol, max_iter);disp(root);```在上述代码中,设置了取值范围的下界为1,上界为3,容差为1e-6,最大迭代次数为100。

运行代码后,MATLAB将输出方程的一个近似根。

MATLAB求根的几种方法

MATLAB求根的几种方法

1.roots求解多项式的根r=roots(c)注意:c为一维向量,者返回指定多项式的所有根(包括复根),poly和roots是互为反运算,还有就是roots只能求解多项式的解还有下面几个函数poly2sym、sym2poly、eig>>syms x>>y=x^5+3*x^3+3;>>c=sym2poly(y);%求解多项式系数>>r=roots(c);>>poly(r)2.residue求留数[r, p, k] = residue(b,a)>>b = [ 5 3 -2 7]>>a = [-4 0 8 3]>>[r, p, k] = residue(b,a)3.solve符号解方程(组)——使用最多的g = solve(eq1,eq2,...,eqn,var1,var2,...,varn)注意:eqn和varn可以是符号表达式,也可以是字符串表达式,但是使用符号表达式时不能有“=”号,假如说varn没有给出,使用findsym函数找出默认的求解变量。

返回的g是一个结构体,以varn为字段。

由于符号求解的局限性,好多情况下可能得到空矩阵,此时只能用数值解法解方程A=solve('a*x^2 + b*x + c')解方程组B=solve('a*u^2 + v^2', 'u - v = 1', 'a^2 - 5*a + 6')4.fzero数值求零点[x,fval,exitflag,output]=fzero(fun,x0,options,p1,p2...)fun是目标函数,可以是句柄(@)、inline函数或M文件名x0是初值,可以是标量也可以是长度为2的向量,前者给定一个位置,后者是给定一个范围options是优化参数,通过optimset设置,optimget获取,一般使用默认的就可以了,具体参照帮助p1,p2...为需要传递的其它参数假如说(x/1446)^2+p/504.1+(t/330.9)*(log(1-x/1446)+(1-1/5.3)*x/1446)=0的根,其中p,t是已知参数,但是每次都改变那么目标函数如下三种书写格式,效果完全等效。

Matlab数值实验求代数方程的近似根(解)教程

Matlab数值实验求代数方程的近似根(解)教程

Matlab数值实验求代数方程的近似根(解)教程一、问题背景和实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景和实验目的求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称为线性方程,否则称之为非线性方程.当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值.在实际问题抽象出的数学模型中,可以根据物理背景确定;也可根据的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.通过本实验希望你能:1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;2. 求代数方程(组)的解.二、相关函数(命令)及简介1.abs( ):求绝对值函数.2.diff(f):对独立变量求微分,f 为符号表达式.diff(f, 'a'):对变量a求微分,f 为符号表达式.diff(f, 'a', n):对变量 a 求 n 次微分,f 为符号表达式.例如:syms x tdiff(sin(x^2)*t^6, 't', 6)ans=720*sin(x^2)3.roots([c(1), c(2), …, c(n+1)]):求解多项式的所有根.例如:求解:.p = [1 -6 -72 -27];r = roots(p)r =12.1229-5.7345-0.38844.solve('表达式'):求表达式的解.solve('2*sin(x)=1')ans =1/6*pi5.linsolve(A, b):求线性方程组 A*x=b 的解.例如:A= [9 0; -1 8]; b=[1; 2];linsolve(A, b)ans=[ 1/9][19/72]6.fzero(fun, x0):在x0附近求fun 的解.其中fun为一个定义的函数,用“@函数名”方式进行调用.例如:fzero(@sin, 3)ans=3.14167.subs(f, 'x ', a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.例如:subs('x^2 ', 'x ', 2)ans = 4三、实验内容首先,我们介绍几种与求根有关的方法:1.对分法对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.设在上连续,,即,或,.则根据连续函数的介值定理,在内至少存在一点,使.下面的方法可以求出该根:(1) 令,计算;(2) 若,则是的根,停止计算,输出结果.若,则令,,若,则令,;.……,有、以及相应的.(3) 若 (为预先给定的精度要求),退出计算,输出结果;反之,返回(1),重复(1),(2),(3).以上方法可得到每次缩小一半的区间序列,在中含有方程的根.当区间长很小时,取其中点为根的近似值,显然有以上公式可用于估计对分次数.分析以上过程不难知道,对分法的收敛速度与公比为的等比级数相同.由于,可知大约对分10次,近似根的精度可提高三位小数.对分法的收敛速度较慢,它常用来试探实根的分布区间,或求根的近似值.2. 迭代法1) 迭代法的基本思想:由方程构造一个等价方程从某个近似根出发,令,可得序列,这种方法称为迭代法.若收敛,即,只要连续,有即可知,的极限是的根,也就是的根.当然,若发散,迭代法就失败.以下给出迭代过程收敛的一些判别方法:定义:如果根的某个邻域中,使对任意的,迭代过程,收敛,则称迭代过程在附近局部收敛.定理1:设,在的某个邻域内连续,并且,,则对任何,由迭代决定的序列收敛于.定理2:条件同定理 1,则定理3:已知方程,且(1) 对任意的,有.(2) 对任意的,有,则对任意的,迭代生成的序列收敛于的根,且.以上给出的收敛定理中的条件要严格验证都较困难,实用时常用以下不严格的标准:当根区间较小,且对某一,明显小于1时,则迭代收敛 (参见附录3).2) 迭代法的加速:a) 松弛法:若与同是的近似值,则是两个近似值的加权平均,其中称为权重,现通过确定看能否得到加速.迭代方程是:其中,令,试确定:当时,有,即当,时,可望获得较好的加速效果,于是有松弛法:,松弛法的加速效果是明显的 (见附录4),甚至不收敛的迭代函数经加速后也能获得收敛.b) Altken方法:松弛法要先计算,在使用中有时不方便,为此发展出以下的 Altken 公式:,是它的根,是其近似根.设,,因为,用差商近似代替,有,解出,得由此得出公式;;,这就是Altken 公式,它的加速效果也是十分明显的,它同样可使不收敛的迭代格式获得收敛(见附录5).3. 牛顿(Newton)法(牛顿切线法)1) 牛顿法的基本思想:是非线性方程,一般较难解决,多采用线性化方法.记:是一次多项式,用作为的近似方程.的解为记为,一般地,记即为牛顿法公式.2) 牛顿法的收敛速度:对牛顿法,迭代形式为:注意分子上的,所以当时,,牛顿法至少是二阶收敛的,而在重根附近,牛顿法是线性收敛的.牛顿法的缺点是:(1)对重根收敛很慢;(2)对初值要求较严,要求相当接近真值.因此,常用其他方法确定初值,再用牛顿法提高精度.4. 求方程根(解)的其它方法(1) solve('x^3-3*x+1=0')(2) roots([1 0 -3 1])(3) fzero('x^3-3*x+1', -2)(4) fzero('x^3-3*x+1', 0.5)(5) fzero('x^3-3*x+1', 1.4)(6) linsolve([1, 2, 3; 4, 5, 6; 7, 8, 0], [1, 2, 3]')体会一下,(2)(5) 用了上述 1 3 中的哪一种方法?以下是本实验中的几个具体的实验,详细的程序清单参见附录.具体实验1:对分法先作图观察方程:的实根的分布区间,再利用对分法在这些区间上分别求出根的近似值.输入以下命令,可得的图象:f='x^3-3*x+1';g='0';ezplot(f, [-4, 4]);hold on;ezplot(g, [-4, 4]); %目的是画出直线 y=0,即 x 轴grid on;axis([-4 4 -5 5]);hold off请填写下表:在某区间上求根的近似值的对分法程序参见附录1.具体实验2:普通迭代法采用迭代过程:求方程在 0.5 附近的根,精确到第 4 位小数.构造等价方程:用迭代公式:,用 Matlab 编写的程序参见附录2.请利用上述程序填写下表:分析:将附录2第4行中的分别改为以及,问运行的结果是什么?你能分析得到其中的原因吗?看看下面的“具体实验3”是想向你表达一个什么意思.用 Matlab 编写的程序参见附录3.具体实验3:收敛/发散判断设方程的三个根近似地取,和,这些近似值可以用上面的对分法求得.迭代形式一:收敛 (很可能收敛,下同)不收敛 (很可能不收敛,下同)不收敛迭代形式二:收敛不收敛不收敛迭代形式三:不收敛收敛收敛具体实验4:迭代法的加速1——松弛迭代法,,迭代公式为程序参见附录4.具体实验5:迭代法的加速2——Altken迭代法迭代公式为:,,程序参见附录5.具体实验6:牛顿法用牛顿法计算方程在-2到2之间的三个根.提示:,迭代公式:程序参见附录6 (牛顿法程序).具体实验7:其他方法求下列代数方程(组)的解:(1)命令:solve('x^5-x+1=0')(2)命令:[x, y]=solve('2*x+3*y=0', '4*x^2+3*y=1')(3) 求线性方程组的解,已知,命令:for i=1:5for j=1:5m(i, j)=i+j-1;endendm(5, 5)=0;b=[1:5]'linsolve(m, b)思考:若,或是类似的但阶数更大的稀疏方阵,则应如何得到?四、自己动手1.对分法可以用来求偶重根附近的近似解吗? 为什么?2.对照具体实验2、4、5,你可以得出什么结论?3.选择适当的迭代过程,分别使用:(1)普通迭代法;(2)与之相应的松弛迭代法和Altken 迭代法.求解方程在 1.4 附近的根,精确到4位小数,请注意迭代次数的变化.4.分别用对分法、普通迭代法、松弛迭代法、Altken 迭代法、牛顿切法线等5种方法,求方程的正的近似根,.(建议取.时间许可的话,可进一步考虑的情况.)。

求代数方程的近似根(解).

求代数方程的近似根(解).

主要内容
本实验讨论的数值算法
对分法 不动点迭代法
不动ห้องสมุดไป่ตู้迭代一般形式 松弛加速迭代法
牛顿迭代法
8
不动点迭代法
基本思想 构造 f (x) = 0 的一个等价方程:x 从某个近似根 x0 出发,计算
( x)
xk 1 ( xk )
得到一个迭代序列
k = 0, 1, 2, ... ...
11
k
迭代法收敛性判断
q 越小,迭代收敛越快
’(x*) 越小,迭代收敛越快
以上所给出的收敛性定理中的条件的验证都比较 困难,在实际应用中,我们常用下面不严格的判别 方法:
当有根区间 [a, b] 较小,且对某一 x0[a, b] ,
|’(x0)| 明显小于 1 时,则我们就认为迭代收敛 例:用不动点迭代法求 x3 - 3x + 1 = 0 在 [0, 1] 中的解。
例:用对分法求 x3 - 3x + 1 = 0 在 [0, 1] 中的解。(fuluA.m)
6
对分法收敛性
收敛性分析
根据上面的算法,我们可以得到一个每次缩小一半的 区间序列 {[ak , bk ]} ,在 (ak , bk ) 中含有方程的根。 设方程的根为 x* (ak , bk ) ,又 xk
基本思想
将有根区间进行对分,判断出解在某个分段内,然后 再对该段对分,依次类推,直到满足给定的精度为止
数学原理:介值定理
设 f(x) 在 [a, b] 上连续,且 f(a) f(b)<0,则由介值定 理可得,在 (a, b) 内至少存在一点 使得 f()=0
适用范围
求有根区间内的 单重实根 或 奇重实根

matlab中方程根的近似计算

matlab中方程根的近似计算

matlab中方程根的近似计算实验一方程根的近似计算一、问题求非线性方程的根二、实验目的1、学会使用matlab中内部函数roots、solve、fsolve、fzero求解方程,并用之解决实际问题。

4、熟悉Matlab的编程思路,尤其是函数式M文件的编写方法。

三、预备知识方程求根是初等数学的重要内容之一,也是科学和工程中经常碰到的数值计算问题。

它的一般形式是求方程f(x)=0的根。

如果有x*使得f(x*)=0,则称x*为f(x)=0的根,或函数f(x)的零点。

并非所有的方程都能求出精确解或解析解。

理论上已经证明,用代数方法可以求出不超过3次的代数方程的解析解,但对于次数大于等于5的代数方程,没有代数求根方法,即它的根不能用方程系数的解析式表示。

至于超越方程,通常很难求出其解析解。

不存在解析解的方程就需要结合具体方程(函数)的性质,使用作图法或数值法求出近似解。

而计算机的发展和普及又为这些方法提供了广阔的发展前景,使之成为科学和工程中最实用的方法之一。

下面介绍几种常见的求近似根的方法。

1. 求方程近似解的简单方法1.1 图形方法—放大法求根图形的方法是分析方程根的性态最简洁的方法。

不过,不要总是想得到根的精确值。

这些值虽然粗糙但直观,多少个根,在何范围,一目了然。

并且还可以借助图形局部放大功能,将根定位得更加准确一些。

例1.1 求方程x5+2x2+4=0的所有根及其大致分布范围。

解(1)画出函数f(x)=x5+2x2+4的图形,确定方程的实数根的大致范围。

为此,在matlab命令窗中输入clfezplot x-x,grid onhold onezplot('x^5+2*x^2+4',[-2*pi,2*pi])1-1 函数f(x)=x5+2x2+4的图形clfx=-2*pi:0.1:2*pi;y1=zeros(size(x));y2= x.^5+2*x.^2+4;plot(x,y1,x,y2)grid onaxis tighttitle('x^5+2x^2+4')xlabel('x')从图1-1可见,它有一个实数根,大致分布在-2与2之间。

实验三:matlab求代数方程的近似根(解)

实验三:matlab求代数方程的近似根(解)

相关概念
线性方程 与 非线性方程
f ( x) 0
如果 f(x) 是一次多项式,称上面的方程为线性方 程;否则称之为非线性方程。
对分法
基本思想
将有根区间进行对分,判断出解在某个分段内,然后 再对该段对分,依次类推,直到满足给定的精度为止。
适用范围
求有根区间内的 单根 或 奇重实根。
(1) 令 x0 (a b) / 2,计算 f ( x0 ); ( 2) 若 | f ( x0 ) | ,则 x0 就是我们所要的近似根,
停止计算, 输出结果 x x0;
(3) 若 f (a ) f ( x0 ) 0,令 a1 a, b1 x0 ; 否则令 a1 x0 , b1 b;
上机作业
作业(要求写实验报告)
教材:P69, 4
( x ) (1 w) x w ( x )
加权系数 wk 的确定:令 ’(x)=0 得
w 1 1 '( x )
wk
1 1 '( xk )
松弛迭代法
松弛法迭代公式:
xk 1 (1 wk ) xk wk ( xk )
1 wk , 1 '( xk )
根据上面的算法,我们可以得到一个每次缩小一半的 区间序列 {[ak , bk ]} ,在 (ak , bk ) 中含有方程的根。 设方程的根为 x* (ak , bk ) ,又 xk
1 1 1 1 | xk | ( bk ak ) ( bk 1 ak 1 )= = k 1 ( b a) 2 2 2 2
令: P ( x ) 0
ቤተ መጻሕፍቲ ባይዱ
f ( x0 ) x x0 f '( x0 )

用迭代法求方程的根的matlab程序

用迭代法求方程的根的matlab程序

用迭代法求方程的根的matlab程序迭代法是一种求解方程根的常用方法,它通过不断逼近根的方法来求解方程的解。

在matlab中,我们可以通过编写程序来实现迭代法求解方程的根。

我们需要确定迭代公式。

对于一般的方程f(x)=0,我们可以通过将其转化为x=g(x)的形式,然后通过不断迭代g(x)来逼近方程的根。

具体来说,我们可以选择一个初始值x0,然后通过迭代公式x(i+1)=g(x(i))来不断逼近方程的根。

当x(i+1)与x(i)的差值小于一定的精度要求时,我们就认为已经找到了方程的根。

下面是一个简单的matlab程序,用于求解方程x^2-2=0的根:function [x] = iteration_method()% 迭代法求解方程x^2-2=0的根% 初始值x0=1.5,精度要求为1e-6x0 = 1.5; % 初始值eps = 1e-6; % 精度要求% 迭代公式g = @(x) (x + 2/x)/2;x = x0;while abs(x - g(x)) > epsx = g(x);endend在这个程序中,我们首先定义了初始值x0和精度要求eps。

然后,我们定义了迭代公式g(x),即x(i+1)=(x(i)+2/x(i))/2。

最后,我们通过while循环来不断迭代x,直到满足精度要求为止。

当我们运行这个程序时,就可以得到方程x^2-2=0的根,即x=1.414213。

这个结果与方程的实际根非常接近,说明迭代法是一种有效的求解方程根的方法。

迭代法是一种常用的求解方程根的方法,它通过不断逼近根的方法来求解方程的解。

在matlab中,我们可以通过编写程序来实现迭代法求解方程的根。

通过这种方法,我们可以快速、准确地求解各种复杂的方程,为科学研究和工程实践提供了有力的支持。

matlab计算方程的根

matlab计算方程的根

MATLAB计算方程的根一、引言在数学中,方程的根指的是方程中使得等式成立的未知数的值。

解方程是数学中的一项基本操作,它在各个领域都有广泛的应用。

M A TL AB是一种强大的数值计算工具,它提供了多种方法来求解方程的根。

本文将介绍如何使用MA TL AB计算方程的根,包括求解一元方程和多元方程的方法。

二、求解一元方程的方法1.代数方法代数方法是求解一元方程的常用方法之一,它通过移项、合并同类项等代数运算,将方程转化为更简单的形式,从而求解方程的根。

在M A TL AB中,我们可以使用符号计算工具箱(Sy mb ol ic Ma thT o ol bo x)来进行代数运算。

以下是一个求解一元方程的示例代码:s y ms xe q n=x^2-3*x+2==0;s o l=so lv e(eq n,x);2.迭代法迭代法是数值计算中常用的一种方法,它通过逐步逼近方程的根,最终得到一个满足精度要求的解。

M AT LA B提供了多种迭代法求解方程根的函数,如牛顿迭代法(`fz er o`函数)、二分法(`f ze ro`函数)、割线法(`f ze ro`函数)等。

以下是一个使用二分法求解一元方程根的示例代码:f=@(x)x^2-3*x+2;x0=0;%初始猜测值x=fz er o(f,x0);三、求解多元方程的方法1.数值解法对于多元方程组,数值解法是一种常见且有效的求解方法。

MA T LA B提供了多种数值解法的函数,如牛顿法(`f s ol ve`函数)、最小二乘法(`ls qn on li n`函数)等。

这些函数可以根据方程组的特点选择合适的算法进行求解。

以下是一个使用牛顿法求解多元方程组的示例代码:f=@(x)[x(1)^2+x(2)^2-4;x(1)^2-x(2)^2-1];x0=[1;1];%初始猜测值x=fs ol ve(f,x0);2.符号解法在某些情况下,我们可以使用符号计算工具箱来求解多元方程组的精确解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k = polyder(p) k = polyder(p,q) [k,d] = polyder(p,q)
y = polyval(p,x) Y = polyvalm(p,X)
多项式运算中, 使用的是多项式
系数向量,
不涉及符号计算!
x = roots(p)
线性方程组求解
线性方程组求解
linsolve(A,b):解线性方程组 Ax b
p2 2x 1 p1 p2 2x3 x2 2x 4
[2, 1, 0, 3] [ 0, 0[,2,1] [2, 1, 2, 4]
多项式四则运算
多项式乘法运算: k = conv(p,q)
例:计算多项式 2x3 x2 3 和 2x 1 的乘积 >> p=[2,-1,0,3]; >> q=[2,1]; >> k=conv(p,q);
多项式除法运算: [k,r] = deconv(p,q) 其中 k 返回的是多项式 p 除以 q 的商,r 是余式。 [k,r]=deconv(p,q) <==> p=conv(q,k)+r
多项式的求导
polyder
k=polyder(p) : 多项式 p 的导数; k=polyder(p,q): p*q 的导数; [k,d]=polyder(p,q): p/q 的导数,k 是分子,d 是分母
fsolve [x,fval,flag,out]=fsolve(fun,x0,options): 参数大部分与fzero相同,优化参数更多,更灵活。 注意x0的长度必须与变量的个数相等。
它与fzero的区别是,算法不同,fsolve的功能强大多很多,它可 以直接方便的求解多变量方程组,线性和非线性,超静定和静不 定方程,还可求解复数方程。 fun同样可以是句柄、inline函数或M文件,但是一般M文件比较 多,这是由于fsolve是解方程组的,目标函数一般比较烦,直接 写比较困难
>> p=[2,-1,0,3]; >> x=roots(p)
若已知多项式的全部零点,则可用 poly 函数给出该多 x2 ) (x xn )
多项式运算小结
poly2sym(p,’x’) k = conv(p,q)
[k,r] = deconv(p,q)
多项式的值
矩阵多项式求值
Y=polyvalm(p,X)
采用的是普通矩阵运算 X 必须是方阵
例:已知 p(x) 2x3 x2 3,则
polyvalm(p,A) = 2*A*A*A - A*A + 3*eye(size(A)) polyval(P,A) = 2*A.*A.*A - A.*A + 3*ones(size(A))
例:解方程组

x
2yz xz3
2
x 3y 8
>> A=[1 2 –1; 1 0 1; 1 3 0]; >> b=[2;3;8]; >> x=linsolve(A,b)
b是列向量!
非线性方程的根
Matlab 非线性方程的数值求解 fzero(f,x0):求方程 f=0 在 x0 附近的根。
optimset('Display','off'))
>>function f=myfun(x) f=[x(1)-0.6*sin(x(1))-0.3*cos(x(2)),
x(2)-0.6*cos(x(1))+0.3*sin(x(2))]; >>[xy,f,exit]=fsolve(@myfun,[0.5,0.5]', optimset('Display','off'))
例:解方程组
uy2

vz

w

0 关于y,z的解
yzw0
>>[y,z]=solve('u*y^2+v*z+w=0','y+z+w=0','y','z
') >>S=solve('u*y^2+v*z+w=0','y+z+w=0','y','z ') >>disp('S.y'),disp(S.y),disp('S.z'),disp(S.z)
方程可能有多个根,但 fzero 只给出距离 x0 最近的一个 x0 是一个标量,不能缺省 fzero 先找出一个包含 x0 的区间,使得 f 在这个区间 两个端点上的函数值异号,然后再在这个区间内寻找方程 f=0 的根;如果找不到这样的区间,则返回 NaN。 由于 fzero 是根据函数是否穿越横轴来决定零点,因 此它无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的所有零点。
多项式四则运算
多项式加减运算
Matlab 没有提供专门进行多项式加减运算的函数,事实 上,多项式的加减就是其所对应的系数向量的加减运算
对于次数相同的多项式,可以直接对其系数向量进行 加减运算;
如果两个多项式次数不同,则应该把低次多项式中系 数不足的高次项用 0 补足,然后进行加减运算。
例: p1 2x3 x2 3
例:解方程组
x

y
0.6sin x 0.3cos 0.6cos x 0.3sin
y y

0 0
>>fun='[x(1)-0.6*sin(x(1))-0.3*cos(x(2)),
x(2)-0.6*cos(x(1))+0.3*sin(x(2))]';
>>[xy,f,exit]=fsolve(fun,[0.5,0.5]',…
例:已知 p(x) 2x3 x2 3,q(x) 2x 1 , 求 p',( p q)',( p / q)'
>> k1=polyder([2,-1,0,3]); >> k2=polyder([2,-1,0,3],[2,1]); >> [k2,d]=polyder([2,-1,0,3],[2,1]);
>> p=[2,-1,0,3]; >> x=[-1, 2;-2,1];polyval(p,x) >> polyvalm(p,x)
多项式的零点
x=roots(p):若 p 是 n 次多项式,则输出是 p=0 的 n 个根组成的 n 维向量。
例:已知 p(x) 2x3 x2 3,求 p(x) 的零点。
多项式的值
计算多项式在给定点的值
代数多项式求值
y = polyval(p,x): 计算多项式 p 在 x 点的值
注:若 x 是向量或矩阵,则采用数组运算 (点运算)!
例:已知 p(x) 2x3 x2 3,分别取 x=2 和一个 22 矩阵, 求 p(x) 在 x 处的值
>> p=[2,-1,0,3]; >> x=2; y=polyval(p,x) >> x=[-1, 2;-2,1]; y=polyval(p,x)
solve 在得不到解析解时,会给出数值解。
例:解方程组
x 2 y z 27

x

z

3
x5 3 y2 28
>> [x,y,z]=solve('x+2*y-z=27','x+z=3', ...
'x^5+3*y^2=28','x','y','z')
一般非线性方程数值解
相关文档
最新文档