我正在尝试计算BezierFunction[]
x分量的倒数,例如,由
fx[u_] := BezierFunction[{{0, 0}, {1/8, 3/4}, {1, 1}}][u][[1]]
这是下图中的蓝色曲线:
该曲线明显具有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
我在InverseFunction
与BezierFunction
或Part
的互动文档中未找到任何内容。任何人都知道提取BezierFunction的x分量的逆的方法吗?
答案 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
实际上并不找到函数的逆,而是反转的符号表示。