MATLAB匿名函数的应用1

时间:2022-03-28 20:23:53

匿名函数在求解方程中的应用

匿名函数可以非常方便的表示所求的方程,并供fzero等求解函数调用。
例1 求解下列方程的根
$$f(x)=\{e}^{x}+x^{\sqrt{x}}+x^a=100$$
求解代码如下
f=@(x)exp(x)+x^2+x^(sqrt(x))-100
f =

  包含以下值的 function_handle:

    @(x)exp(x)+x^2+x^(sqrt(x))-100
>> format long
>> x0=fzero(f,3)

x0 =

   4.163549956946139
>> f(x0)

ans =

     2.842170943040401e-14

又上例可以看出,匿名函数在表达方程方面很简洁。上例没有参数,如果方程有参数而且要求对不同的参数一一求解方程相应的根
例1-1续
对于a=[0,0.01,0.02,…,2],求下列方程相应的x值,并画出a和相应的x的图像。
MATLAB匿名函数的应用1

f=@(a)@(x)exp(x)+x^a+x^(sqrt(x))-100;%构造函数句柄
format long
aa=0:0.01:2;
plot(aa,arrayfun(@(a) fzero(f(a),4),aa),'*-')%利用arrayfun求解不同的a对应的x
xlabel('$a$','interpreter','latex','fontsize',15)%标注x、y坐标轴,按照latex语法
ylabel('$x$','interpreter','latex','fontsize',15)
title('$\mathrm{e}^{x}+x^{\sqrt{x}}+x^a-100$','interpreter','latex',...
    'fontsize',15)

生成的图形如图所示
MATLAB匿名函数的应用1