Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- a = 1e-2
- b = 5 * np.exp(1)
- def f_(x):
- return np.log(x)
- def g(x, a, b):
- return a0(a, b) + x * a1(a, b)
- def a0_opt(x):
- n = len(x)
- 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)
- def a1_opt(x):
- n = len(x)
- return (n * np.sum(x * f_(x)) - np.sum(x) * np.sum(f_(x))) / ((n * np.sum(x ** 2)) - np.sum(x) ** 2)
- def f(x):
- return a0_opt(x) + a1_opt(x) * x
- def approximation(a, b):
- f_xNodes = np.linspace(a, b, 1000)
- f_yNodes = [f_(x) for x in f_xNodes]
- plt.plot(f_xNodes, f_yNodes, color='red', label='f(x) = ln(x)')
- for n in range(3, 301):
- xNodes = np.linspace(a, b, n)
- yNodes = f(xNodes)
- plt.plot(xNodes, yNodes)
- plt.legend()
- plt.grid(True)
- plt.show()
- def a0(a, b):
- return (b * (np.log(b) - 1) - a * (np.log(a) - 1)) / (b - a)
- def a1(a, b):
- return ((((b ** 2) * (2 * np.log(b) - 1))/4) - ((a ** 2) * (2 * np.log(a) - 1)/4)) / (b ** 2 / 2 - a ** 2 / 2)
- def app(a, b):
- g_xNodes = np.linspace(a, b, 1000)
- # ln(x)
- f_yNodes = [f_(x) for x in g_xNodes]
- # g(x)
- g_yNodes = [g(x, a, b) for x in g_xNodes]
- plt.plot(g_xNodes, f_yNodes, color='red', label='ln(x)')
- plt.plot(g_xNodes, g_yNodes, color='blue', label='g(x)')
- plt.legend()
- plt.grid(True)
- plt.show()
- if __name__ == '__main__':
- # approximation(a, b)
- print(a0(a, b))
- print(a1(a, b))
- app(a, b)
Advertisement
Add Comment
Please, Sign In to add comment