Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- n = 50
- N = 1000
- m = 15
- x = np.linspace(-3, 3, n)
- X = np.linspace(-3, 3, N)
- pix = np.pi * x
- y = np.sin(pix) / (pix) + 0.1 * x + 0.05 * np.random.randn(n)
- p = np.zeros([m * 2 + 1, n])
- P = np.zeros([m * 2 + 1, N])
- p[0] = np.ones(n)
- P[0] = np.ones(N)
- for j in range(1, m + 1):
- p[2 * j - 1] = np.sin(j / 2 * x)
- p[2 * j + 0] = np.cos(j / 2 * x)
- P[2 * j - 1] = np.sin(j / 2 * X)
- P[2 * j + 0] = np.cos(j / 2 * X)
- p = p.T
- P = P.T
- t1 = np.dot(np.linalg.pinv(p), y)
- F1 = np.dot(P, t1)
- rmtx = np.diag(np.hstack((np.ones(11), np.zeros(20))))
- t2 = np.dot(np.linalg.pinv(p.dot(rmtx)), y)
- F2 = np.dot(P, t2)
- plt.plot(x, y, 'bo')
- plt.plot(X, F1, 'g-')
- plt.plot(X, F2, 'r-.')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement