MATLAB匿名函数的应用2

匿名函数在显式表达隐函数方面的应用

隐函数一般无法在数学上显式表达。这里说的显式表达指的是构造一个MATLAB函数来表达隐函数,具体思路是对于给定的隐函数的自变量x,通过数值方法求解出因变量y,这样就相当于显式表达隐函数。
  **例1**

例1
利用匿名函数,可以在matlab中显式的写出y和x的关系如下:

y=@(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1);

这样,对于任意的x,只需调用yx=y(x),就能得到对应的y值,如:

format long
y1=y(1)
y1 =

   2.777942350124938
>>y2=y(2)

y2 =

   1.105452026515033
>> y3=y(3)

y3 =

   0.775941879211877

这时的y只能接受标量x输入,利用函数arrayfun,也可以令其接受向量输入:

>> format long
>> Y=@(x)arrayfun(@(xx)fzero(@(y)(exp(y)+xx^y)^(1/y)-xx^2*y,1),x);
>> Y(1:10)

ans =

  122.777942350124938   1.105452026515033

  340.775941879211877   0.628359329251039

  560.542541817671730   0.485590680913226

  780.444620168925079   0.413493851208235

  9100.388897398866600   0.368874717117660

其实arrayfun函数作用就是对y=@(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1)增加了一个循环的“外壳”,使得Y既可以接受标量x输入,还可以接受向量x的输入。
其中@(xx)fzero(@(y)(exp(y)+xx^y)^(1/y)-xx^2*y,1)是arrayfun函数的第一个输入参数,定义了以循环变量“xx”为输入参数的匿名函数,其功能是针对每个xx,求对应的使
图片
成立的y。xx的循环范围是Y的输入变量x,也就是上述arrayfun函数的第二个输入参数。
例2
例2
借助匿名函数,可以写出z关于x,y的关系式如下:

z=@(x,y)fzero(@(z)z-sin((z*x-0.5)^2+2*x*y^2-z/10)*...
    exp(-((x-0.5-exp(-y+z))^2+y^2-z/5+3)),rand);

其中,fzero函数求解该隐函数的初值为随机值rand。利用上述匿名函数,可以画出z关于x,y的图形:

z=@(x,y)fzero(@(z)z-sin((z*x-0.5)^2+2*x*y^2-z/10)*...
    exp(-((x-0.5-exp(-y+z))^2+y^2-z/5+3)),rand);
[X,Y]=meshgrid(-1:0.1:7,-2:0.1:2);
Z=arrayfun(@(x,y)z(x,y),X,Y);
surf(X,Y,Z);
xlabel('\fontsize{15}\fontname{times new roman}x','color','b');
ylabel('\fontsize{15}\fontname{times new roman}y','color','b');
zlabel('\fontsize{15}\fontname{times new roman}z','color','b');
title('\fontsize{15}\fontname{隶书}z(x,y)的函数图像','color','r');

如图
图片

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值