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

JxB*_*JxB 3 wolfram-mathematica

我试图计算一个BezierFunction[]x分量的倒数,例如,定义为

fx[u_] := BezierFunction[{{0, 0}, {1/8, 3/4}, {1, 1}}][u][[1]]
Run Code Online (Sandbox Code Playgroud)

这是下图中的蓝色曲线:

来自BezierFunction的fx(u)

该曲线明显具有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
Run Code Online (Sandbox Code Playgroud)

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

In[3]:= FindRoot[fx[u] == 0.22, {u,0.4}]
Out[3]:= {u->0.22}
Run Code Online (Sandbox Code Playgroud)

In[4]:= InverseFunction[fx][0.22]
Out[4]:= 0.22
Run Code Online (Sandbox Code Playgroud)

我什么也没找到相应文件,相互作用InverseFunctionBezierFunction,或Part.有人知道提取BezierFunction的x分量的逆的方法吗?

Mr.*_*ard 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}]
Run Code Online (Sandbox Code Playgroud)
(* Out[]=  0.4 *)

此外,InverseFunction实际上并没有找到函数的逆,而是反函数的符号表示.