- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
James R Slagle 麻省理工学院论文的程序解决大一微积分中符号积分问题的启发式程序,符号自动积分器(SAINT)因是第一个实用的“专家系统”符号积分器而闻名(ish),并且能够解决麻省理工学院本科微积分测试中的所有问题(迂腐地,漏掉了几个,但它本可以解决它们;在此处详细说明 in this excellent YouTube video )
他的论文可在此处免费获得:https://dspace.mit.edu/handle/1721.1/11997
我很高兴在这方面尝试 Sympy,因为它看起来平易近人,而且是一个相当困难的简化,我碰巧已经有了答案……但是,Sympy 并没有像 1961 年的程序那样将积分简化为如此好的(主观?)简化(尽管它确实返回了等效的结果!)
疑问与猜测
我怎样才能说服 Sympy 简化为相同的方程?
为什么没有得到同样的、看似简单的结果?
也许它选择第一个可能的结果,或者 tan**3
是注定要更糟吗?如果是这样,为什么不简化 SAINT 的输出?)
也许当它找到一些匹配的 Fu-routine 时,它会引出一个不同的分支。 ?
考试题 3c
from sympy import *
x = symbols("x", real=True) # should this be assumed?
expr_inner = (x**4) / ((1 - x**2)**Rational(5,2))
expr_integral = integrate((expr_inner), x)
print(simplify(expr_integral))
(x**4*asin(x) + 4*x**3*sqrt(1 - x**2)/3 - 2*x**2*asin(x) - x*sqrt(1 - x**2) + asin(x))/(x**4 - 2*x**2 + 1)
平等的证明
from sympy import *
x = symbols("x", real=True) # should this be assumed?
expr_saint = asin(x) + Rational(1,3)*tan(asin(x))**3 - tan(asin(x))
expr_sympy = (x**4*asin(x) + 4*x**3*sqrt(1 - x**2)/3 - 2*x**2*asin(x) - x*sqrt(1 - x**2) + asin(x))/(x**4 - 2*x**2 + 1)
expr_saint.equals(expr_sympy) # alternatively simplify(expr_saint - expr_sympy) https://stackoverflow.com/a/37115190/
True
方程式显示
最佳答案
主要部分是分解asin(x)
并将其从分数中分离出来。在此之后,sympy 可以证明这两个表达式是相等的:
from sympy import *
from IPython.display import Math, display
x = symbols("x", real=True) # should this be assumed?
expr_saint = asin(x) + Rational(1,3)*tan(asin(x))**3 - tan(asin(x))
expr_sympy = (x**4*asin(x) + 4*x**3*sqrt(1 - x**2)/3 - 2*x**2*asin(x) - x*sqrt(1 - x**2) + asin(x))/(x**4 - 2*x**2 + 1)
r=[]
r.append(latex(expr_sympy))
expr_sympy = expr_sympy.collect(asin(x))
r.append(latex(expr_sympy))
expr_sympy = apart(expr_sympy,asin(x))
r.append(latex(expr_sympy))
display(Math(" \\Longrightarrow ".join(r)))
display(simplify(expr_saint - expr_sympy))
输出:
关于sympy - 我如何说服 Sympy 对 1961 年 MIT 本科微积分问题进行 SAINT 的简化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65650999/
我正在使用 Perltidy将我的一些旧 Perl 文件重新格式化为更接近我当前偏好的样式。我遇到了这个片段的问题: Fcntl::S_IRUSR & $mode Perltidy 坚持删除 & 后面
我正在使用 Meld 来发现两组相似的 Fortran 代码之间的差异。在许多情况下,这两个文件之间的唯一区别是自动版本号。这条线使它看起来比应该有更多的差异,并且它变得困惑。 有问题的自动版本号行类
我正在尝试让 TextToSpeech 在 Android 模拟器中朗读字母数字引用。如果我有一个字符串,例如“31NAA123”,那么我会在所有字符之间插入空格,然后将其提交给 speak 方法。它
我使用的是 Python 2.7(无法升级)。我正在尝试在我的类中存储一个函数,它可以在 ctor 中被不同的函数覆盖。该函数是一个普通的静态函数(不是成员或类方法),所以我不想在调用它时将类或对象作
我遇到了一个有趣的案例,TypeScript 编译器(使用 strictNullChecks === true)不允许我将数组过滤掉的空值传递给函数需要一个数字数组。 这是显示问题的代码示例: cla
我不认为这在目前是可能的,或者它是否是一个好主意,但这是我刚才正在考虑的事情。我使用 MSTest 对我的 C# 项目进行单元测试。在我的一项测试中,我执行以下操作: MyClass instance
我正在尝试构建一个使用 boost_serialization 和 boost_iostreams 的简单可执行文件。 #include #include #include #include
我喜欢使用 git blame 作为辅助文档形式。检查提交的原因、提交时间和提交人非常有用。 但有时特定线路的历史记录会丢失。可能发生这种情况的一些情况: 进行了更改,但随后又恢复了。 有人重新缩进文
我很难让 Agda 相信递归调用函数中的参数在结构上小于传入参数。 我已经定义了对、对列表(将有限函数表示为输入/输出对的“集合”)以及这些列表的并集,如下所示: data _x_ {l : Leve
所以我有一个相对直接的服务器堆栈,利用 SSL 卸载和 HTTP 负载平衡器。设置看起来像这样: (client) -> (SSL offload - stud) -> (balancer - hap
IT 经理不允许将 SQL Server 与正在开发的 ASP.NET 网站一起使用。当前被替换的设置是一个连接到 Microsoft Access 数据库的 php 站点。关于为什么应该使用 SQL
我正在编写一个 View ,该 View 使用带有非 UNIQUE 的列对其进行索引。但是,在我看来,我相信该列将只包含唯一值(由于 WHERE 子句中强加的条件)。 当有人根据该列查询 View (
我必须做一个 30 分钟的演示,说明为什么我们的 IT 部门应该继续使用 Ruby on Rails,而不是使用 Kohana 框架(用于 PHP)。 我从过去的 Ruby on Rails 应用程序
我希望使用 localstack模拟 elasticsearch/kinesis/dynamo。我的弹性代码需要 HTTPS 端点时遇到了麻烦。 通过 java 11/IntelliJ 测试 在所有情
我如何说服 GCC 展开一个迭代次数已知但很大的循环? 我正在编译 -O3 . 当然,实际的代码要复杂得多,但这里有一个具有相同行为的简化示例: int const constants[] = { 1
如何说服 Firefox(3.0.1,如果重要)在 HTTPS 请求中发送 If-Modified-Since header ?如果请求使用纯 HTTP 并且我的服务器尽职尽责地尊重它,它会发送 he
我是一名优秀的程序员,十分优秀!