Programmation
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
Bonjour,
c'est déjà une réponse à la question, cela reste partiel mais je ne sais pas si je ferais mieux.
Bonne continuation
c'est déjà une réponse à la question, cela reste partiel mais je ne sais pas si je ferais mieux.
Bonne continuation
Re: Programmation
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 ?
pour la deuxième application, comment utiliser les programmes réalisés alors que l'on n'a pas de fonction f donnée ?
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
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
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
Re: Programmation
ok donc je dois créer encore un nouveau programme qui détermine le point fixe d'une fonction ?
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
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
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
Re: Programmation
Ah bah si bien sûr ! désolée il était tard.....
Mais on doit utiliser pointfixe, suriteration, ou les 2 ?
je suis perdue :(
Mais on doit utiliser pointfixe, suriteration, ou les 2 ?
je suis perdue :(
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
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
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
Re: Programmation
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 :
Est-ce correct ?
Ensuite, pour la méthode du point fixe :
Ainsi, si je prends Re=20000 et x0=3, je saisis :
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
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)
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
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))
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
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
Bonjour,
ce que tu as fait me semble correct.
Quand j'exécute :
J'obtiens :
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
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))
Code : Tout sélectionner
0.0038821487638874726 (5.5180391025915, [-0.19801332280854475, 5.979078900830553, 5.489646198029839, 5.519810506251747, 5.517920844143893, 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
Re: Programmation
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)
Et ensuite :
Est-ce bien correct ?
Que prendre pour x0 ?
merci bcp
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
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))
Que prendre pour x0 ?
merci bcp
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
Bonjour,
je lis cela dans ton énoncé : 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
je lis cela dans ton énoncé : 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
Re: Programmation
bonjour il y a quelque chose que je comprends toujours pas :
pourquoi Re ce serait x0 ?
pourquoi Re ce serait x0 ?
-
- Messages : 10354
- Enregistré le : lun. 30 août 2010 11:15
Re: Programmation
Bonjour,
qu'appelles-tu Re ?
qu'appelles-tu Re ?
Re: Programmation
le nombre de Reynolds de l'énoncé, vous le revoulez ou pas ?
je sais pas si le lien a expiré
je sais pas si le lien a expiré
Re: Programmation
ok voici le lien si besoin : https://www.cjoint.com/data/KAxoJ52vOxf ... ations.png
c'est le deuxi-me exo.
c'est le deuxi-me exo.