Sembra un bug. Una soluzione soluzione potrebbe essere quella di ottenere un'espressione simbolica del primo integrale (che sembra funzionare bene), quindi valutare per ogni set di parametri nella parte superiore e limite inferiore e calcolare la differenza:
import sympy as sp
x, w, phi = sp.symbols('x w phi')
# integrate function symbolically
func = sp.integrate(sp.sin(w * x + phi), x)
# define your parameters
para = [{'w': 0.01, 'phi': 0., 'lb': 0., 'ub': 10., 'res': 0.},
{'w': 0.01, 'phi': 0.13, 'lb': 0., 'ub': 10., 'res': 0.},
{'w': 0.01, 'phi': 0.3, 'lb': 0., 'ub': 10., 'res': 0.}]
# evaluate your function for all parameters using the function subs
for parai in para:
parai['res'] = func.subs({w: parai['w'], phi: parai['phi'], x: parai['ub']})
-func.subs({w: parai['w'], phi: parai['phi'], x: parai['lb']})
Dopo questo , para
sembra quindi come segue:
[{'lb': 0.0, 'phi': 0.0, 'res': 0.499583472197429, 'ub': 10.0, 'w': 0.01},
{'lb': 0.0, 'phi': 0.13, 'res': 1.78954987094131, 'ub': 10.0, 'w': 0.01},
{'lb': 0.0, 'phi': 0.3, 'res': 3.42754951227208, 'ub': 10.0, 'w': 0.01}]
che sembra dare risultati ragionevoli per l'integrazione, che sono memorizzati in res
Come hai definito 'x'? –
Posso riprodurlo per una varietà di 'w' e' phi', anche per gli integrali indefiniti. Ad esempio, 'integra (sin (0.7 * x + 0.1), x)' dà '0'. Sembra un bug per me! – TheBamf
Sembra avere un sacco di bug integrali. (https://github.com/sympy/sympy/labels/integrals) Ancora si integra correttamente se 'w' è impostato come' symbol' – Lol4t0