应用导数而不是输入导数

发布于 2025-01-13 08:54:23 字数 426 浏览 1 评论 0原文

在此代码中,函数及其导数旨在输入,因为 Eval 接受字符串:

def newton(func, deriv, x, n):
    def f(x):
        f =eval(func)
        return f
    def df(x):
        df =eval(deriv)
        return df
    for h in range(1,n):
        i = x - (f(x)/df(x))
        x = i

但是,如果我们希望机器向我们建议导数,使输入如下所示,该怎么办?

newton(str(y),str(y.diff), 2,10)

输出是“x* 的绑定方法 Expr.diff” *2 + 1 英寸。有办法解决这个问题吗?谢谢。

In this code, function and its derivative are intended to be type in, since Eval accepts strings:

def newton(func, deriv, x, n):
    def f(x):
        f =eval(func)
        return f
    def df(x):
        df =eval(deriv)
        return df
    for h in range(1,n):
        i = x - (f(x)/df(x))
        x = i

But what if we wish the machine to advise us the derivative, making the input like:

newton(str(y),str(y.diff), 2,10)

The output is "bound method Expr.diff of x**2 + 1". Is the a way to fix this? Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄风 2025-01-20 08:54:23

字符串不知道如何计算导数,但是(如果您确实想这样做)您需要一个字符串来表示字符串 y 所描述的函数的导数。因此,创建一个知道如何求导数的 SymPy 对象,求导数,然后将其转换回字符串:(

>>> y = 'x**2 + 1'
>>> newton(y, str(S(y).diff()), 2, 10)

但是,如果没有 return 语句,您的函数将不会向您显示任何内容。)

Strings don't know how to calculate a derivative but (if you really want to do it this way) you need a string that represents the derivative of the function described by the string y. So create a SymPy object that knows how to take the derivative, take the derivative, then convert it back to a string:

>>> y = 'x**2 + 1'
>>> newton(y, str(S(y).diff()), 2, 10)

(Your function won't show you anything, however, without a return statement.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文