NSolve无法解决隐性分化问题

时间:2018-03-29 15:23:51

标签: wolfram-mathematica calculus

我试图在x = 1处用这个隐式微分问题求解斜率,但是NSolve无法解决它。我怎样才能解决这个问题?

eqn[x_, y_] := x*Sin[y] - y*Sin[x] == 2 (*note: bound is -5<=x<=5,-5<=y<=5*)

yPrime = Solve[D[eqn[x, y[x]], x], y'[x]] /. {y[x] -> y, 
y'[x] -> y'} // Simplify
{{Derivative[1][y] -> (y Cos[x] - Sin[y])/(x Cos[y] - Sin[x])}}

NSolve[eqn[x, y] /. x -> 1, y] (*this doesn't work*)

1 个答案:

答案 0 :(得分:0)

NSolve并非真正适合这项工作的工具。

来自Wolfram Documentation

  

如果你的方程只涉及线性函数或多项式,那么   您可以使用NSolve来获取所有数字的近似值   解决方案。但是,当你的方程涉及更复杂时   功能,一般没有找到所有的系统程序   解决方案,甚至数字化。在这种情况下,您可以使用FindRoot   寻找解决方案。你必须给FindRoot一个地方开始它   搜索范围。

由于您的函数不是真正的多项式,因此以下工作:

FindRoot[eqn/.x->1,{y,-2}]
{y -> -2.7881400978783035` }

您可以插入yprime

选择起点并不明显,但快速ContourPlot始终有效:

ContourPlot[x*Sin[y] - y*Sin[x], {x, -5, 5}, {y, -5, 5}, Contours -> {2}]

它表明您的等式不是唯一的x