sympy 中的一般表达式替换

2023-11-23

我有两个单变量函数,f(x) and g(x),我想替换g(x) = y重写f(x)作为一些f2(y).

这是一个有效的简单示例:

In [240]: x = Symbol('x')

In [241]: y = Symbol('y')

In [242]: f = abs(x)**2 + 6*abs(x) + 5

In [243]: g = abs(x)

In [244]: f.subs({g: y})
Out[244]: y**2 + 6*y + 5

但现在,如果我尝试一个稍微复杂一点的例子,它就会失败:

In [245]: h = abs(x) + 1

In [246]: f.subs({h: y})
Out[246]: Abs(x)**2 + 6*Abs(x) + 5

有没有适用于这个问题的通用方法?


表达方式abs(x)**2 + 6*abs(x) + 5实际上并不包含abs(x) + 1任何地方,所以没有什么可以替代。

人们可以想象将其更改为abs(x)**2 + 5*(abs(x) + 1) + abs(x),替换结果为abs(x)**2 + 5*y + abs(x)。或者也许将其更改为abs(x)**2 + 6*(abs(x) + 1) - 1,结果是abs(x)**2 + 6*y - 1。还有其他选择。结果应该是什么?

此任务没有通用方法,因为它一开始就不是一个明确定义的任务。

相比之下,替代f.subs(abs(x), y-1)是一个明确的指令,用于将表达式树中所有出现的abs(x)替换为y-1。它返回6*y + (y - 1)**2 - 1.

上面的替换为abs(x) + 1 in abs(x)**2 + 6*abs(x) + 5也是一个明确的指令:查找表达式的确切出现次数abs(x) + 1在表达式的语法树中abs(x)**2 + 6*abs(x) + 5,并将这些子树替换为表达式的语法树abs(x) + 1。有一个关于尽管启发式.

旁:除了subsSymPy 有一个方法.replace它支持通配符,但我不希望它在这里有帮助。根据我的经验,过于急于替换:

>>> a = Wild('a')
>>> b = Wild('b')
>>> f.replace(a*(abs(x) + 1) + b, a*y + b)
5*y/(Abs(x) + 1) + 6*y*Abs(x*y)/(Abs(x) + 1)**2 + (Abs(x*y)/(Abs(x) + 1))**(2*y/(Abs(x) + 1))   

消除变量

SymPy 中没有“消除”。人们可以尝试模仿它solve通过引入另一个变量,例如,

fn = Symbol('fn')
solve([Eq(fn,  f), Eq(abs(x) + 1, y)], [fn, x])

它尝试求解“fn”和“x”,因此“fn”的解是没有 x 的表达式。如果这有效

事实上,它不能与abs(); SymPy 中未实现求解绝对值内的值。这是一个解决方法。

fn, ax = symbols('fn ax')
solve([Eq(fn,  f.subs(abs(x), ax)), Eq(ax + 1, y)], [fn, ax]) 

这输出[(y*(y + 4), y - 1)]其中第一项是您想要的;的解决方案fn.

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

sympy 中的一般表达式替换 的相关文章

  • SymPy 相当于 mathematica 中的 HoldForm

    在 Mathematica 中 可以阻止系统在输入表达式时简化表达式 语法如下 HoldForm x x 是否可以用 SymPy 做类似的事情 以下方法可以达到类似的效果 可能还有其他我不知道的可用 import sympy as sp x
  • 如何使用 SymPy codegen 生成 Fortran 子例程

    我想使用 SymPy codegen 实用程序生成 Fortran 子例程 我可以毫无问题地生成 Fortran 函数codegen f x y z f95 filename 但我想生成一个 Fortran 子例程 以便可以修改输入数组 我
  • 在 Sympy.mpmath.plot 中更改图形大小

    我希望这个问题不是太初级 我已经广泛搜索了解决方案 但尚未找到 我最近开始使用 Jupyter Notebook 和 Sympy 在微积分 II 课上做笔记和做作业 这真是一个巨大的好处 然而 我唯一的问题是我无法弄清楚如何配置绘图的大小
  • 没有名为 sympy 的模块

    你好 我正在 Edx 课程中使用 python 学习线性代数 http nbviewer ipython org github ULAFF notebooks tree may 14 2014 http nbviewer ipython o
  • 使用 SymPy 求解方程组

    我正在尝试使用 SymPy 0 7 1 求解一组方程 from sympy import equations Eq S vf S vi a t Eq S d S vi t 1 2 a t 2 Eq S a S 10 Eq S d S 60
  • 解决 Sympy 中的不平等问题

    我试图解决 sympy 中的以下不等式 10000 x 1 lt 0 所以我发出了命令 solve poly inequality Poly 10000 x 1 lt 但是 我得到了 Interval open oo 1 10000 然而
  • SymPy 虚数

    我正在编写一些 SymPy 代码来处理带有虚数的符号表达式 首先 我想让它把 x 和 y 作为实数并找到 x iy 的解 所以我可以按如下方式执行此操作 x y sympy symbols x y real True print sympy
  • 是否有一个完整的示例来将 sympy 中的数学表达式写入 Microsoft Word 文档?

    这可能是一个愚蠢的问题 但我很绝望 我是一名数学老师 我尝试生成数学测试 我为此尝试了 Python 并完成了一些工作 然而 我不是一个专业的程序员 所以我对 MathMl prettyprint 之类的东西迷失了方向 有谁可以为我提供一个
  • sympy CSE:避免 pow/powf

    当 Sympy 生成 C 代码时 有没有办法对表达式中的 pow 或 powf 出现强制执行 CSE 优化 例如 这段代码片段 c s symbols c s myexpr c 6 1800 c 5 100 0 00833333333333
  • Python 求解一个变量的方程

    我正在尝试使用 SymPy 求解 python 中的方程 我有一个生成的方程 类似于function y 8 0 y 3 0 我将其与 SymPy 一起使用来创建一个如下所示的新方程 eq sympy Eq function 2 哪个输出y
  • C++:提取分析数学表达式的符号/变量

    我有用户可以提供的表达式 例如 a sin w t a b c x 2 y 2 2 我愿意just获取那里的变量列表 我不需要做任何替换 所以 对于第一个公式 它是 a w t 对于第二个 a b c 对于最后一个 x y 该表达式主要是为
  • SymPy 中的非顺序替换

    我正在尝试使用 SymPy 1 同时替换表达式中的多个术语 我尝试使用字典作为参数的 subs 函数 2 但发现它是按顺序替换的 In a subs a b b c Out c 问题是第一次替换产生的术语可以被第二次替换所替换 但它不应该
  • sympy 中的lambdify 不止一个模块

    我试图让lambdaify理解使用modules关键字参数期望不止一种类型的输入 根据lambdify的源码 http docs sympy org dev modules sympy utilities lambdify html htt
  • 有没有矢量化的方法来计算 sympy 中的梯度?

    如何在 sympy 中计算多元函数的 符号 梯度 显然我可以单独计算每个变量的导数 但是是否有矢量化运算可以做到这一点 例如 m sympy Matrix sympy symbols a b c d 现在对于 i 0 3 我可以这样做 sy
  • 将 SymPy 矩阵转换为 numpy 数组/矩阵的最佳方法是什么

    我不确定我一直在使用的方法是否sympy转换一个MutableDenseMatrix to a numpy array or numpy matrix目前是一个很好的做法 我有一个符号矩阵 例如 g sympy Matrix x 2 x 3
  • 在 SymPy 中,为什么我的解决方案(nonlinsolve)返回错误的答案?

    我有一个由 3 个方程组成的系统 我想找到以下交线或零斜线的解dx dy from sympy import x y z symbols x y z dx x x 3 3 z y dy y 2 0 1 z dz 0 xy nullcline
  • 禁用 sympy 中的自动简化

    我想禁用 sympy 中的自动简化 例如求解方程x y x我想要得到x x代替1 import sympy from sympy abc import x y z expr x y x sympy solve expr y gt 1 i w
  • SymPy 无法对产品进行羔羊化

    我正在使用 SymPy 1 0 和 Python 2 7 我想计算前 100 个整数的总和 此代码运行成功 import sympy as sy from sympy tensor import IndexedBase Idx import
  • sympy 任意函数范围

    我想定义任意函数f 我知道 f 总是返回一个正数 我希望 sympy 在运行简化时能够使用这些知识 特别是简化文档中提到的三个幂规则 有没有办法做到这一点 我正在寻找类似下面的东西 f Function f positive True g
  • Sympy:从表达式获取函数

    要从 sympy 表达式中获取所有变量 可以调用 free symbols在表达上 我想找回全部功能用在表达式中 例如 从y in from sympy import f Function f g Function g x Symbol x

随机推荐

  • templateUrl 不适合我

    我按照 angular io 入门项目使用种子结构 到目前为止一切正常 现在我想更改顶部组件以从单独的文件中查看视图 但我遇到了麻烦 工作代码是 import Component View from angular2 core Compon
  • 不带括号的构造函数调用[重复]

    这个问题在这里已经有答案了 有什么区别吗 var obj1 new Constructor and var obj2 new Constructor 鉴于Constructor是构造函数吗 根据MDN docs new foo 相当于 ne
  • 是否可以确定哪个 Fortran 编译器生成了“.mod”文件?

    假设我的机器上已经安装了一个软件包 我想弄清楚是否需要重新生成模块包含文件 mod 使它们与我的其余编译兼容 有什么办法可以做到这一点吗 我在某些时候遇到了类似的问题 涉及库和模块文件 但没有源 因为在某些情况下 获得正确的编译器比获得重新
  • 使用AppDelegate共享数据

    我找到了一些资料来解释如何使用 AppDelegate 在 iOS 应用程序中的对象之间共享数据 我已经很轻松地实现了它 并且对于我的情况来说这看起来是一个很好的方法 思考什么could使用 AppDelegate 完成 我想知道应该在哪里
  • 在史莱姆中加载新的依赖项?

    我正在使用 emacs 和 swank clojure 我如何解决以下情况 我已向 project clj 添加了新的依赖项 我在 shell 中运行 lein deps 来获取新的 dep 我有一个打开的现有史莱姆会话 并且想要使用新部门
  • Windows PowerShell 在哪里设置 $profile?

    我想移动我的默认 My Documents WindowsPowerShell 文件夹 但是 当我尝试这样做时 PowerShell 当然找不到 profile 是否有一个文件或其他内容可以编辑以将 PowerShell 指向不同的启动文件
  • 当 ajax 调用更改其值时,AngularJS 中的 ng-repeat 列表不会更新

    我完全糊涂了 当 ajax 调用更改其值时 为什么我的 ng repeat 不刷新 我在这里看到了很多问答 但没有一个谈到ajax调用 HTML div class row div class col xs 4 col sm 4 col m
  • 从泛型转换为特定子类

    我有一堂这样的课 public class MyClass
  • 闪亮的数据表:在新窗口中弹出有关所选行的数据

    我有一个闪亮的数据表 当用户选择某一行时 我想在新窗口中根据所选行显示一些其他数据 我尝试使用shinyBS包 但如果没有操作按钮我就无法使用它 而且我不想包含操作按钮 我希望在选择一行时显示弹出窗口 有任何想法吗 mymtcars hea
  • Android 资源 txt 文件的路径

    我正在做 FileReader fin new FileReader file android asset myFile txt 在 Android 项目和许多变体中 在运行时我得到一个文件未找到异常 该文件在资产文件夹中存在且正确 因此我
  • 在 Chrome 中,为什么 SVGforeignObjects 不缩放相对定位的内容?

    我在 SVG 中使用相对定位的 HTML 元素foreignObject 然而 在 Chrome 中 相对定位的内容并不尊重scale or viewBox 因此 它的尺寸不合适 这是我在 jsFiddle 上遇到的问题的示例 所有三个文本
  • 如何在 Django 中编辑和删除数据?

    我正在使用 django 1 0 并且我已经使用 Django 书中的示例创建了我的模型 我能够执行添加数据的基本功能 现在我需要一种检索该数据的方法 将其加载到表单中 change form 或其他东西 EDIT它并将其保存回数据库 其次
  • 出现错误 EBUSY:资源繁忙或锁定

    尝试运行 Nodejs 应用程序来测试 Raspberry 3 B Gpio Onoff 模块 但当我尝试运行该应用程序时出现此错误 fs js 114 throw err Error EBUSY resource busy or lock
  • 如何对通过 MS JDBC 驱动程序运行的 MS SQL Server 查询强制执行查询超时?

    我们怎样才能让 MS JDBC 驱动程序在 n 秒后抛出超时错误 背景 我们有一个应用程序 默认情况下使用 Microsoft JDBC 驱动程序 版本 4 0 来查询 SQL Server 2014 大多数时候 查询需要 10 20 秒才
  • 错误:未找到genymotion虚拟化引擎[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我不断收到以下错误 未找到 genymotion 虚拟化引擎 无法加载 VirtualBox 引擎 请帮我解决这个错误 我已经尝试过所有选项 1 重新安装genymotion和vir
  • AWS Elastic Beanstalk 将 PHP 与私有 Composer 存储库结合使用

    在 PHP 环境中使用 Amazon AWS Elastic Beanstalk 进行部署时 如何利用私有 Composer 存储库 具体使用GitHub 问答风格 答案如下 我们需要为通过 AWS 的 Elastic Beanstalk
  • 是否可以在 WPF 应用程序中使用 UWP API?

    Windows 10 通用平台的新通知 API 就是一个例子 我可以在 WPF 应用程序中使用这组 API 吗 如果可以的话有什么限制吗 与此相关的文档链接将不胜感激 可以在 WPF 应用程序中使用 UWP API 但是 并非所有 UWP
  • 使用 CSS 自定义单选按钮

    I am trying to create the custom radio button as shown in the picture below 我编写了代码并能够实现正确的样式 但无法使标签出现在单选按钮之前 lengend act
  • 如何将 System.Drawing.Image 转换为字节数组?

    您好 我正在尝试将图像转换为字节数组 以将其作为 byte 传递到 sql 中 我尝试使用图像转换器 但它总是失败 Dim converter As New ImageConverter nRow Signature converter C
  • sympy 中的一般表达式替换

    我有两个单变量函数 f x and g x 我想替换g x y重写f x 作为一些f2 y 这是一个有效的简单示例 In 240 x Symbol x In 241 y Symbol y In 242 f abs x 2 6 abs x 5