Bienvenue, vous n'êtes pas connecté. ( Se connecter - S'enregistrer )
Espace culture
Espace forum
Faire un don
Hypo-thèses > Forum > Parlons sciences ! > Informatique > (re) création de fonctions mathématiques en C
| Guillawme | #16 16/06/2007 - 20h44 |
|
Modérateur Hors ligne
|
mais c'est peut-être pas grave de pas pouvoir envoyer des nombres très grands vu que ces fonctions sont périodiques
par exemple tu pourrais traiter un nombre trop grand pour être un float en le divisant pour qu'il donne un paramètre plus petit (qui du coup est un float) mais qui donne toujours le même sinus et le même cosinus (un qui soit égal au nombre trop grand à k.2π près, c'est ça ?) je ne sais pas si c'est faisable ni si c'est facile, c'est juste une suggestion
La science nous donne un moyen de parler de ce que nous ignorons. Cuénot (1866 - 1951)
|
| General Vans | #17 17/06/2007 - 00h44 |
|
Codeur Hors ligne Courriel
|
Un float est suffisamment grand tu ne devrais pas avoir trop de problème avec.
De toute façon la fonction est faite ainsi ![]() Hum... maths ou chimie... mon cœur balance ! |
| 11TLP | #18 17/06/2007 - 20h38 |
|
|
j'ai fait les tests avec des nombres situés entre 0 et 2π mais, je vais essayer avec float
edit : ça ne marche plus, j'ai dû modifier presque tout mon code à cause du changement double -> float mais ça m'affiche toujours une console vide
Ce message a été édité par 11TLP le 18/06/2007 à 20h11.
|
| Kabefis | #19 26/06/2007 - 19h16 |
|
|
Ah tu utilise les fonction de math.h ! Je croyez que tu t'étais lancé dans une reconstruction de cette fonction.
(si c'est toujours d'actualité :p) .Tu définis une variable de type float(ou double) genre monResultat ![]() tu fait monResultat=sin(monAngle); monAngle pouvant être un int,float etc, la fonction convertira. .Et pour l'afficher, surement là ou tu avait ton problème: printf("\nSin(%.2f) = %.2f\n",monAngle,monResultat); %.2f >> le f correspond à un nombre à virgule (float) si tu met %i ca t'affiche un entier.Le ".2" sert à seulement mêtre 2 chiffres après la virgule, peut aussi faire du %3i l'affiche de 2 sera 002, ou encore %4.3f l'affichage de 20.7 sera 0020.700, je sais plus si en faisant %.f ca gère tout seul les zeros inutiles. Si c'est toujours pas ca .. bah :/ j'peux pas aider plus sans le source ni rapport de quelquonques erreurs/warnings. A+
Erreurs sur erreurs la vie évolue, l'humanité est une des plus grandes sources d'erreurs.
|
| 11TLP | #20 27/06/2007 - 00h10 |
|
|
j'essayais de recréer et je mettais %f dans le printf et après ça m'affichait des zéros après la virgule
pour le code source j'ai la flemme mais dès que possible je vous en ferai part ( il faut que j'allume l'ordinateur, qu'il ne plante pas, que j'exécute Dev-C++, que ça ne plante pas, que j'ouvre mon projet, que je recopie le code sur ma clé USB sans faire planter mon ordinateur ( ou sans qu'il écrive incorrectement les données ) et que je revienne vous le montrer )
Ce message a été édité par 11TLP le 27/06/2007 à 00h14.
|
| Kabefis | #21 30/06/2007 - 15h01 |
|
|
Avec un ordinateur comme ca c'est peut etre normal qu'il veuille pas te donner le résultat d'un sinus XD
Erreurs sur erreurs la vie évolue, l'humanité est une des plus grandes sources d'erreurs.
|
| General Vans | #22 30/06/2007 - 15h39 |
|
Codeur Hors ligne Courriel
|
Comment un ordinateur retourne t'il un sinus en fait ? Quel est le contenu de la fonction ?
![]() Hum... maths ou chimie... mon cœur balance ! |
| Kabefis | #23 02/07/2007 - 22h01 |
|
|
Approximation, non?
Y a une formule avec des factoriels, c'est une somme de termes, et avec une bonne dizaine de terme ca doit être déjà pas mal. (j'dit ca j'dit rien )
Erreurs sur erreurs la vie évolue, l'humanité est une des plus grandes sources d'erreurs.
|
| 11TLP | #24 03/07/2007 - 14h14 |
|
|
c'est avec la formule sur le sujet sur le sinus\cosinus sur le forum de mathématiques, je fais une boucle sur n au moins 60 fois mais je ne peux aller que jusqu'à 24 si j'utilise des float
|
| 11TLP | #25 21/07/2007 - 18h11 |
|
|
bon alors voilà le code que vous attendez tous !!!
il est composé de 5 fichiers, au cas où je réutilise mes fonctions ailleurs : main.c #include <stdio.h>sinus.h #ifndef SINUSsinus.c math2.h #ifndef MATHDEUXmath2.c il doit y avoir des erreurs étant donné que j'ai modifié des trucs à cause du changement double->float |
| Kabefis | #26 22/07/2007 - 18h32 |
|
|
J'ai pas réussi à resoudre ce problème ..
Mais quand tu écrit tes fonctions dans le C il faut réécrire quel type elles renvoient, il le manque justement dans les 4 fonctions. Sous VisualStudio ou CodeBlock j'ai pas non plus les mêmes problèmes :/ CodeBlocks changent les variables nombres et exposants, ce qui fait une boucle presque infinie avec un exposant d'environ 2 millions (comme mes 2Go de ram :p) VisualStudio arrive à calculer mais donne des résultats finaux bizare, pour x allant de 0 à 100 ca donne des résultats partant de 0, puis ca descend dans les négatifs pour retombé à 0 pour x=18,145 et après ca monte en fléche .. j'ai p'tet touché au formules sans faire exprès .. ![]() J'ai cherché, j'ai pas trouvé :/
Erreurs sur erreurs la vie évolue, l'humanité est une des plus grandes sources d'erreurs.
|
| 11TLP | #27 23/07/2007 - 19h18 |
|
|
pour les formules, il faut mettre toutes les parenthèses sinon ça fausse les calculs
|
| azerty | #28 19/09/2007 - 21h07 |
|
Hors ligne
|
toute les fonctions que vous venez de présenter marche surement très mais personnellement je préfère plutôt une approche récursive
pour le pgcd il existe deux algorithme de notre cher Euclide 1) Soit a et b deux entiers, si r est le reste de la division euclidienne de a par b, pgcd(a, b) = pgcd(b, r). int pgcd(int a, int b)2) pgcd(a, b) = pgcd(a - b, b) (avec a >= b) ( la version de Général Vans ) int pgcd(int a, int b)Cependant la première fonction est plus rapide Ensuite le ppcm on peut faire bcp plus simple int ppcm(int a, int b)Bon la factorielle c'est un classique de la récursivité int factorielle(int n) {Et puis pour la puissance une simple petite adaptation permet de la faire en récursive |
| next | #29 24/01/2008 - 14h17 |
|
Hors ligne
|
Voici le code d'exponentiation modulaire que je viens de faire, il est utile pour décrypter un code RSA. Résout : c et b^e congrut à m.
int exp_mod(int e, int m, int b) |
Hypo-thèses > Forum > Parlons sciences ! > Informatique > (re) création de fonctions mathématiques en C
> Informations du forum
1 personne(s) présente(s) sur ce forum au cours des dernières 20 minutes (0 membre(s) et 1 invité(s)).


Accueil
Livre d'or
L'équipe
S'inscrire
Connexion
Forum













Tout le contenu du site - sauf avis contraire - est placé sous licence Creative Commons.