BorrowTheProgrammer

sem4

Oct 25th, 2021 (edited)
920
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. a = 1e-2
  5. b = 5 * np.exp(1)
  6.  
  7.  
  8. def f_(x):
  9.     return np.log(x)
  10.  
  11.  
  12. def g(x, a, b):
  13.     return a0(a, b) + x * a1(a, b)
  14.  
  15.  
  16. def a0_opt(x):
  17.     n = len(x)
  18.     return (np.sum(x ** 2) * np.sum(f_(x)) - np.sum(x) * np.sum(x * f_(x))) / ((n * np.sum(x ** 2)) - np.sum(x) ** 2)
  19.  
  20.  
  21. def a1_opt(x):
  22.     n = len(x)
  23.     return (n * np.sum(x * f_(x)) - np.sum(x) * np.sum(f_(x))) / ((n * np.sum(x ** 2)) - np.sum(x) ** 2)
  24.  
  25.  
  26. def f(x):
  27.     return a0_opt(x) + a1_opt(x) * x
  28.  
  29.  
  30. def approximation(a, b):
  31.     f_xNodes = np.linspace(a, b, 1000)
  32.     f_yNodes = [f_(x) for x in f_xNodes]
  33.     plt.plot(f_xNodes, f_yNodes, color='red', label='f(x) = ln(x)')
  34.  
  35.     for n in range(3, 301):
  36.         xNodes = np.linspace(a, b, n)
  37.         yNodes = f(xNodes)
  38.         plt.plot(xNodes, yNodes)
  39.  
  40.     plt.legend()
  41.     plt.grid(True)
  42.     plt.show()
  43.  
  44.  
  45. def a0(a, b):
  46.     return (b * (np.log(b) - 1) - a * (np.log(a) - 1)) / (b - a)
  47.  
  48.  
  49. def a1(a, b):
  50.     return ((((b ** 2) * (2 * np.log(b) - 1))/4) - ((a ** 2) * (2 * np.log(a) - 1)/4)) / (b ** 2 / 2 - a ** 2 / 2)
  51.  
  52.  
  53. def app(a, b):
  54.     g_xNodes = np.linspace(a, b, 1000)
  55.     # ln(x)
  56.     f_yNodes = [f_(x) for x in g_xNodes]
  57.     # g(x)
  58.     g_yNodes = [g(x, a, b) for x in g_xNodes]
  59.     plt.plot(g_xNodes, f_yNodes, color='red', label='ln(x)')
  60.     plt.plot(g_xNodes, g_yNodes, color='blue', label='g(x)')
  61.     plt.legend()
  62.     plt.grid(True)
  63.     plt.show()
  64.  
  65.  
  66. if __name__ == '__main__':
  67.     # approximation(a, b)
  68.     print(a0(a, b))
  69.     print(a1(a, b))
  70.     app(a, b)
Advertisement
Add Comment
Please, Sign In to add comment