import numpy as np
def poli(x):
return (x-1)**9
#polinomio esteso
def funx_esercizio1_scomp(x):
return x**9-9*x**8+36*x**7-84*x**6+126*x**5-126*x**4+84*x**3-36*x**2+9*x-1
def parabola(x):
return x**2
#punti equidistanti intervallo
def punti_equidistanti(a, b, n):
x = np.linspace(a, b, n+1)
return x
#nodi di chebyshev
def chebichev(a, b, n):
x = (a+b)/2 + (b-a)/2 * np.cos(((2*np.arange(0, n+1)+1)* np.pi)/(2*(n+1)))
h = np.flipud(x)
return h
#intervallo
a = 0
b = 2
n = 9
#calcolo i punti equidistanti
punti = punti_equidistanti(a, b, n)
punti_in_matrice = np.array(punti)
print(punti_in_matrice)
import matplotlib.pyplot as plt
#applicati alla funzione. Crea il grafico
print("\npunti equidistanti")
plt.plot(punti, poli(punti), 'o')
plt.show()
x = np.linspace(0, 2, 300)
#grafico
print("\ngrafico della funzione")
plt.plot(x, poli(x), '-')
plt.show()
#grafico della funzione e i nodi equidistanti
plt.plot(x, poli(x), '-', punti, poli(punti), 'o')
plt.show()
#chebyshev
chebi = chebichev(a, b, n)
plt.plot(chebi, poli(chebi), 'o')
plt.show()
#grafico e nodi dichebyshev
plt.plot(x, poli(x), '-', chebi, poli(chebi), 'o')
plt.show()
print("\ngrafico con punti equidistanti e nodi di chebyshev")
plt.plot(x, poli(x), '-', punti, poli(punti), 'o', chebi, poli(chebi), 'o')
plt.show()
print("\n---------------------------------------------------------\n")
#costruisco la base monomiale con i punti equidistanti
print("costruisco la base monomiale con i punti equidistanti")
print("Base Monomiale\n")
Abi = np.zeros([n+1 , n+1])
for j in range(0, n+1):
Abi[:, j] = punti**(j)
import scipy.linalg as la
#funzione calcolata nei punti equidistanti
#matrice e funzione calcolata nei punti equidistanti
print("\nprimo sistema lineare\n")
sLinearPE = la.solve(Abi, poli(punti))
A = np.array(sLinearPE)
print(A)
print("\nsecondo sistema lineare\n")
sLinearCH = la.solve(Abi, poli(chebi))
B = np.array(sLinearCH)
print(B)
print("\n-----------------------------------------------\n")
#esercizio
def esercizio2(x):
return ((x+1/2)**2)*np.emath.log(3/2+x)
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 200)
print("\ndisegno il grafico della funzione\n")
plt.plot(x, esercizio2(x), '-')
plt.show()
#newton
import scipy.optimize as zero
newt = zero.newton(esercizio2, x0=2, maxiter=500)
print("funzione applicata a Newton", newt)