定义 sympy 函数导数的数值计算

2023-12-01

如何在 sympy 中定义函数导数的数值计算? 我有一些函数可以用函数的样条曲线来描述,并且它是使用 scipy.interpolate 的导数。 我想用这个函数操作一些表达式,然后用样条曲线计算表达式。

我可以使用lambdaify 使 sympy 函数以样条曲线的形式进行数值计算。 但是如何定义 sympy 函数的导数以将数值计算为样条曲线呢?

E.g.

import sympy as sp
import numpy as np
from scipy.interpolate import InterpolatedUnivariateSpline
from sympy.ultilitis.lambdify import implemented_function, lambdify

r = sp.symbols('r')
B = sp.symbols('B', cls=sp.Function)

B_spline = InterpolatedUnivariateSpline([1,2,3,4],[1,4,9,16])
B_der_spline = InterpolatedUnivariateSpline([1,2,3,4],[2,4,6,8])
B = implemented_function(B, lambda r: B_spline(r))

class A(sp.Function):
    nargs = 2

    @classfunction
    def eval(cls, r, B):
        return r**2*B(r)

 A_eval = lambdify(r, A(r,B))
 A_eval(3)
 >>> 81.0
 A_diff_eval = lambdify(r, sp.diff(A(r,B)))
 A_diff_eval(3)
 >>> NameError: global name 'Derivative' is not defined

SymPy 不知道如何获取样条函数的导数,因为它只有来自 scipy 的数字版本。

Also, A这里可能只是一个Python函数,因为你永远不会不评估它。这也更有意义,因为将函数作为参数传递给 SymPy 函数有点奇怪。

All implemented_function确实是symfunc._imp_ = staticmethod(implementation) (here symfunc = B and implementation = lambda r: B_spline(r))。您还需要添加fdiff这样它就会返回一个新的 SymPy 函数B_der_spline。就像是

class B_spline_sym(Function):
    _imp_ = staticmethod(B_spline)

    def fdiff(self, argindex=1):
        return B_der_spline_sym(self.args[0])

class B_der_spline_sym(Function):
    _imp_ = staticmethod(B_der_spline)

def A(r, B):
    return r**2*B(r)

Giving

In [87]: B = B_spline_sym

In [88]:  A_eval = lambdify(r, A(r,B))

In [89]:  A_eval(3)
Out[89]: 81.0

In [91]:  A_diff_eval = lambdify(r, sp.diff(A(r,B)))

In [92]:  A_diff_eval(3)
Out[92]: 108.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定义 sympy 函数导数的数值计算 的相关文章

随机推荐

  • 无法在项目中使用Syncfusion程序集

    我尝试使用此代码 将 Syncfusion Charts 包含到项目中 xmlns charting clr namespace Syncfusion UI Xaml Charts assembly Syncfusion SfChart U
  • 如何使用公式将超链接插入到 Google 表格中的单元格?

    我正在尝试以可以使用 MATCH 函数复制的方式插入到单元格的超链接 但是 我似乎无法找出一种在不使用 GID 的情况下链接 Google 表格中的单元格的方法 当我右键单击并 获取此单元格的链接 时 我最终得到一个带有 gid 19331
  • Azure BOT 框架,将 QnA Maker 与 LUIS 集成

    我正在寻找有关集成的文档QnA Maker API with LUIS in Azure BOT 框架 但经过大量研究 我找不到任何这样的文档 如果有人遇到相同的情况 请发布您的努力 我在这里使用 C 作为脚本 有几种通用方法可以做到这一点
  • jQuery onclick 不起作用

    我试图让 onclick 工作 但它没有 这是我的代码 HTML
  • bash 输出命令未找到

    我面临以下问题 我已经创建了提到的条件 但是当我选择 y 为 yes 时 一切正常 但是当我选择 n 为 not 时 我会得到烦人的错误输出 输出 您同意 y 或不同意 n n myscript n 未找到命令 myscript 是我的脚本
  • firebase 身份验证错误 用其他语言

    我目前正在 Swift 中开发一个应用程序 并且我已经链接了 firebase 以便用户注册和登录 该应用程序应该是西班牙语的 但我找不到将身份验证错误翻译为西班牙语的方法 firebase 控制台或 plist 中是否有启用其他语言的选项
  • 对解构函数参数感到困惑

    在下面的示例中 为什么 whois 函数可以访问 displayName2 和 name1 function whois displayName displayName2 fullName firstName name1 console l
  • MongoDB 中允许的嵌入文档的最大深度是多少? [复制]

    这个问题在这里已经有答案了 我想知道mongodb对mongo文档中嵌入文档的深度是否有限制 我不关心 mongo 文档的 16MB 限制 只关心随后允许的嵌入文档的数量 换句话说 在下面的示例中 子嵌入文档允许重复多少次 直到 mongo
  • 在 Objective C 程序(Xcode)中使用汇编代码

    有没有办法在 Objective C 程序中使用汇编代码 我正在为 OSX 开发一个应用程序 并且希望将汇编代码与 Objective C 代码一起使用 我在网上搜索发现this但我无法成功实施这些方法 任何帮助将不胜感激 是的当然 您可以
  • 电子邮件分区内容

    我正在尝试通过电子邮件发送 Div 的内容 我们有一个在线预订系统 用户选择他们想要的选项 然后提交表格 它会在下一页上显示他们的信息供他们打印 我还想要一份通过电子邮件发送给他们和我们的副本 我喜欢 Jonathon Sampson 使用
  • 为什么我的筛子在查找素数方面表现不佳?

    我编写了两个素数查找函数 但筛子的性能仅提高了 10 左右 我对简单版本使用了两种优化 不要检查偶数 仅检查平方根或j j lt i 相等的 以及对筛子版本的一项优化 仅检查平方根或i i lt n 相等的 我可以向筛子添加哪些优化 我的筛
  • 在 python 3 中从 SVD 重建矩阵

    你好 基本上我的问题是我有一个矩阵 我已经对其进行了 SVD 分解 并将其放入变量 u s 和 v 中 我对 s 矩阵进行了一些更改 使其成为对角线 并更改了一些号码 现在我基本上试图将它从 3 个矩阵重建为一个规则矩阵 然后返回到原始矩阵
  • 在 NetworkX 中显示节点位于精确 (x,y) 位置的图表。结果已旋转

    我在 networkX 上显示我的图表时遇到了麻烦 我从输入中给出的图片中提取一些角点 并将角点保存为 NetworkX 中图形的节点 该节点包含检索角点时的 x y 位置 然后我显示将节点放置在其确切 x y 位置的图表 但是 当我使用显
  • 如何在周视图和日视图中调整 jQuery Full Calendar 中事件的宽度和位置

    我在用全日历在我的 Rails 项目之一中 在日历上呈现事件 The jsfiddle显示场景 我可以调整宽度 但它不会修改同一行中彼此相邻的事件的位置 是否有回调或方法可以在修改宽度时调整事件的位置 看看这个小提琴 http jsfidd
  • 根据一列中的字符串值对 rhandsontable 中的整行进行着色

    我有一个 rhandsontable 如果最后一列 注释 文本中的单元格包含字符串 missed 我希望整个行为黄色 下面的代码突出显示任何具有 missed 值的单元格 但不是整行 此外 当最后一列中的单元格包含 丢失 时 我希望该行变成
  • 使用定界语法访问字符串内的静态变量的正确方法?

    假设我的类中有一个名为 static Var 的静态变量 我试图像这样访问它 该变量有一个成员aString其字符串值为 my static variable echo lt lt
  • 找到屏幕键盘的类名?

    我正在尝试使用这个代码示例从 C NET 3 5 Winforms 应用程序控制 Windows XP 屏幕键盘 OSK exe DllImport User32 dll public static extern Int32 SetFore
  • 升级 1.9 > 1.11 后 Django CSRF 失败

    我刚刚将正在开发的应用程序从 1 9 升级到 1 11 并且在所有表单帖子上不断出现错误 CSRF token missing or incorrect 所有 CSRF 代币在 1 9 中都运行良好 这是视图 def contact req
  • 关键点描述符匹配:如何计算每个模板的拟合优度?

    我不确定这是否属于 stackoverflow 或另一个 stackexchange 站点 非常欢迎在这里输入 我使用 python OpenCV 将目标图像的 BRISK 关键点描述符与三个不同的模板进行匹配 什么是一种实用的 稳健的 统
  • 定义 sympy 函数导数的数值计算

    如何在 sympy 中定义函数导数的数值计算 我有一些函数可以用函数的样条曲线来描述 并且它是使用 scipy interpolate 的导数 我想用这个函数操作一些表达式 然后用样条曲线计算表达式 我可以使用lambdaify 使 sym