Advertisement
Pug_coder

Untitled

May 30th, 2023
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. import math
  2. import numpy as np
  3.  
  4.  
  5. def fun(x):
  6. return math.exp(x)
  7.  
  8.  
  9. def find_x(a, b, c, d):
  10. n = len(b)
  11.  
  12. alphas = [0] * n
  13. betas = [0] * n
  14.  
  15. for i in range(n-1):
  16. alphas[i+1] = -c[i]/(a[i]*alphas[i]+b[i])
  17. betas[i+1] = (d[i]-a[i]*betas[i])/(a[i]*alphas[i]+b[i])
  18.  
  19. x = [0] * n
  20. x[-1] = (d[-1] - a[-1] * betas[-1])/(a[-1] * alphas[-1] + b[-1])
  21. for i in range(n-1, 0, -1):
  22. x[i - 1] = x[i]*alphas[i]+betas[i]
  23. return (x)
  24.  
  25.  
  26. if __name__ == "__main__":
  27. p = 1
  28. q = -1
  29. n = 10
  30. a = fun(0)
  31. b = fun(1)
  32. h = 1/n
  33. x = [0] * (n + 1)
  34. for i in range(n+1):
  35. x[i] = round(i * h, 2)
  36. a_matrix = [1 - h/2 * p] * (n - 2)
  37. b_matrix = [h**2 * q - 2] * (n - 1)
  38. c_matrix = [1 + h/2 * p] * (n - 2)
  39. d_matrix = [0] * (n - 1)
  40. for i in range(n-1):
  41. d_matrix[i] = h**2 * fun(x[i+1])
  42. d_matrix[0] -= a_matrix[0] * a
  43. d_matrix[-1] -= c_matrix[0] * b
  44. y = find_x(a_matrix, b_matrix, c_matrix, d_matrix)
  45. y = np.concatenate(([a], y[:], [b]))
  46. e = [0] * (n + 1)
  47. for i in range(n + 1):
  48. e[i] = abs(fun(x[i]) - y[i])
  49. print('xi: ', x[i], '|', 'counted_y[i]: ', y[i], '|', 'yi: ', fun(x[i]), '|', 'error: ', e[i])
  50. print('max_error', max(e))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement