Un ensemble de scripts pour résoudre des équations
from math import* from random import randint #equation de la forme ax^2+bx+c=0 def sd(a,b,c): delta = b*b-4*a*c if delta == 0: print("D=",delta," x_0=",round(-b/(2*a),3)) elif delta > 0: x_1 = round((-b-sqrt(delta))/(2*a),3) x_2 = round((-b+sqrt(delta))/(2*a),3) print("D=",delta," x_1=",x_1,"x_2=",x_2) else: print("D=",delta," Pas de solution") #equation de la forme ax+b=0 def pd(a,b): if a==0: print("Pas de solution, a=0 !") else: print("La solution est x=",round(-b/a,3)) #equation carree de la forme x^2=c def ec(c): if c<0: print("Pas de solution, c<0") else: print("Les solutions sont :") print(round(-sqrt(c),2),"et",round(sqrt(c),2)) #equation produit nul de la forme (ax+b)(cx+d)=0 def pn(a,b,c,d): if (a==0 and c==0): print("Pas de solution") elif a==0: pd(c,d) else: if c==0: pd(a,b) else: pd(a,b) print("ou") pd(c,d) #Image de x par la fonction e def FCT(e,x): a=e.format(x) return eval(a) #equation par dichotomie en application du TVI def Dicho(e,n,a,b): #Par application du theoreme des valeurs intermediaires #e designe l'expression de la fonction dont on recherche les zeros #n est le nombre de decimales souhaitees #a et b sont les bornes de l'intervalle sur lequel on applique le TVI while b-a>10**(-n): x=a A=FCT(e,x) #On utilise la fonction FCT qui renvoie l'image de x par la fonction e x=(a+b)/2 B=FCT(e,x) if A*B<=0: b=(a+b)/2 else: a=(a+b)/2 return round((a+b)/2,n),"est une solution de l equation",e,"=0" #Calcul du nombre derive def NbreDerive(e,a): #On utilise la definition du nombre derive de e en a h=.001 x=a A=FCT(e,x) x=a+h B=FCT(e,x) return round((B-A)/h,2) #On assimile le nombre derive de e en a a la valeur de (e(a+h)-e(a))/h def DichoTang(e,a): #On applique la methode de la tangente u=a #e est l'expression de la fonction, a est l'abscisse du point ou l'on recherche le nombre derive for i in range(10): #On suppose que 10 iterations suffisent pour obtenir une precision satisfaisante x=u F=FCT(e,x) G=NbreDerive(e,u) u=u-F/G return round(u,3)