Skip to content
Snippets Groups Projects
Commit a79879e6 authored by Damien Lahanque's avatar Damien Lahanque
Browse files

Commit du premier TP

parent 869b74c4
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 26 10:30:38 2024
@author: dlahanqu
"""
import autograd as ag
import autograd.numpy as np
import matplotlib.pyplot as plt
import scipy.linalg as nla
def f(x):
return 0.5*x**3 - 2*x**2 +x +7
Tx = np.array ([-1.1, 0.17, 1.22, -.5, 2.02, 1.81])
p = Tx.shape[0]
Ty_sur_la_courbe = np.array ([f(x) for x in Tx])
perturbations = 0.5*np.array ([-1.3, 2.7, -5, 0, 1.4, 6])
Ty_experimentaux = Ty_sur_la_courbe + perturbations
erreur_initiale = np.linalg.norm(Ty_sur_la_courbe-Ty_experimentaux, 2)
print(erreur_initiale)
plt.scatter(Tx, Ty_sur_la_courbe)
plt.xlim(-1.2,2.1)
plt.show()
A = np.array([[x**3,x**2,x,1] for x in Tx], dtype = np.float64)
Q1, R1 = nla.qr(A, mode ='economic')
Q1Tb = np.dot(np.transpose(Q1), Ty_experimentaux)
alpha, beta, gamma, mu = nla.solve_triangular(R1, Q1Tb, lower = False)
print(alpha,beta, gamma, mu)
def f_ajuster(x):
return alpha*x**3 + beta* x**2 + gamma *x + mu
erreur_mini = np.linalg.norm(Ty_experimentaux-[f_ajuster(x) for x in Tx], 2)
print(erreur_mini)
"""plt.scatter(Tx, [f_ajuster(x) for x in Tx])
xplot = np.linspace(-1.2, 2.1, 50)
yplot = np.array([f_ajuster(x) for x in xplot])
plt.plot(xplot, yplot)"""
plt.close()
# METHODE NEWTON A UNE VARIABLE
def f(x):
return x**3 - 2
def f_prime(x):
return 3*x**2
def un_suiv(x):
return x- f(x)/f_prime(x)
Tx=[]
un = 2
for i in range(10):
Tx.append(un)
print('u[%d] =' % i, un)
un = un_suiv(un)
print(un)
def f(x):
return alpha*x**3 + beta* x**2 + gamma *x + mu
xplot = np.linspace(-1,2, 50)
yplot = np.array([f(x) for x in xplot])
plt.scatter(Tx, [0 for x in Tx])
plt.plot(xplot, yplot)
def f(x):
return alpha*x**3 + beta* x**2 + gamma *x + mu
def f_prime(x):
return 3*alpha*x**2 + 2*beta*x +gamma
def f_seconde(x):
return 6*alpha*x + 2*beta
Tx=[]
u = 1
for i in range(10):
Tx.append(u)
print('u[%d] = ' %i, u)
u = u - f_prime(u)/f_seconde(u)
xplot = np.linspace(-1,2, 100)
yplot = np.array([f_prime(x) for x in xplot])
plt.scatter(Tx, [0 for x in Tx])
plt.plot(xplot, yplot)
plt.axhline()
plt.show()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment