文档详情

Matlab学习系列14匿名函数.docx

发布:2017-01-07约3.32千字共9页下载文档
文本预览下载声明
14. 匿名函数Matlab7.0以上版本开始引入匿名函数,它可以实现内联函数所有功能,而且代码更简捷高效。匿名函数的主要功能:(1)可以代替“将函数编写为单独的m-文件”;(2)可以实现符号函数的赋值运算;(3)很方便地对含参变量函数进行操作。(一)基本语法f=@(参数1, 参数2, …) 函数表达式其中,f为函数句柄,即调用匿名函数时使用的名字。例如,f=@(x, y) x^2+y^2; f(1, 2)输出结果:ans=5输入参数也可以是向量,例如,f=@(x, y) x.^2+y.^2;a=1:1:10; b=10:-1:1;f(a,b)输出结果:ans=101 85 73 65 61 61 65 73 85 101二重匿名函数:例如,f=@(a, b) @(x) a*x+b;其中,“a, b”是外层变量,“x”是内层变量。这样理解:每个“@”符号后面括号里的变量的作用域一直到表达式的结尾。例如对于“a=2, b=3”, f(2, 3)是以x为变量的匿名函数:(f(2, 3))(x)=2*x+3类似的可以定义多重匿名函数。(二)应用实例一、符号函数的赋值运算例1 求下面函数的三阶导数在x=0.5的值,并绘制其在[0, 1]上的图像:分析:先用符号运算得到三阶导数的解析表达式,再转化为匿名函数,再求值和绘图。代码:syms xf=(x+tan(x))^(sin(x));c=diff(f,3);f3=eval([@(x) vectorize(c)]);% vectorize函数的功能是使内联函数适合数组运算的法则f3(0.5)x=linspace(0,1,100);plot(x,f3(x),linewidth,2)title(y=[x+tan(x)]\^(sin(x))三阶导数图像)xlabel(x)ylabel(y)运行结果:ans = 4.3158二、求解方程与参数方程Matlab中求解连续函数f(x)=0的根的命令是:fzero(f, x0)其中,x0为寻找根的初始值。例2 求下面方程的根:代码:f=@(x) exp(x) + x^2 + x^(sqrt(x))-100;format long % 设置更高的精度x0=fzero(f,3)f(x0) % 验证根运行结果:x0 = 4.163549956946139ans = 2.842170943040401e-014例3 若例2中的方程带有参数a,要求针对a在[0,2]上的不同取值求解方程,并绘制方程的解x与a的关系的图像。代码:f=@(a) @(x) exp(x)+x^a+x^(sqrt(x))-100; % 相当于(f(a))(x)=exp(x)+x^a+x^(sqrt(x))-100format longfzero(f(1),4) % a=1时,求解方程的根x,初始值为4A=0:0.01:2;x=@(a) fzero(f(a),4); % 带着参数a求解方程的根x,得到x=x(a)X=@(A) arrayfun(@(a) x(a),A); % x(a)只能接受标量a,处理成能接受向量AY=X(A);plot(A,Y,*-)xlabel($a$,interpreter,latex,fontsize,15)ylabel($x$,interpreter,latex,fontsize,15)title($\mathrm{e}^{x}+x^{\sqrt{x}}+x^a-100$,interpreter,latex,fontsize,15)% 用latex格式输入要显示的公式运行结果:ans = 4.315274301739397三、“显式”表示隐函数隐函数一般无法给出显式表达式,但借助匿名函数可以实现“已知隐函数表达式,对于给定的自变量x,可以通过数值方法求出因变量y”。例4 “显式”表示下列隐函数:其“显式表示”为:y=@(x) fzero(@(y) (exp(y)+x^y)^(1/y)-x^2*y,1);相当于求解满足“exp(y)+x^y)^(1/y)-x^2*y=0”的y=y(x), 其中1是初始值。代码:y=@(x) fzero(@(y) (exp(y)+x^y)^(1/y)-x^2*y,1);% 求解满足隐函数方程的y=y(x), 由此可以计算x=某值时的y的值format longy1=y(1)y2=y(2)y3=y(3)Y=@(X) arrayfun(@(x) y(x),X); % 把y=y(x)处理成可以接受向量的形式Y(1:10) 运行结果:y1 = 2.777942350124938y2 = 1.105452026515033y3 = 0.775941879211877ans = 2.777942350124938 1.10545
显示全部
相似文档