1.3 MATLAB中函数的数值运算

  • 格式:ppt
  • 大小:149.00 KB
  • 文档页数:57

下载文档原格式

  / 57
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


INLINE(EXPR, ARG1, ARG2, ...) constructs an inline function whose input arguments are specified by the strings ARG1, ARG2, ... Multicharacter symbol names may be used.
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
fplot(f,[0,2]) % 画函数f在[0,2]上的曲线



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


用文件名f1(函数名)保存程序,生成f1.m文件即 为建立的函数。 M-函数必须由function语句引导,具体格式为: function [输出变量列表]=函数名(输入变量列表)
例1-12 建立同时计算y1=(a+b)n, y2=(a-b)n的函 数,即任给a、b、n三个数,返回y1、y2。 在编辑窗口中输入如下程序:

h=inline('x.*exp(y)+z.^2','x','y','z'); % 建立三元函数; I=triplequad(h,0,1,0,1,0,1)



%求h(x,y,z)在[0,1]×[0,1] ×[0,1]上的三重积分 I= 1.1925

另外,对于定积分,如果已知积分区间[a,b]的 一个划分向量X=[x1,x2,…,xn],以及被积函数y 在对应划分点处的函数值向量Y=[y1,y2,…,yn]( 函数表达式未必知道),那么可以用梯形近似 计算方法计算定积分,MATLAB提供了命令 trapz。
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

求二元函数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') ;
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

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)




例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,可以进行调用。




1.3.2 数值函数的运算 当一个数值函数通过上述方法,由inline或function 建立以后,就可以用于求解相关的各种问题,如求 函数值,函数的零点、极值、积分等。 1. 求函数值 当自变量为给定的值或向量时,函数返回相应的函 数值或函数值向量。 例如:对于上一节建立的函数f(x)、g(x,y)、h(y,x)、 f1(x)和fun1(a,b,n)有如下结果:


例如:对于上一节建立的函数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
MATLAB程序设计
主讲:李强 Email:qianglinan@126.com 数学与信息科学学院
1.3 MATLAB中函数的数值运算


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


fzero(f,1) %求函数f在x=1附近的零点 >> fzero(f,1) %求函数f在x=1附近的零点 ans =
1.2995




4. 数值函数的最小(大)值 求一元函数或多元函数的最小(大)值是数学上 经常遇到的问题,如何求解最小(大)值, MATLAB提供了相应的命令fminbnd(一元函 数最小值)和fminsearch(多元函数最小值)。 求一元函数f(x)在区间[a,b]上的最小值点x及最 小值y,格式为 [x,y]=fminbnd(f,a,b)
INLINE(EXPR, N), where N is a scalar, constructs an inline function wk.baidu.comhose 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)
注意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可以为向量

格式为: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


>> [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) %画函数曲线





例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


xmax = 0.2996 fmax = 103.5014




5. 数值函数的积分 求一元函数定积分或多元函数重积分的近似值, MATLAB提供了有关命令quad(定积分)、dblquad( 二重积分)和triplequad(三重积分)。他们的使用方 法如下: Quad(四方院子;四胞胎之一;嵌条;成套的四件 东西) 求一元函数f(x)在区间[a,b]上的定积分(近似计算), 格式为 低阶方法:quad(f,a,b) 高阶方法:quadl(f,a,b)






如何求解函数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
求多元函数f(X)在点X0附近的最小值点X及最小值y, 格式为 [X,y]=fminbnd(f,a,b) 这里X、X0均为向量。 对于例题1-13中所定义函数的f(x),求其在区间 [0.2,0.8]上的最小值。 fy= inline('1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)6') ; [xmin,fmin]=fminbnd(fy,0.2,0.8) %函数fy在 [0.2,0.8]上最小值点及最小值 xmin = 0.6370,fmin =11.2528


>> g=inline('x.^y-3', 'x', 'y') g= Inline function: g(x,y) = x.^y-3
>> g(2,3) ans = 5
%建立二元函数f(x)=xy-3


>> Y=f1(2) Y= 1
>> f([1 2 3]) ans = -2 1 6