Programmation

Retrouver tous les sujets résolus.
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » mer. 6 janv. 2021 20:18

Bonjour,
c'est déjà une réponse à la question, cela reste partiel mais je ne sais pas si je ferais mieux.
Bonne continuation
Invité

Re: Programmation

Message par Invité » mer. 6 janv. 2021 20:19

ok merci bcp

pour la deuxième application, comment utiliser les programmes réalisés alors que l'on n'a pas de fonction f donnée ?
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » mer. 6 janv. 2021 21:18

Bonjour,
c'est une équation d'inconnue \(x=\frac{1}{\sqrt{f_D}}\) donc tu peux considérer sa solution comme le point fixe d'une certaine fonction \(f(x)=x\).
Bonne continuation
Invité

Re: Programmation

Message par Invité » jeu. 7 janv. 2021 03:59

ok donc je dois créer encore un nouveau programme qui détermine le point fixe d'une fonction ?
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » jeu. 7 janv. 2021 07:15

Bonjour,
tu n'as pas déjà construit des fonctions pour le point fixe et la suritération ?
Il faut se servir de ce que tu as déjà utilisé.
Bonne continuation
Invité

Re: Programmation

Message par Invité » jeu. 7 janv. 2021 15:17

Ah bah si bien sûr ! désolée il était tard.....

Mais on doit utiliser pointfixe, suriteration, ou les 2 ?

je suis perdue :(
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » jeu. 7 janv. 2021 18:21

Bonjour,
ce serait bien que tu lises les énoncés que l'on te donne : il est écrit pour chaque méthode (point fixe, suritération et Newton-Raphson donc il faut le faire pour les 3, avec une indication sur le nombre de points à tester et la tolérance.
Relis complètement l'énoncé et on verra après.
Bonne continuation
Invité

Re: Programmation

Message par Invité » jeu. 7 janv. 2021 19:20

Ok désolée j'ai relu tout.

Donc : on cherche la solution de l'équation : \(x=-2*log_{10}(\frac{1}{3,7}*\frac{\varepsilon }{d}+\frac{2,51}{Re*\frac{1}{x}})\)

Déjà il faut choisir une rugosité relative au hasard : faut-il faire ça avec Python ? Dans l'affirmative voici ce que je propose :

Code : Tout sélectionner

import random
rug=random.uniform(0.001, 0.01)
Est-ce correct ?

Ensuite, pour la méthode du point fixe :

Code : Tout sélectionner

import math
import random
from numpy.linalg import norm
from scipy.misc import derivative

rug=random.uniform(0.001, 0.01)

def pointfixe(f,x0,tol=10e-5,maxiter=100):
    e = 1
    itr = 0
    xp = []
    while (e > tol and itr < maxiter):
        x = f(x0)
        e = norm(x0-x)
        x0 = x
        xp.append(x0)
        itr = itr + 1
    return x,xp
    
Ainsi, si je prends Re=20000 et x0=3, je saisis :

Code : Tout sélectionner

print(rug,pointfixe(lambda x: -2*math.log10((1/3.7)*rug+2.51/(20000/x)),3,tol=1/1000,maxiter=100))
Mais quand j'exécute j'obtiens plein de chiffres, ça m'a l'air faux...

Que pensez-vous de ce que j'ai fait pour cette méthode du point fixe ?

Est-ce que tout ce que j'ai écrit est correct ?

merci bon soirée
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » jeu. 7 janv. 2021 21:19

Bonjour,
ce que tu as fait me semble correct.
Quand j'exécute :

Code : Tout sélectionner

print(rug,pointfixe(lambda x: -2*math.log10((1/3.7)*rug+2.51/(20000/x)),10000,tol=1/1000,maxiter=100))
J'obtiens :

Code : Tout sélectionner

0.0038821487638874726 (5.5180391025915, [-0.19801332280854475, 5.979078900830553, 5.489646198029839, 5.519810506251747, 5.517920844143893, 5.5180391025915])
Ce qui signifie que le coefficient pris au hasard valait 0.0038821487638874726 et que le point fixe vaut environ 5.5180391025915.
Le reste est la liste des approximations successives et je ne pense pas que cela soit utile.
Il faut aussi que tu prennes \(x_0\) entre 10000 et 10000000.
Bons calculs
Invité

Re: Programmation

Message par Invité » ven. 8 janv. 2021 04:20

merci de votre réponse !

Pourquoi dites-vous qu'il faut que je prenne x0 entre 10000 et 10000000 ?
C'est écrit où dans l'énoncé ?

Aussi, maitenant que faire pour utiliser suritération ?
J'ai juste à passer le x de l'autre côté du signe égal pour avoir 0=... ?

Il faudrait donc faire ça ou pas ? (voir en desssous)

Code : Tout sélectionner

import math
import random
from numpy.linalg import norm
from scipy.misc import derivative

rug=random.uniform(0.001, 0.01)
def suriteration(f,x0,tol=10e-5,maxiter=100):
    e = 1
    itr = 0
    xp = []
    while (e > tol and itr < maxiter):
        x = (f(x0) - x0*derivative(f,x0))/(1 - derivative(f,x0))
        e = norm(x0-x)
        x0 = x
        xp.append(x0)
        itr = itr + 1
    return x,xp
Et ensuite :

Code : Tout sélectionner

print(rug,pointfixe(lambda x: -2*math.log10((1/3.7)*rug+2.51/(20000/x)),10000,tol=1/1000,maxiter=100))
Est-ce bien correct ?
Que prendre pour x0 ?

merci bcp
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » ven. 8 janv. 2021 08:52

Bonjour,
je lis cela dans ton énoncé :
enonce.PNG
Par ailleurs, on te demande de calculer \(f_D\), or nous calculons le point fixe \(\frac{1}{\sqrt{f_D}}\) donc il faudrait sûrement calculer ensuite \(\frac{1}{x^2}\) pour obtenir la vraie valeur de \(f_D\).
Pour la suritération, c'est globalement la même chose que pour le point fixe.
Il faudrait ensuite que tes fonctions renvoient en plus le nombre de tour de boucles nécessaires (ce sera la longueur de la liste xp) afin de comparer l'efficacité des méthodes : c'est ce qui est mis dans l'énoncé en deuxième point.
Bonne programmation
Invité

Re: Programmation

Message par Invité » sam. 23 janv. 2021 15:20

bonjour il y a quelque chose que je comprends toujours pas :

pourquoi Re ce serait x0 ?
sos-math(21)
Messages : 10354
Enregistré le : lun. 30 août 2010 11:15

Re: Programmation

Message par sos-math(21) » sam. 23 janv. 2021 15:31

Bonjour,
qu'appelles-tu Re ?
Invité

Re: Programmation

Message par Invité » sam. 23 janv. 2021 15:35

le nombre de Reynolds de l'énoncé, vous le revoulez ou pas ?

je sais pas si le lien a expiré
Invité

Re: Programmation

Message par Invité » sam. 23 janv. 2021 15:37

ok voici le lien si besoin : https://www.cjoint.com/data/KAxoJ52vOxf ... ations.png

c'est le deuxi-me exo.
Répondre