import math

def concentration(x, u):
  s0 = 350
  E = 5
  return s0 * math.exp(x * u / E)

def velocity(x, a):
  return abs(math.sin(a * x))

def taylorterm(n, x, x0, a):
  sign = (-1)**math.floor(0.5 * n)
  an = a**n
  dxn = (x - x0)**n
  facn = math.factorial(n)
  if n % 2 == 0:
    fx = math.sin(a * x0)
  else:
    fx = math.cos(a * x0)
  
  h = (sign * an * dxn / facn) * fx
  return h

a = 4.8
x = -1
x0 = 0

print("n  utaylor error s")

N = 20
velotaylor = 0
for n in range(N):
  u = velocity(x, a)
  velotaylor += taylorterm(n, x, x0, a)
  err = abs(u - abs(velotaylor))
  
  conc = concentration(x, velotaylor)
  
  str1 = f'{n:02d}'
  str2 = f'{velotaylor:0.5f}'
  str3 = f'{(err*100):0.4f}%'
  str4 = f'{conc:0.4f}'
  print(str1, str2, str3, str4)
 
by