equations.py

Created by olivier-guilland

Created on May 01, 2018

2.44 KB

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)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.