import numpy as np
import scipy.linalg
import scipy.spatial
import scipy.optimize
import random
import math
#exercise one
m = 20
n = 10
A = np.random.randint(0, 10, (m, n))
b = np.random.randint(0, 10, (m, 1))
x, resid, rnk, s = scipy.linalg.lstsq(A, b)
print('A =', A)
print('b =', b)
print('x =', x)
print('Norm of residual =', resid/n)
import numpy as np
import scipy.linalg
import scipy.spatial
import scipy.optimize
import random
import math
#exercise two
def f(x):
return (math.sin(x-2)**2*math.e**(-x*x))
answer = scipy.optimize.fmin(lambda x:-f(x), 1, full_output=True, disp = 0)
print('maximun:',-answer[1])
import numpy as np
import scipy.linalg
import scipy.spatial
import scipy.optimize
import random
import math
#exercise three
m = 20
n = 10
X = np.random.randint(0, 10, (n, m))
Y = scipy.spatial.distance.pdist(X)
print(Y)