当前位置:文档之家› 1.3 MATLAB中函数的数值运算

1.3 MATLAB中函数的数值运算

MATLAB程序设计
主讲:李强 Email:qianglinan@ 数学与信息科学学院
1.3 MATLAB中函数的数值运算


MATLAB除了可以进行简单的数值运算外,还 可以由用户自定义函数建立一元或多元数值函 数。通过建立函数,可以求解相关的各种问题, 如求函数的值、零点、极值、积分等。 1.3.1 数值函数的建立 MATLAB建立数值函数通常有两种方式:一种 使用inline命令;另一种是通过编写函数程序, 用function来定义函数。






如何求解函数fy在[0.2,0.8]上的最大值点及最大值呢? 事实上,函数fy在[0.2,0.8]上的最大值就是-fy在 [0.2,0.8]上的最小值。 ff= inline('-1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)6') ; %函数ff=-fy [x, y]=fminbnd(ff,0.2,0.8); %函数ff在[0.2,0.8]上最 小值点及最小值 xmax=x fmax=-y




例1-12 建立同时计算y1=(a+b)n, y2=(a-b)n的 函数,即任给a、b、n三个数,返回y1、y2。 在编辑窗口中输入如下程序: function [y1,y2]=fun1(a,b,n) y1=(a+b).^n; y2=(a-b).^n; 输入完成后用函数名fun1作为文件名存盘,形 成一个函数文件:fun1.m,可以进行调用。


>> [y1,y2]=fun1(1,2,3) %此处不能写为[y1,y2]=fun1(1 2 3)


y1 =
27 y2 =


-1 请用实验验证以上结果,并总结数值函数的定义与用 法。

2. 数值函数的图形



x=0:0.01:2; %生成自变量; y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6; %生成函数y,注意点运算 plot(x,y,‘linewidth',2) %画函数曲线
See also SYMVAR.


例如: f=inline('x.^2-3') %建立一元函数f(x)=x2-3 g=inline('x.^y-3', 'x', 'y') %建立二元函数f(x)=xy-3 g=inline('x.^y-3', 'y', 'x') %建立二元函数f(x)=xy-3
fplot(f,[0,2]) % 画函数f在[0,2]上的曲线



3. 数值函数的零点 当一个函数f(x)与x轴相交时,交点(又称为零 点)是方程f(x)=0的一个实根。如何求函数的 零点,MATLAB提供了一个重要命令fzero。 其使用方法有两种: (help fzero 出来很多!)

grid
%加坐标网格


另一方面,可以通过建立数值函数,运用 MATLAB的fplot命令来实现,其格式: fplot(f,[a,b]) 上述图形也可以用下述命令来完成。 >> f=inline('1./((x-0.3).^2+0.01)+1./((x0.9).^2+0.04)-6') % 生成数值函数f(x)


例如:对于上一节建立的函数f(x)、g(x,y)、 h(y,x)、f1(x)和fun1(a,b,n)有如下结果: >> f=inline('x.^2-3') %建立一元函数f(x)=x2-3 f= Inline function: f(x) = x.^2-3 >> f(2) ans =1


xmax = 0.2996 fmax = 103.5014




5. 数值函数的积分 求一元函数定积分或多元函数重积分的近似值, MATLAB提供了有关命令quad(定积分)、dblquad( 二重积分)和triplequad(三重积分)。他们的使用方 法如下: Quad(四方院子;四胞胎之一;嵌条;成套的四件 东西) 求一元函数f(x)在区间[a,b]上的定积分(近似计算), 格式为 低阶方法:quad(f,a,b) 高阶方法:quadl(f ARG1, ARG2, ...) constructs an inline function whose input arguments are specified by the strings ARG1, ARG2, ... Multicharacter symbol names may be used.
注意g(x,y)与h(y,x)的区别,如g(2,3)=5, h(2,3)=6, 为什么?



使用function创建M函数(实验3将详细介绍) 编写程序建立一个M函数是MATLAB的一种常用方 式。 例如在编辑窗口驶入如下程序: function y=f1(x) %声明建立一个名为f1的函数; y=x.^2-3; %建立函数f(x)=x2-3,x可以为向量
1.3.1 数值函数的建立


使用inline命令 Inline 内联的 INLINE Construct INLINE object. INLINE(EXPR) constructs an inline function object from the MATLAB expression contained in the string EXPR. The input arguments are automatically determined by searching EXPR for variable names (see SYMVAR). If no variable exists, 'x' is used.
求函数f(x)在x0附近的零点c,格式: c=fzero(f, x0 )


求函数f(x)在区间[a,b]附近的零点c,格式: c=fzero(f, [a,b]) 这里要求函数在区间两端点处的函数值要异号。



例如,对于例题1-13中所定义的f(x),求其零点 c。 f= inline('1./((x-0.3).^2+0.01)+1./((x0.9).^2+0.04)-6') ; c=fzero(f, [0,2]) %求函数f在[0,2]上的零点c, 要求f(0)f(2)<0
INLINE(EXPR, N), where N is a scalar, constructs an inline function whose input arguments are 'x', 'P1', 'P2', ..., 'PN'.




Examples: g = inline('t^2') g = inline('sin(2*pi*f + theta)') g = inline('sin(2*pi*f + theta)', 'f', 'theta') g = inline('x^P1', 1)
I=quad(f,0,1) I= 29.8583 %求f(x)在[0,1]上的定积分



g=inline('x*y','x','y'); % 建立二元函数g(x,y)=xy


I=dblquad(g,0,1,1,2) %求g(x,y)在[0,1]×[1,2] 上的二重积分 I= 0.7500





例1-16 利用MATLAB命令求解无理数的近似值。 用函数零点命令—fzero求无理数e的近似值; 用定积分计算命令(trapz、quad、quadl)求无理数ln2 的近似值。 无理数e可以看成是方程lnx-1=0在x=2附近的实根, 于是可以用fzero来求解。

>> f=inline('log(x)-1'); %建立函数f(x)=lnx-1 x0=fzero(f,2); %求解方程f(x)=0在x=2附近的根 x0 = 2.7183

格式为:trapz(X,Y)
应用举例

例1-15

当s=5 f=inline('1/4*x^4-5/3*x^3+3*x^2+5*x-5'); %建立函数x=fzero(f,[0,5]) %求解方程f(x)=0 在[0,5]上的根
x= 0.7762


同理可求出s=10 时,
f=inline('1/4*x^4-5/3*x^3+3*x^2+5*x-10'); %建立函数x=fzero(f,[0,10]) %求解方程f(x)=0 在[0,10]上的根 x= 1.5179

求二元函数f(x,y)在长方形区域[a,b]×[c,d]上 的二重积分,格式为
dblquad(f,a,b,c,d)

求三元函数f(x,y,z)在长方体区域[a,b]×[c,d] ×[e,f]上的三重积分,格式为 triplequad(f,a,b,c,d,e,f)


例如,求例题1-13所定义f(x)在[0,1]上的定积 分 f= inline('1./((x-0.3).^2+0.01)+1./((x0.9).^2+0.04)-6') ;
相关主题