быстрая помощь в настройке суммирования уравнений для l oop? - PullRequest
1 голос
/ 05 мая 2020

Я просто хочу превратить предпоследнюю строку (где в комментарии n = 3) в суммирование для l oop, где я могу просто ввести значение n вместо ручного суммирования, как я делаю ниже :

import sympy as sp

#input*************************************
T = 2
n = sp.Symbol('n',integer=True,positive=True)
t = sp.symbols('t')
F = 1
#***************************************

wT = 2*sp.pi/T #frequency

A0=sp.integrate(F,t) #integrate wrt t
A0=A0.subs(t,1)-A0.subs(t,0) #integrating from t=0 to t=T. MUST USE BOTH SUBS TO GET PROPER ANSWER
A0 = (2/T)*A0 #make sure to mutiply constants AFTER subs
print('A0:', A0)

F_An=F*sp.cos(n*wT*t)
An = sp.integrate(F_An,t)
An=An.subs(t,1)-An.subs(t,0)
An = (2/T)*An
print('An:', An)

F_Bn=F*sp.sin(n*wT*t)
Bn = sp.integrate(F_Bn,t)
Bn=Bn.subs(t,1)-Bn.subs(t,0)
Bn = (2/T)*Bn
print('Bn:', Bn)

#to get numerical answer @ n=1, do for A0, An, Bn
#Bn=Bn.subs(n,1)
#F without A0 for summing purposes:


F= An*sp.cos(n*wT*t)+Bn*sp.sin(n*wT*t)

F=F.subs(n,1)+F.subs(n,2)+F.subs(n,3) #for n=3
F=F+A0/2
F

1 Ответ

1 голос
/ 05 мая 2020

Вы можете подставить определенный верхний предел в Sum, и когда вы doit получите желаемое выражение:

>>> from sympy import Sum
>>> from sympy.abc import i, n
>>> Sum(cos(i),(i,1,n)).subs(n,3).doit()
cos(3) + cos(2) + cos(1)
...