62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
from sys import argv
|
|
from math import pi
|
|
from math import e
|
|
|
|
function_formulas = [
|
|
# 1. Square wave
|
|
{
|
|
'an': lambda n: 3 if n == 0 else 0,
|
|
'bn': lambda n: 0 if n % 2 == 0 else 2 / (pi * n),
|
|
'cn': lambda n: 3 if n == 0 else (0 if n % 2 == 0 else 1j / (pi * n))
|
|
},
|
|
# 2. Even func
|
|
{
|
|
'an': lambda n: 0 if n == 0 else (0 if n % 2 == 0 else 8 / (pi ** 2 * n ** 2)),
|
|
'bn': lambda n: 0,
|
|
'cn': lambda n: 0 if n == 0 else (0 if n % 2 == 0 else 4 / (pi ** 2 * n ** 2))
|
|
},
|
|
# 3. Odd func
|
|
{
|
|
'an': lambda n: 0,
|
|
'bn': lambda n: 0 if n == 0 else 2 * (-1) ** (n + 1) / (pi * n),
|
|
'cn': lambda n: 0 if n == 0 else (-1) ** n / (pi * n) if n > 0 else (-1) ** (n + 1) / (pi * n)
|
|
},
|
|
# 4. Not odd and not even func
|
|
{
|
|
'an': lambda n: -2/3 if n == 0 else (8 / (pi ** 2 * n ** 2) if n % 2 == 0 else 0),
|
|
'bn': lambda n: 0 if n % 2 == 0 else -48 / (pi ** 3 * n ** 3),
|
|
'cn': lambda n: -1/3 if n == 0 else (
|
|
(4 / (pi ** 2 * n ** 2) if n % 2 == 0 else 24j / (pi ** 3 * n ** 3))
|
|
if n > 0 else
|
|
(4 / (pi ** 2 * n ** 2) if n % 2 == 0 else -24j / (pi ** 3 * n ** 3))
|
|
)
|
|
},
|
|
# 5. Complex func
|
|
{
|
|
'an': lambda n: 0,
|
|
'bn': lambda n: 0,
|
|
'cn': lambda n: 0 if n == 0 else (
|
|
complex(-pi * n / 4, -1 - pi * n / 4) * e ** (1j * pi * n / 4)
|
|
+ (1j + 1) * e ** (-1j * pi * n / 4)
|
|
+ (1j - 1) * e ** (-3j * pi * n / 4)
|
|
+ (-1j - 1) * e ** (-5j * pi * n / 4)
|
|
+ complex(1 + pi * n / 4, pi * n / 4) * e ** (-7j * pi * n / 4)
|
|
) / (pi ** 2 * n ** 2 / 2)
|
|
}
|
|
]
|
|
|
|
index, nn = int(argv[1]), int(argv[2])
|
|
|
|
formulas = function_formulas[index - 1]
|
|
coefficients = {'an': [], 'bn': [], 'cn': []}
|
|
|
|
for coefficient in coefficients:
|
|
for n in range(0, nn + 1):
|
|
calc = formulas[coefficient](n)
|
|
coefficients[coefficient].append(f'{n}: {calc:.5g}')
|
|
if coefficient == 'cn' and n != 0:
|
|
calc = formulas[coefficient](-n)
|
|
coefficients[coefficient].insert(0, f'{-n}: {calc:.5g}')
|
|
|
|
for coefficient in coefficients:
|
|
print(f'{coefficient} values: ', coefficients[coefficient])
|