如何计算BezierFunction []的x分量的逆?

时间:2011-11-06 05:39:12

标签: wolfram-mathematica

我正在尝试计算BezierFunction[] x分量的倒数,例如,由

定义
fx[u_] := BezierFunction[{{0, 0}, {1/8, 3/4}, {1, 1}}][u][[1]]

这是下图中的蓝色曲线:

fx(u) from BezierFunction

该曲线明显具有0≤u≤1的唯一倒数,例如红色虚线所示,它在坐标{0.4,fx[0.4]} == {0.4, 0.22}处相交。

In[1]:=  fx[0.4]
Out[1]:= 0.22

In[2]:=  fx[0.4] == 0.22
Out[2]:= True

所以我对以下内容感到惊讶:

In[3]:= FindRoot[fx[u] == 0.22, {u,0.4}]
Out[3]:= {u->0.22}

In[4]:= InverseFunction[fx][0.22]
Out[4]:= 0.22

我在InverseFunctionBezierFunctionPart的互动文档中未找到任何内容。任何人都知道提取BezierFunction的x分量的逆的方法吗?

1 个答案:

答案 0 :(得分:5)

你被一个又一次出现的旧问题所困扰。您需要将函数限制为数字参数,或者您正在对未评估的表达式进行部分提取,仅产生u

试试这个:

Clear[fx]

fx[u_?NumericQ] := 
 BezierFunction[{{0, 0}, {1/8, 3/4}, {1, 1}}][u][[1]]

FindRoot[fx[u] == 0.22, {u, 0.3, 0.5}]
(* Out[]=  0.4 *)

此外,InverseFunction实际上并不找到函数的逆,而是反转的符号表示。