matlab函数零点求法,Matlab之函数零点 | 学步园

Matlab之函数零点

Matlab中求函数零点的函数是fzero(一元函数),fsolve(二元函数),roots(一元多项式)等:

fzero:

fzero可以求任何一元函数的零点:

求函数

0_1329008102Pv70.gif的零点:

x=-3:0.1:4;

y=x.^2.*sin(x)-x+1;

plot(x, y, 'r'); %绘出图形

grid on %显示网格

line([-3, 4], [0, 0]); %绘制x轴((-3,0)到(4,0)的一条直线)

title('fzero example');

xlabel('x');

ylabel('f(x)');

f=@(x)(x.^2.*sin(x)-x+1);

[m, n]=fzero(f,-2); %在x=-2附近求函数零点,m是零点的x坐标,n是零点的y坐标(注意:Matlab默认求出的是弧度值!)

0_13290076600zYH.gif

注意:[m, n] = fzero(funHandle, x0)表示在x0附近求funHandle函数句柄的零点,返回的m是求出的零点的x坐标,n是求出的零点的y坐标。其中函数句柄可以用下面的两种方法表示:

1.

一元函数:

f=@(x)(...)

如:f=@(x)(2*x.^2+5*x-15)

二元函数:

f=@(x, y)(...)

如:f=@(x, y)(sin(x.^2+y.^2))

2.

一元函数:

f=inline('f(x)', 'x')           其中f(x)是函数表达式,x是该函数表达式中的自变量

如:f=inline('2*x.^2+5*x-15', 'x')

二元函数:

f=inline('f(x)', 'x', 'y')     其中f(x)是函数表达式,x,y是该函数表达式中的自变量

如:f=inline('sin(x.^2+y.^2)',

'x', 'y')

注意:定义好函数句柄后就可以按下面的方法使用:f(10)表示求x=10的函数值

roots:

roots可以求一元多项式函数(诸如

0_1329008882MpyW.gif的形式)的所有零点:

求函数

0_1329008908hdsW.gif的零点:

o=roots([1 0 -2 -5]);

输出三个零点,包括两个复数

注意:o=roots(m)中m表示该多项式的各阶系数(阶数从大到小排列),输出的o是一个一维列向量,表示求出的所有零点(包括复数)

fsolve:

fsolve可以求出二元函数的零点:

求方程组

0_1329018364196x.gif的零点(从[-5, -5]处开始搜寻)(fsolve采用迭代法求零点,因此需要设定一个初始值):

首先我们要把上面的每个方程化为

0_1329055162U3ck.gif的形式,然后输入:

f=@(x)([2*x(1)-x(2)-exp(-x(1)); -x(1)+2*x(2)-exp(-x(2))]);

y=fsolve(f,[-5 -5]);

得到:

y=[0.5671 0.5671]

代入f:

f(y)

输出:

1.0e-006 *

-0.4059

-0.4059

可见y=[x1, x2]的确非常接近零点

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值