无法在python中解决超越方程

时间:2016-04-05 09:30:56

标签: python math wolfram-mathematica symbolic-math

我正在攻击的功能如下所示:

y(a) = pi/2 + arctan(np.sqrt(a/((2*R)-a))) - arccos(1-(a/R))

在此处可视化:https://www.desmos.com/calculator/pf39xc033q

function diagram

Eq1以弧度为单位,Eq2我将度量放入以使函数更易于查看。

我有y(a),但我希望得到a(y),而我似乎无法做任何事情。如果有人能指出我正确的方向,我会非常感激。

2 个答案:

答案 0 :(得分:2)

请注意

y == Pi/2+ArcTan[Sqrt[a/((2*R)-a)]]-ArcCos[1-a/R] && 0<=a<2 R

完全等同于

y == Pi/2-1/2 ArcCos[1-a/R] && 0<=a<2 R

因此

a == R(1-Cos[2 y-Pi]) && 0<=y<=Pi/2 && 0<R

并将其简化为

a == 2 R Cos[y]^2 && 0<=y<=Pi/2 && 0<R

所有这些都使用Mathematica表示法编写,因为有一个Wolfram-Mathematica标记。

仔细检查以确保没有错误。

答案 1 :(得分:0)

如果您对分析解决方案没有好运,那么近似。

形状不增加,因此您可以使用二进制搜索。如果不是这种情况,您仍然可以使用Approximation search或任何其他近似或优化方法。

您还可以将多项式参数曲线拟合到您的函数中,并通过分析计算其逆。或者您可以将图形反转曲线直接拟合为多项式。请注意,某些功能无法非常准确地适应多项式。

对于非常难的功能,使用 LUT 及其反 LUT 参见