vbnino
Messages postés218Date d'inscriptionjeudi 13 juillet 2006StatutMembreDernière intervention11 juillet 2010
-
6 juin 2007 à 17:37
cs_rt15 -
11 juin 2007 à 08:49
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 juin 2007 à 18:07
ça existe déjà dans la représentation en flottant:
(NaN = Not a Number)signe 0, exposant maxi, mantisse = 0 ==> NaN + infinisigne 1, exposant maxi, mantisse = 0 ==> NaN - infini
quant à l'utilisation c'est une autre histoire:
NaN alertes (Signalling
NaN)
provoque
l'arrêt immédiate du programme avec le déclenchement
d'une interruption
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 6 juin 2007 à 18:09
Salut,
Je dirais que l'infini est un très grand nombre avant d'être l'infini.
Redargde déjà le plus grand nombre que tu peux programmer avec un PC.
Maintenant on peut philosopher pendant longtemps sur la chose, big200148 te donne un apperçu de l'abstrait.
Si tu considère que l'espace dans lequel on vit est infini, pose toi la question de savoir comment tu va rejoindre la fin.
Autre façon de voir les choses : l'info est un raisonnement logique (il faut imaginer des 1 et 0 de partout dans ton code ou encore des interrupteurs). L'infini n'est pas logique et est né avec l'imagination de l'être humain.
Après ce passage philosophique humoristique, on peut revenir à ton problème : accroches-toi
Un limite est une vue de l'esprit aussi. Donc l'homme à associé à cette vue d'esprit des règles :
1- L'infini est grand donc : (valeur finie)/infini=0 (en gros tu peux imaginer n'importe quelle grand nombre que tu veux, il en existera toujours un qui rend ta pensée infime )
2- L'infini est grand donc : infini/(valeur finie)=infini
3- L'infini est grand donc : infini^n /(infini^(n-1))=infini ou encore infini^(n-1) /(infini^n)
4- Problème : si l'infini venait à exister comment faire pour comparer à l'infini avec l'infini : d'où la naissance des formes indéterminées (l'esprit de l'homme est assez tordu). Mais l'homme est toujours fort : il existe des façons de contouner les formes indéterminées. Pour cela, je te conseil de te replonger dans test cours de math, je n'ai plus tout en tête.
En conclusion pour coder un être en développement, il suffit de donner les règles. Des outils le font déjà comme MAPLE. Cette tache est assez difficile car il ne faut oublier aucune condition.
Sur ce, bon courage et à bientôt pour d'autre avanture. Peut-etre que tu auras besoin d'aide pour les complexes
Fiko ;-)
La reponse vous convient pensez > Accepter < <hr />
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 6 juin 2007 à 18:10
C'est faux Big200148, le standard IEEE754 prévoit l'encodage de valeurs exceptionnelles telles que l'infini. Ainsi pour un Double représenté par un exposant de 11 bits et une mantisse de 52 bits (et un bit de signe), lorsque l'exposant vaut 1024 on a :
Si la mantisse vaut 0 -> Le double représente +- l'infini (selon le bit de signe.) ou un dépassement de capacité, ce qui est par abus de langage plus ou moins la même chose...
Si au moins un des bits de la mantisse vaut 1 -> Le double ne représente pas un nombre (dit NaN : Not a Number). Souvent produit par une division par 0 ou simplement un résultat indéterminé.
Et pour la représentation en math, il s'agit d'un 8 couché
En .Net, qui respecte ces normes, on notterait d = Double.PositiveInfinity, mais plusieurs choses m'ont fais pensé que VB6 était à d'autres normes (en tout cas j'en suis sûr pour VBA qui a deux décimales significatives de moins que VBNet pour les double). Et je ne connais pas cette norme vu que je n'ai plus VB6 depuis .Net, jmfmarques ou un autre qui passe par ici saura surement te répondre...
Mais moi, je ne sais pas vraiment t'aider en fin de compte...
<hr size="2" width="100%" />Julien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 6 juin 2007 à 19:12
Salut les copains,
D'abord bravo à fiko81 d'avoir su, en prétendant en parler, en parler réellement...
L'infini ne saurait en effet être une valeur et on ne peut même pas diviser l'infini par l'infini pour avoir 1 !
Tenter de jouer avec ? d'accord, mais dans ce cas à la manière de Devos (avec son rien qui n'était pas unrien puisque l'on peut toujours trouver des "moins que rien")
Alors ?
1) 1 / infini n'est pas 0, non ...mais une valeur infiniment petite et très voisine de 0
2) on admet que l'infini est ce l'on pourrait imaginer comme résultat de la dicision de n'importe quel nombre par 0
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 6 juin 2007 à 20:28
Je ne suis pas d'accord avec toi jmfmarques, autant la valeur 0 est-elle définie comme nulle pur et dure, autant l'infini est défini tel que n'importe quel réel / infini = 0... Enfin on n'est pas là pour parler de math...
Moi je pense que le problème est que VB6 ne traite pas le calcul infini contrairement à .Net. Par exemple parce qu'une division par 0 en VB6 lèvera une exception tandis qu'elle attribuera la valeur NaN ou Infinity en .Net...
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 6 juin 2007 à 20:44
Je vais faire croire que je suis dure de tête mais pour reprendre ce que tu dis Julien237 "VB6 ne traite pas le calcul infini contrairement à .Net"
En fait, c'est plutot que .Net à intégré le fait qu'une division par 0 peut conduire non plus à une erreur mais à une solution que peut attendre l'utilisateur.
Fiko ;-)
La reponse vous convient pensez > Accepter < <hr />
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 6 juin 2007 à 22:44
A discussion stérile : réponse brutale :
V = nombre infini
W = nombre également infini
Z = encire un nombre également infini
équation dont on cherche les solutions dans R :
Y = Vx² + Wx + Z
Et maintenant qy'un malin (à l'aide du langage qu'il choisira) veuille bien me dire à quelles solutions il arrive (voire tout simplement déterminer s'il existe une solution dans R, à savoir si W²-4VZ est positif ou négatif)
Non; mais...
On redescend sur terre, oui ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 juin 2007 à 23:11
non pas de réponse,
ça correspond à ce que j'ai écrit:
différence de 2 infinis ---> erreur
division infini par infini --> erreur
sinon j'aurait dit je divise le tout par l'infini:
(Vx² + Wx + Z) / infini --> x2 + x + 1 (pas de solution)
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 6 juin 2007 à 23:21
En même temps chercher une réponse dans les réels avec des termes qui ne sont pas réels... Mais Gobillot a raison, V = W = Z = infini, on peut construire différentes expressions de l'infini, mais pas différents infinis.
Lorsqu'on résout une limite, on est parfois amenè à écrire des résultats intermédiaires qui font intervenir l'infini ou des divisions par 0 pour voir quelle technique utiliser pour résoudre le calcul. Par exemple utiliser le théorème de l'hospital lorsqu'on a une fraction du type 0/0 ou infini/infini. Mais le matheux n'écrira jamais
Lim(x->0) sin(x)/x = 0/0
Mais plutot
Lim(x->0) sin(x)/x = "0/0",
Les guillements indiquant qu'on a une expression du type 0/0. Mais une expression produisant 0/infini, n'est pas égale à 0/infini qui sont eux bien déterminés.
Après on continuera avec Lim(x->0) sin(x)/x lim(x->0) cos(x)/1 1
Ce qui n'a rien avoir avec 0/0 qui est indéterminé.
Tout ca pour dire que lorsque tu déclares v,w,z comme nombres soi-disants infini, tu ne fais que mettre la même chose et ils sont bien égaux. On peut donc bien simplifier par l'infini comme la fait Gobillot...
<hr width="100%" size="2" />Julien.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 6 juin 2007 à 23:33
Bon...
redevenons sérieux :
L'informatique s'est tout simplement installée (raisons de confort obligeant) dans une logique "finitaire" qui ne corresponds pas vraiment à ngrand chose. Et encore : elle a assorti ses propres limites à cette "logique finitaire de confort" ....
Les exemples seraient nombreux (des milliers) !
En voilà un tout bête :
Private Sub Command1_Click()
Dim titi As Double
toto = "8,33333333333333"
titi = CDbl(toto)
tata = titi * 3
MsgBox tata
End Sub
Faites maintenant le calcul à la main, juste pour y voir clair...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 6 juin 2007 à 23:39
Enlevez maintenant un seul des "3" et relancez... (alors, elle s'est offerte ou non cette "logique finitaire " ?)
Amusez-vous maintenant, au contraire, à en ajouter, des "3" ... et relancez ===>> tiens ! ===>> ou comment, pour des raisons de confort, ... on a ... ma foi... mis une feuille de vigne sur la crotte... (et personne ne s'en plaindra, mais.. Bon !.)
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 6 juin 2007 à 23:45
Quel est le rapport avec notre infini ? Il a juste fallu discrétiser parce que contenir une logique infini n'était pas faisable...
Mais on est pas d'accord sur le concept de l'infini en informatique...
Tu veux dire qu'on ne peut faire avec ?
.Net calcule très bien avec des termes infinis et ca ne lui pose pas de problèmes...Ma foi il lèvera une exception pour les indéterminations habituelles infini - infini, ou infini * 0 etc... Mais il gère bien les infini * 5 infini, infini + 10 infini etc..
Exactement comme un humain le ferait...
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 juin 2007 à 23:55
ça veut dire que l'informatique n'est pas parfaite,
elle a des défauts, surtout dans les calculs, à cause de la précision, qui sont parfois assez étrange, mais pourtant logique et explicable:
Dim n As Double
n = 267.28
MsgBox 26728 - n * 100
l'informatique ne sait pas manipuler les grands nombres, mais l'homme non plus, il fait donc appel à l'informatique, ha bon ! c'est pas logique ça ...
ben si, il faut savoir utiliser les outils (clin d'oeil à jmf) même avec leurs défauts.
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 7 juin 2007 à 00:00
"ça prouve que l'informatique a ses limites"
C'est vrai, mais je pense que les limites humaines sont plus limitatives que les limites informatiques.
Dans ce cas-ci la limite est la quantitié d'informations acceptable pour coder un nombre afin d'effectuer des calculs. Oui, c'est une technique, néanmoins n'importe quel programme de calcul formel pourrait choisir d'enregistrer
"8,3333333333....." (avec des ...) comme 25/3
Et les irrationnels alors ?
Et bien pareillement de la même manière que nous, on peut dire que exp(x) somme(n 0->infini) x^n/n!
Et il peut calculer tout cela et donner une réponse non pas approchée, mais en terme de fractions, de racines, etc... De nouveau exactement comme un humain le ferait...
Les limites sont données par les techniques que nous utilisons avec nos ordinateurs, mais je crois que tant que l'homme saura programmer, un ordinateur pourra faire ce que l'homme fait dans ce genre de domaines et ne sera donc limité que par les connaissances de l'homme...
Sur ce je vais aller dormir j'ai examen d'analyse demain...
Bonne nuit et merci pour la discussion...