【问题标题】:NSolve unable to solve implicit differentiationNSolve 无法解决隐式微分
【发布时间】:2018-03-29 15:23:51
【问题描述】:

我试图用 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*)

【问题讨论】:

  • 为什么定义yPrime然后不使用呢? “隐式微分”在哪里?不清楚你在问什么。

标签: wolfram-mathematica calculus


【解决方案1】:

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 都是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    相关资源
    最近更新 更多