Python3 - Sympy:展开三角函数的乘积

2024-01-04

我找不到让 SymPy 扩展产品的方法,例如cos(a)*cos(b)转化为角度和的三角函数之和。

from sympy import *
init_printing()
wrf,wlo,t = symbols('\omega_RF \omega_LO t')
c = cos(wrf*t)*cos(wlo*t)
expand_trig(c)

保持产品完好无损。simplify(c) or trigsimp(c)也不给出任何替代形式。

我想拥有cos(a)*cos(b)扩大到1/2*(cos(a+b) + cos(a-b))...有什么提示吗?


根据文档字符串,help(sympy.fu),

fu将尝试最小化目标函数measure。默认情况下这个 首先最小化三角项的数量,然后最小化总三角项的数量 运营。

但是,如果您通过

measure=lambda x: -x.count_ops()

then fu 会尝试maximize操作数 https://groups.google.com/forum/#!topic/sympy/wTXXjQg9Zyk.


import sympy as sy
sy.init_printing()
wrf, wlo, t = sy.symbols('\omega_RF \omega_LO t')
c = sy.cos(wrf*t)*sy.cos(wlo*t)
print(sy.fu(c, measure=lambda x: -x.count_ops()))

yields

cos(\omega_LO*t - \omega_RF*t)/2 + cos(\omega_LO*t + \omega_RF*t)/2

或者,你可以直接调用Fu变换TR8 https://stackoverflow.com/a/25395386/190597:

from sympy.simplify.fu import TR8
print(TR8(c))

产生相同的结果。文档字符串,help(sys.modules['sympy.simplify.fu'])解释了可用的转换。这是摘要;检查文档字符串以获取更多信息:

TR0 - simplify expression
TR1 - sec-csc to cos-sin
TR2 - tan-cot to sin-cos ratio
TR2i - sin-cos ratio to tan
TR3 - angle canonicalization
TR4 - functions at special angles
TR5 - powers of sin to powers of cos
TR6 - powers of cos to powers of sin
TR7 - reduce cos power (increase angle)
TR8 - expand products of sin-cos to sums
TR9 - contract sums of sin-cos to products
TR10 - separate sin-cos arguments
TR10i - collect sin-cos arguments
TR11 - reduce double angles
TR12 - separate tan arguments
TR12i - collect tan arguments
TR13 - expand product of tan-cot
TRmorrie - prod(cos(x*2**i), (i, 0, k - 1)) -> sin(2**k*x)/(2**k*sin(x))
TR14 - factored powers of sin or cos to cos or sin power
TR15 - negative powers of sin to cot power
TR16 - negative powers of cos to tan power
TR22 - tan-cot powers to negative powers of sec-csc functions
TR111 - negative sin-cos-tan powers to csc-sec-cot
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3 - Sympy:展开三角函数的乘积 的相关文章

随机推荐

  • 如果异步引发,事件会起作用吗?

    我有一个类的以下骨架 正如您在 TODO 注释中所看到的 我将在这里实现 AsyncEnumerator 构造 此方法将获取请求并将数据传递给另一个方法进行处理 根据流程 我想调用事件 SendMilestoneReached 或 Send
  • 哪个目录是 `brew cask install` 使用的真实位置?

    哪个目录是真实位置brew cask install uses 我想找到应用程序的真实位置 而不是符号链接 Application 您可以在可用的应用程序中找到每个应用程序的自定义命令Casks https github com caskr
  • 嵌入允许添加和删除的 Symfony2 表单集合

    在 Symfony2 中 如果我嵌入表单集合 http symfony com doc current cookbook form form collections html指向Doctrine中的多对一关系并允许添加和删除 如果我从头删除
  • 将系统属性从 Gradle 传递到 Spring Boot

    我想将某些安全敏感属性传递到我的 Spring Boot 应用程序中 我在开发过程中通过命令行和 或外部设置的系统属性通过 Gradle 启动该应用程序 我无法将这些写入 build gradle 脚本或属性文件之类的内容 因为它们将被提交
  • 快速写出png

    Summary 我想尽快编写一个 png 文件 而不用担心压缩 也就是说 我不太关心文件大小 但我确实关心写入尽可能快地发生 动机 我正在客户端使用 OpenLayers 并在后端使用 python C 制作一个基于 Web 的地图应用程序
  • 运算符重载?

    我让自己成为了一个 RSS 阅读器 它可以让我了解最新情况并通知我新节目 或者至少这就是背后的想法 我创建了一个结构体 SeasonEpisode 其中包含两个整数 季节 剧集 和一个覆盖 ToString 函数 我将最新观看的内容存储在本
  • 从文本文件中删除行的有效方法

    我需要从文本文件中删除特定行 做到这一点最有效的方法是什么 文件可能很大 超过百万条记录 更新 下面是我当前正在使用的代码 但我不确定它是否好 internal void DeleteMarkedEntries string tempPat
  • 无法在 Django 中创建自定义 __str__ 调用父级的 __str__

    尽管我知道如何制作它 并且已经搜索了比较我的代码的示例 但我不明白为什么我不能调用具有其自身的模型 str 在其父级内部调用 str 我得到一个RuntimeError maximum recursion depth exceeded in
  • 如何将列值转换为列?

    我已经浏览了 Stackoverflow 在线图书和 google 上的大量 SQL Pivot 示例 但我仍然无法弄清楚如何执行 我称之为 简单的 Pivot 操作 实施例1 https stackoverflow com questio
  • 如何轻松检查 .NET 中的文件访问是否被拒绝?

    基本上 我想在实际尝试打开文件之前检查我是否有权打开该文件 除非必须 否则我不想使用 try catch 进行此检查 是否有我可以事先检查的文件访问属性 过去我已经做过无数次这样的事了 但几乎每次我的尝试都是错误的 文件权限 甚至文件存在
  • 重复播放后媒体播放器错误 (-19,0)

    我有一款游戏 当关卡完成时会播放声音 一开始一切正常 但在重复 10 或 20 次级别后 logcat 突然报告 MediaPlayer 错误 19 0 和 或 MediaPlayer 在状态 0 下启动 并且不再发出声音 我最初有 mp3
  • 如何使用 PIL 优化调色板图像大小?

    我的目标是在黑色图像上绘制一些多边形 以使所得图像的总尺寸尽可能小 所以我在维基上读了一篇关于索引颜色的文章 link https en wikipedia org wiki Indexed color 并且这对我来说似乎是一个不错的选择
  • MSSQL/dblib 的 PDO 日期时间格式

    MSSQL 2005 数据库具有排序规则 German Phonebook BIN 但这并不重要 与数据库的连接是通过 PDO 和 FreeTDS 完成的 在 Debian Squeeze 下使用 PHP 当我尝试从表中选择日期时间值时 我
  • 如何注释掉 XML 元素(使用 minidom DOM 实现)

    我想注释掉 xml 文件中的特定 XML 元素 我可以删除该元素 但我更愿意将其注释掉 以备以后需要 我目前使用的删除元素的代码如下所示 from xml dom import minidom doc minidom parse myXml
  • Django 编辑用户配置文件

    我正在尝试在前面创建一个 编辑个人资料 表单 发生的情况是我的表单 我不是 100 确定 尝试创建一个用户 而不是查找当前用户并更新他的个人资料 所以我认为这就是问题所在 在这里检查了很多问题 但没有一个足够清楚 我尝试编辑的字段是电子邮件
  • 此处不允许使用列 Oracle SQL 处理多个列

    我正在尝试将记录插入表中 但当我插入此记录时 我的 项目评级列 下例中的 PG 上出现 此处不允许列 错误 INSERT INTO ITEM VALUES item s1 NEXTVAL 786936161878 SELECT common
  • Rails 反跳延迟作业后台任务?删除重复项

    去抖是推迟函数 作业执行直到经过一定时间之后的常用方法 用例 来自多个用户的活跃聊天对话 他们不应该收到每条键入消息的电子邮件通知 但很可能在几分钟的静默后 如果消息未读 用户应该会看到一条通知 延迟作业 没有解决方案 有相关问题 http
  • 互斥查询

    Question 您如何将产生互斥结果的 IF ELSE 分配到产生相同结果的查询中 Use Case 作为主体 当前登录的用户 我可以获得组织中的用户列表 如果我被分配到任何部门 那么用户列表是分配到相同部门的较小的集合 Example
  • OpenCV C++ 转换为 Java 以解决形状检测问题

    我们对 openCV Java 开发有点陌生 遇到了一个问题 我们正在努力转型这段代码 https github com bsdnoobz opencv code blob master shape detect cpp到 Android
  • Python3 - Sympy:展开三角函数的乘积

    我找不到让 SymPy 扩展产品的方法 例如cos a cos b 转化为角度和的三角函数之和 from sympy import init printing wrf wlo t symbols omega RF omega LO t c