gpt4 book ai didi

sympy - 我如何说服 Sympy 对 1961 年 MIT 本科微积分问题进行 SAINT 的简化?

转载 作者:行者123 更新时间:2023-12-04 08:17:24 25 4
gpt4 key购买 nike

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

MIT problem 3c


Sympy 简化
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
方程式显示
init_printing display

最佳答案

主要部分是分解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))
输出:
enter image description here

关于sympy - 我如何说服 Sympy 对 1961 年 MIT 本科微积分问题进行 SAINT 的简化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65650999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com