集成在包含一些参数的Python中

2024-01-03

我想对一个带有一个变量和几个符号形式的常量的方程进行积分,即,A,k,p我计划在整合后输入其值。仅包含一个变量而没有其他符号(包含某个常数值)的方程积分简单且直接,但对于存在符号的情况,积分使用quad from scipy.integrate给出一个错误。实际上quad()要求预先定义所有符号的值。我想要一个解决方案,我不必事先输入符号的值,而是需要输入并在之后替换它们。

为了让问题更清楚,

我想对波动方程进行积分

A * sin(kx + wt), 在哪里A是振幅,w是角速度,t是时间,x是位置(x只是变量)

quad()需要定义以下值A、k 和 p在集成之前但我想做的是首先集成A * sin(kx + wt)然后将值替换为A、k 和 p通过获取用户输入在结果中 。

请建议一种方法:)


我们可以用sympy用于积分函数而不为其符号赋值的库(具有某个常数实数作为其值)(A、k、p 和 s).

我的一个项目的示例代码:

from sympy import *
A = symbol('A')
k = symbol('k')
p = symbol('p')
x = symbol('x')
s = symbol('s')

f = integrate(exp(-1*s*x)*A*sin(k*x+p),(x,0,oo))

f = f.subs(A,50)

print str(f)

(x,0,oo) 表示对 wrt 进行积分x从零开始(0) to infinty(oo)

代码需要做的是,首先定义常数 A、k、p 和 s 以及变量 x as symbols然后使用integrate()来整合表达式。

integrate()返回积分表达式,现在,f.subs(symbol,value)用于替换符号的值。

in f.subs(symbol,value), f 是包含积分表达式的变量,symbol是之前定义的符号(如 A、k、p)并且value是该符号的常量值。

此方法还有助于获得定积分(来自x=a to x=b)的方程组。一个人必须做的是将 x 的值替换为 b并将其存储在某个变量中m using m = f.subs(x,b)然后使用n = f.subs(x,a) to 将 x 的值替换为 a并将其存储在某个变量中n。现在,减去 m 和 n 使用m - n得到表达式的定积分

这个问题还有一个可能的解决方案。

可以做的是定义一个接受用户输入的函数A、k 和 p然后使用quad()要对表达式进行积分,这将消除首先对表达式进行积分,然后使用用户输入来替换符号常量的值的需要

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

集成在包含一些参数的Python中 的相关文章

随机推荐