Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Programmation » traitement de fonctions mathématiques. » 14-12-2010 16:18:05
Re!!!
Désolé de t'avoir fait attendre ,j'ai vu le prof concernant la procédure root :
donc il a en effet pu constater que il manquait une racine pour la fonction dont tu m'avais citée. Après il m'a dit en effet que ça pouvait passer ...
Il m'a éventuellement dit de faire par la méthode de la dérivée, ou mieux encore la descente du gradient ... je sais pas si ca te parle, moi si puisque je l'étudie en fonctions .
Il ma dit que si j'appliquais la méthode de la dérivée pour trouver un maximum et un minimum local , le pas dépendrait de l'allure de la courbe:
si la courbe admet une courbe strictement descendante alors il faudra adopté pour un pas très petit.
si la courbe décroit de manière progressive moins forte, il faudra adopter un pas plus grand.
Enfin voilà ... il a rien dit de particulier
ce n'est qu'une méthode parmi tant d'autres, mais celle-ci est mieux pour l'application de grosses fonctions.
je me suis permis de faire un programme concernant les procédures où on obtenait un résultat avec beaucoup de 0 après la virgule, ce qui me paraissait pas trop trop nécessaire, jai fait:
if type(s)!=type(""):
s = str(s)
if not '.' in s: return s
i = len(s)-1
while i>=0:
if s[i] != '0':
if s[i] == '.': i-=1
break
i-=1
return s[:i+1]
Nice job sinon , merci beaucoup , je ne pourrai pas m'accorder trop de temps à ça ce soir , j'ai énormément de travail à coté ...Mais je regarderai!
#2 Re : Programmation » traitement de fonctions mathématiques. » 09-12-2010 14:59:04
Re,
N'ayant pas passé beaucoup de temps dernièrement à chercher, je me suis permis d'ajouter ca:
on sait que f est une fonction continue sur [a,b] et donc on cherche à résoudre f(x)=0
on peut d'abord éliminer les cas ou f(a)=0 et f(b)=0
l'existence d'une racine alpha sur ]a,b[ est subordonné au fait que f(a) et f(b) sont de signe contraires, ce qui vaut à f(a)*(b)<0, et que f est continue sur [a,b]
si C est un réel de l'intervalle ]a,b[,la position de alpha par rapport à C serait alors:
f(a)*f(c)<=0 alors:
rechercher alpha sur ]a,c]
sinon:
rechercher alpha sur ]c,b[
et on recommence le processus jusqu'à obtenir la racine la plus proche tq f(x)=0 jusqu'à 10^-6 comme précision.
en conclusion, en chaque début d'itération , on peut affirmer que la solution appartient à l'intervalle [a,b] l'amplitude de l'intervalle étant divisé par 2 à chaque étape.
il faut juste juste faire en sorte que le produit f(a)*(b) soit négatif, donc choisir deux bornes de départ [a,b], sinon il n'y aura pas de racine .
jvais essayer de l'exprimer en programme
#3 Re : Programmation » traitement de fonctions mathématiques. » 08-12-2010 18:55:00
Re,
Ne penses-tu pas lui avoir beaucoup (trop) mâché la besogne ?
Dans tous les cas, la plupart des élèves de ma classe, sont dans la même galère, et font appel aux compétences des gens sur des forums pour les aider, Yoshi m'a certes beaucoup aidé. Mais ce n'est pas une matière pour laquelle j'y attache le plus d'importance dans mon cursus. J'évite simplement d'être pénalisé et de comprendre le mieux possible le monde de la programmation.
Tu peux t'arrêter là Yoshi , merci de m'avoir aider . Je vais me débrouiller pour le "def root"
@+
#4 Re : Programmation » traitement de fonctions mathématiques. » 08-12-2010 13:19:41
Impeccable merci.
@+
#5 Re : Programmation » traitement de fonctions mathématiques. » 07-12-2010 20:17:31
Re,
En effet, en enlevant le from_future_import division, cela ne pose aucun problème.
en ce qui concerne l'affichage de ce que je veux:
lorsque j'exécute le programme, je dois avoir:
OPMATH : perform miscellaneous processing on a mathematical function
=======================================================================
Note : enter an empty line to stop the interaction loop
<> Enter command : def x*x - 1
f(x) = x*x - 1
<> Enter command : val 2.0
f(2.0) = 3.0
<> Enter command : min -2.0 3.0
min in [-2.0,3.0] : f(0.0) = -1.0
<> Enter command : max -2.0 3.0
max in [-2.0,3.0] : f(3.0) = 8.0
<> Enter command : root -2.0 3.0
root in [-2.0,3.0] : f(-1.0) = f(1.0) = 0.0
<> Enter command : area 0.0 3.0
area under [0.0,3.0] : 6.0
<> Enter command : def cos(x)
f(x) = cos(x)
<> Enter command :
ce sont les premières lignes qui m'intéressent , j'ai appliqué un modèle comme nous faisait faire notre prof c'est-à-dire en début du programme j'ai mis:
# OPMATH
# ======================================================================
"""OPMATH : perform miscellaneous processing on a mathematical function"""
__author__ = "binome1 - binome2
__version__ = "1.0"
__date__ = "2011-01-04"
__usage__ = """
Note : enter an empty line to stop the interaction loop"""
# ======================================================================
etc ...
Mais ça ne m'affiche rien.
Sinon oui , j'ai compris tes explications merci.
#6 Re : Programmation » traitement de fonctions mathématiques. » 05-12-2010 21:34:36
Normalement avec la première partie que j'ai faite c'est-à-dire:
from math import cos,sin,tan,sqrt,exp,log,pi
f = None
while 1:
command = raw_input("Enter command: ")
if not command:
print "End of program."
break
if command.startswith('def '):
f = command.lstrip('def ')
print "f(x)=%s" % f
elif command.startswith('val '):
x = float(command.lstrip('val '))
try:
print "f(%f)=%f" % (x,eval(f))
except TypeError:
print "No function defined."
else:
print "Unknown command."
Qui devrait être en fait le programme de base puisqu'on définit une fonction pour toutes ces applications (area, min, max ...)
donc en gros , il faut que je refasse ce programme en deux parties dont la première
-def f(x)
-val (a,b) =>cherche les images de la fonction.
#7 Re : Programmation » traitement de fonctions mathématiques. » 05-12-2010 12:47:15
Oui c'est en cours...
j'ai juste besoin de temps pour comprendre ce que tu as fait.
Je remets au propre la première partie, (ie définir une fonction et calculer ses images).
#8 Re : Programmation » traitement de fonctions mathématiques. » 05-12-2010 11:23:26
Re Bonjour,
ça fonctionne très bien.
J"ai une question:
- Le résultat au final du programme donne quoi ,i.e
roots correspond aux racines cherchées sur l'intervalle xmin xmax de f'x)? Donc là tu as déterminé les racines?
dernière question:
return xmin,xmax
def area(f,a,b):
return aire
Je ne vois pas où cela intervient au final. Je vois très bien pour root mais ensuite xmin xmax et l'aire.
Merci.
#9 Re : Programmation » traitement de fonctions mathématiques. » 04-12-2010 13:19:19
pour le min et le max j'ai modifié un programme que j'ai trouvé sur internet, il ne correspond pas tout à fait à la mise en page de ce qu'on nous demande mais l'idée est là je pense:
def f(x):
return 3.0*x+x**2
import random
a=-5.0
b=5.0
N=50
minimum=f(a)
maximum=f(b)
for k in range(N):
x=random.uniform(a,b)
if f(x)>maximum:
maximum=f(x)
if f(x)<minimum:
minimum=f(x)
print maximum
print minimum
#10 Re : Programmation » traitement de fonctions mathématiques. » 04-12-2010 12:16:55
Re
Merci à toi Yoshi,
Je fais actuellement des recherches de mon côté.
Je suis parfaitement d'accord avec ton raisonnement et je comprends très bien ce que tu veux faire. Je ne sais juste pas l'écrire .
En gros tu détermines a et b qui sont les bornes de l'intervalle [a,b] et on cherche à calculer entre a et b toutes les images , donc après oui il faut déterminer un pas c'est sur et enfin une fois la liste déterminer ( les images) , on recherche le minimum et le maximum.
tabuler la fonction en gros.
Pas évident ...
#11 Re : Programmation » traitement de fonctions mathématiques. » 03-12-2010 20:44:59
Je pense que ce sont des fonctions usuelles, (partons sur ce cas )
Je pense qu'il faut simplement que ca fonctionne pour x*x-1 et cos(x)
ca sera déjà pas mal .
Je suis dans une ***** noire.
Pour cos (x) , il faut simplement que j'ajoute en début de script
from math import cos
Donc le problème est plus ou moins régler pour calculer les images d'une fonction.
#12 Re : Programmation » traitement de fonctions mathématiques. » 29-11-2010 22:42:41
Re bonjour,
Le programme est du python .
Je te remercie Yoshi, ce travail n'est qu'à rendre pour dans 3 semaines.
Le programme est du python .
Donc j'aurai le temps d'y travailler d'ici là , je pourrai éventuellement mettre ce que j'ai fait ici .
Si tu as le temps d'y regarder un peu plus afin de m'apporter davantage d'indices.
Tu m'auras été d'une grande aide jusqu'à la fin.
#13 Programmation » traitement de fonctions mathématiques. » 29-11-2010 18:11:30
- zarnac
- Réponses : 55
Bonjour,
Etudiant en maths-info, j'ai un rapport à rendre dans le cadre de la programmation. Ayant vraiment peu d'expérience dans ce domaine là j'aurai besoin de votre avis par rapport à ce que j'ai fait et si possible éventuellement une ouverture pour me permettre de débloquer mes problèmes et d'avancer.
Le sujet est le suivant :
Écrire un programme opmath qui permet de réaliser diverses opérations de traitement sur une fonction mathématique dont l'expression f(x) est entrée par l'utilisateur. Le principe de fonctionnement est similaire à celui du programme stat dans lequel l'opération de traitement était spécifiée sous la forme d'un mot-clé dans la commande saisie par l'utilisateur. Néanmoins, à la différence de stat, le programme doit pouvoir correctement gérer un nombre variable d'arguments pour les différentes opérations. Voici les opérations qui doivent être réalisables :
* def expression : définir expression comme la fonction mathématique à utiliser pour les opérations suivantes (cf. exemple ci-dessous). La même fonction mathématique sera utilisée tant que l'utilisateur n'aura pas défini une nouvelle fonction avec la commande def
* val x : évaluer la fonction courante f(x) pour la valeur x
* root xmin xmax : déterminer toutes les racines de la fonction courante f(x) sur l'intervalle [xmin, xmax]. Pour cela, le plus simple est d'utiliser la technique de la dichotomie jusqu'à obtenir une précision donnée (généralement 10e-6 est largement suffisant). Le programme doit être capable de gérer le cas des racines multiples sur l'intervalle.
* min xmin xmax : déterminer toutes les valeurs de x qui fournissent la valeur minimale de la fonction courante f(x) sur l'intervalle [xmin, xmax]
* max xmin xmax : déterminer toutes les valeurs de x qui fournissent la valeur maximale de la fonction courante f(x) sur l'intervalle [xmin, xmax]
* area xmin xmax : déterminer l'aire comprise sous la fonction courante f(x) pour l'intervalle [xmin, xmax]. Pour cela, le plus simple est d'utiliser la méthode des trapèzes avec un pas d'échantillonnage donné (généralement, utiliser 10e6 échantillons sur l'intervalle est largement suffisant)
Exemple d'exécution :
================================================================================
OPMATH : perform miscellaneous processing on a mathematical function
================================================================================
Note : enter an empty line to stop the interaction loop
<> Enter command : def x*x - 1
f(x) = x*x - 1
<> Enter command : val 2.0
f(2.0) = 3.0
<> Enter command : min -2.0 3.0
min in [-2.0,3.0] : f(0.0) = -1.0
<> Enter command : max -2.0 3.0
max in [-2.0,3.0] : f(3.0) = 8.0
<> Enter command : root -2.0 3.0
root in [-2.0,3.0] : f(-1.0) = f(1.0) = 0.0
<> Enter command : area 0.0 3.0
area under [0.0,3.0] : 6.0
<> Enter command : def cos(x)
f(x) = cos(x)
<> Enter command :
Mon programme est le suivant: ( sachant que je ne me suis arrêté que à "val x"):
f=none
while 1:
command = raw_input("Enter command: ")
if not command:
print "End of program."
break
if command.startswith('def '):
f = command.lstrip('def ')
print "f(x)=%s" % f
elif command.startswith('val '):
x = float(command.lstrip('val '))
try:
print "f(%f)=%f" % (x,eval(f))
except TypeError:
print "No function defined.
else:
print "Unknown command."
J'ai plusieurs problèmes:
-le programme fonctionne trés bien pour le premier exemple: x*x-1
- je ne sais pas comment faire pour implanter plusieurs fonctions , c'est à dire mettre une fonction au hasard et calculer ses images.
- la seconde chose , je ne sais pas comment calculer le min et le max sur un intervalle donné.
Merci de bien vouloir me répondre si possible, et de m'apporter une aide qui me permettrait d'avancer dans mon programme.
Cordialement
Pages : 1







