匿名函数和符号计算的结合
有时候需要推导一些表达式,而对得到的表达式进行诸如求值、积分或者极值的运算。如果表达式不是很复杂的话,可以手动推导。但是很多时候手动推导非常烦琐甚至根本不可能,这时候就要借助计算机来推导。在得到表达式后,再将其转化成匿名函数,从而方便的进行后续
例1求下面函数三阶导数在[0,1]的图像。
本例如果用手动计算的话,比较烦琐。如果用符号运算得到三阶导数的解析表达式,然后再转化成匿名函数,则比较方便。
代码如下
syms x
f=(x+tan(x))^(sin(x));
c=diff(f,3);
f3=eval(['@(x)' vectorize(c)]);
x=linspace(0,1,100);
plot(x,f3(x),'r','linewidth',2)
title('y=(x+tan(x))\^(sin(x))三阶导数图像')
xlabel('x');ylabel('y');
得到的图形如图
eval函数的功能是将字符串转换为matlab可执行语句
vectorize函数的功能是把一个接受标量的函数(更准确的说,可调用对象)变为接受向量的函数