如何在 MATLAB 中计算函数的逆?假设你想计算 f(x)=e^x 的倒数,代码是什么?
问问题
14610 次
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 回答