下面这个代码求不定积分为什么结果不正确?
时间: 2020-08-20来源:V2EX
前景提要
以下用 sympy 库求定积分和不定积分我刚发现这个论坛没法发图片也没法注释代码。被积分函数是 sqrt ( 1+cos ( x )) 积分上下限是 pi/2 , 0 为了避免改动,#注释行都没删掉。各位老师可以自行删除或忽略。 先求定积分,代码: import sympy as sym from sympy import sin,cos,sec,exp,asin,sqrt,pi #必须将特殊的函数和常数导入程序才能运行 x = sym.symbols('x') #定义符号变量 y = sym.symbols('y') # z = sym.symbols('z') a = sym.Integral(x**2*cos(x**3)) #求不定积分 #b = sym.Integral(exp(2*y)*(sec(exp(2*y))**2)) #c = sym.Integral((3*x**2+7)/(x**3+7*x-9)) d = sym.Integral(sqrt(1-cos(2*x)),(x,0,pi/2)) #a.doit() #b.doit() #显示不定积分表达式 #c.doit() #sqrt(4).evalf() d.doit() -------------------------------------------------------输出结果-------------------------------------------------------------------- Integral(sqrt(-cos(2*x) + 1), (x, 0, pi/2)) 显示数值结果 import sympy as sym from sympy import sin,cos,sec,exp,asin,sqrt,pi #必须将特殊的函数和常数导入程序才能运行 x = sym.symbols('x') #定义符号变量 y = sym.symbols('y') # z = sym.symbols('z') a = sym.Integral(x**2*cos(x**3)) #求不定积分 #b = sym.Integral(exp(2*y)*(sec(exp(2*y))**2)) #c = sym.Integral((3*x**2+7)/(x**3+7*x-9)) d = sym.Integral(sqrt(1-cos(2*x)),(x,0,pi/2)) #a.doit() #b.doit() #显示不定积分表达式 #c.doit() #sqrt(4).evalf() d.evalf() -------------------------------------------------------输出结果-------------------------------------------------------------------- 1.41421356237310 我查过.doit 代表输出解析解。那么为什么第一次用.doit 没有输出 sqrt(2)呢? 求不定积分 import sympy as sym from sympy import sin,cos,sec,exp,asin,sqrt,pi #必须将特殊的函数和常数导入程序才能运行 x = sym.symbols('x') #定义符号变量 y = sym.symbols('y') # z = sym.symbols('z') a = sym.Integral(x**2*cos(x**3)) #求不定积分 #b = sym.Integral(exp(2*y)*(sec(exp(2*y))**2)) #c = sym.Integral((3*x**2+7)/(x**3+7*x-9)) d = sym.Integral(sqrt(1-cos(2*x))) #a.doit() #b.doit() #显示不定积分表达式 #c.doit() #sqrt(4).evalf() d.doit() -------------------------------------------------------输出结果-------------------------------------------------------------------- Integral(sqrt(-cos(2*x) + 1), x) 难道 d 这个不定积分。没有解析解?怎么给这么一个结果?

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行