4

如何在 MATLAB 中计算函数的逆?假设你想计算 f(x)=e^x 的倒数,代码是什么?

4

3 回答 3

6

如果分析方法失败(尽可能首选),请使用数值方法:

给定 y 并猜测 x0 的逆

x = fzero( @(x)(f(x)-y), x0 ); 

或者当 x 的范围已知为 xmin...xmax 时,精度较低但速度更快的方法

xx = linspace( xmin, xmax, N );
yy = f(xx);
x = interp1(yy, xx, y);

当然,必须根据所需的精度来选择 N。

于 2013-09-29T21:11:20.843 回答
2

您可以使用符号数学工具箱http://www.mathworks.com/help/symbolic/finverse.html中的 finverse, 但对于您的示例,您可以只做 ln()?

于 2013-09-29T21:02:55.710 回答
0

单调函数的数值逆:设 v 是单调递增的数字数组(这意味着 v=sort(v))。然后你可以很简单地推导出逆(vinv):

vinv=cumsum(hist(v,length(v)));

在此之后,您可以通过一些缩放来美化结果,但基本上hist -thingi 的 cumsum 就可以了。

您可以测试以下内容:

x=randn(1,1000);
v=sort(x);
plot(v);
vinv=cumsum(hist(v,1000));
figure(2);
plot(vinv);
于 2018-03-13T13:54:27.847 回答