L'INFORMATIQUE AU SECOURS DES MATHS

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 9 juin 2004 à 17:57
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 - 10 juin 2004 à 02:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23548-l-informatique-au-secours-des-maths

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
10 juin 2004 à 02:08
bon et finalement voici la puissance des mathématiques ...

voici comment calculer de maniere explicite des valeurs de L qui marchent, elle dépendent juste d'un indice n que l'on peut prendre quelconque.

Ln = 1/sqrt(2) . [ (3+2sqrt(2))^n - (3-2sqrt(2))^n ] + 3/4. [ (3+2sqrt(2))^n + (3-2sqrt(2))^n ] - 1/2

(sqrt(2) est la racine carré de 2)

exemples:
L0 1 (1*2/2 1²)
L1 8 (8*9/2 6²)
L2 49 (49*50/2 35²)
L3 288 (288*289/2 204²)
L4 1681 (1681*1682/2 1189²)
L5 9800 (9800*9801/2 6930²)
L6 57121 (57121*57122/2 40391)
etc...

c'est qd meme plus puissant qu'un programme qui teste toutes les valeurs !!
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
10 juin 2004 à 01:22
bon en attendant, voici une maniere de construire une infinité de solutions a ce probleme, ce que l'informatique n'aurait pas pu faire.
on considère la suite double définie par:
x0=1, y0=3
x(n+1) = 3.xn+yn
y(n+1) = 8.xn+3.yn

je prétends que L = (yn-1)/2 vérifie L(L+1)/2 qui est un carré (pour tout n !!)
(y2 donne la valeur que ce programme trouve, cad le L tel que
L*(L+1)/2 vaut 1225)
en augmentant la valeur du L dans la boucle (limité a 285 ici), on aurait pu trouver L 1681 qui marche aussi. mais bon avec ce que j'ai dit, on peut en déduire une infinité... (celui d'encore apres est L 9800, puis L = 57121 etc..)
par contre, a la question : est ce que toutes les solutions (a part pour L = 0 et 1) apparaissent dans la suite, j'en sais rien. je pense cependant que oui.
StanOfSky Messages postés 43 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 7 octobre 2006
10 juin 2004 à 00:50
et c'est la qu'un mathémticien ingénieux se dit que de taper ces fameuses 4 lignes de codes puis les compiler et enfin les exécuter (sachant qu'il fallai avoir pensé a prendre son pc) est bien plus long et fastidieux que d'utiliser ce fabuleux instrument qu'est son cerveaux (nb:pas besoin de penser à le prendre en principé il est tjs avec vous ;) )

c marrant comme probleme ca me rapelle un peu la spé math de term ;)
c juste un petit probleme d'arithmétique :

cas evident d'un point de vue mathématiques mais qui ne repondent pas aux probleme : 0 et 1
ensuite il faut plus au moins tester les cas possible en enlevant un maximum de cas impossible ;)

on sait que le nombre de figurants est de la forme L(L+1)/2 et de la forme N*N donc carré d'un entier
c la que le mathématicien se rend compte qu'il est difficile de supprimer les cas car le forme N*N nous permet juste de dérouler les N, et la forme L*(L+1)/2 ne nous permet meme pas de distinguer le cas pair d'impair puisque L*(L+1) est forcement pair...

la flemmardise le pousserai à demander à son voisin informaticien de faire un petit programme pour tester tous les cas (dans un interval fermé bien sur) mais il a sa TI!!! (encore de la flemmardise)
donc il va tester les premier cas rapidement a la main
tres rapidement en déroulant les N, au bout du 5e cas on voit quee N=6 fonctionne puisque N*N carré (évident) et L*(L+1)/2=36 pour L=8...
mais c la qu'il remarque que les figurants sont des centaines !!!
donc il faut N >= 10 !!!
apres de laborieux tests il parvient à la solution qu'est 1225 pour n=35... (L=49)
il existe surement une méthodes pour éliminer plus de cas mais la j'ai po trouvé (chu seulement informaticien :p )

mais bon comme je suis informaticien :p je vais écrire le code que j'aurai posté (ecrit en bon c++ sans faire de caca avec des double(alors qu'on veu travailler qu'avec des entier))

#include
#include <math.h>

int main()
{
for (int n = 2; n < 200; n++)
{
int l = sqrt(n*n*2);
if (l*(l+1)/2 == n*n) std::cout << n*n << std::endl;
}
return 0;
}
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
10 juin 2004 à 00:31
ben en tout cas les mathématiques permettent de dire que dans ce cas, il y a une infinité de solutions.
la résolution de ce probleme se ramene (facilement) a l'equation de pell-fermat avec n = 8 (cad a la résolution de 1+8b²=c²). j'ai essayé de la résoudre, mais visiblement c'est compliqué, et des mathématiciens comme euler l'on trouvé dur, ce qui explique qu'il y avait peu de chances que je trouve tout seul ;) la réponse est finalement qu'il y a une infinité de solutions. si j'ai le temps, je vais essayer de comprendre comment on trouve toutes les solutions de pell fermat, et donc on peut explicitement (ou au moins récursivement) donner toutes les solutions de ce probleme.

pour ceux que ca interessent, pour passer de a²+a-2b²=0 à l'equation dont j'ai parlé c'est simple:
il suffit d'exprimer a en fonction de b; et ici a = (-1+sqrt(1+8b²))/2
on voit qu'ill est nécessaire et suffisant (pour que a soit entier) que 1+8b² soit un carré, c'est a dire que b soit solution de l'équation 1+8b²=c².

voila.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 juin 2004 à 23:59
les mathématiques peuvent-elles tout démontrer? non plus.
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
9 juin 2004 à 23:45
l'informatique peut elle répondre a la question : combient ya t'il de solutions ? assurément non, vu qu'elle ne peut en tester qu'un nombre fini.
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
9 juin 2004 à 21:55
alors qu'en faire de ceux-là ? ce problème se rapproche de celui des notes mais on n'est pas là pour ça ...

c'est assez difficile pour moi votre calcul ^_^
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juin 2004 à 20:32
Ben faut pas se facher, je ne vois personne ici qui ait joue le pedant dans ces commentaires. Un peu d'humour ne nuit pas. Il est vrai que nous avons parfois quelques grincheux mais le mieux est de ne pas en faire partie.

BruNews, Admin CS, MVP Visual C++
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 juin 2004 à 19:18
ceux qui manquent d'humour ne sont pas ceux que bonmau croit
bonmau Messages postés 13 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 4 octobre 2004
9 juin 2004 à 19:06
Beaucoup trop de pédants sur codeSource et qui semblent manquer d'humour.
Je n'écrirai plus de sources et je ne répondrai plus au commentaires.
Un dernier mot :la réponse est 1225,mais je suppose que nos esprits éclairés,qui sans doute n'ont pas compris le problème, l'avait trouvée en un claquement de doigts.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 juin 2004 à 18:49
1)une autre solution est de de compter les personnes 2 par deux, en terminant éventuellement par un seule, à condition de savoir compter 2 par 2, ou bien compter le nombre de jambes et diviser par deux si c'est plus simple (un simple décalage de neurones à droite suffira)
2)comment sait-on qu'il y a moins de figurants que de spectateurs?
3)le monsieur ne se sépare jamais de son portable, mais il n'est pas très à cheval sur les normes c++, et par ailleurs il ne sait pas compter car son programme ne fait pas 4 lignes comme il le prétend
Cyberboy2054 Messages postés 173 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 22 août 2008
9 juin 2004 à 18:14
On a tous un jour révé un jour d aller au stade avec son ordinateur pour compter le nombre de personnes grace a 1 addition, 1 division et une multiplication ...
C est juste la formule mathématique pour calculer la somme des termes de 1 à N, jcapte pas a quoi sert la ligne
if(sqrt(L*(L+1)/2)/floor(sqrt(L*(L+1)/2))==1)
bonmau Messages postés 13 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 4 octobre 2004
9 juin 2004 à 18:04
Un spectateur voit plusieurs centaines de figurants.Pour connaître leur nb exact,ou il les compte 1 par 1 -ce qui est fastidieux-,ou il utilise le programme qui lui donne la solution.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 juin 2004 à 17:57
sans programme, on peut dire qu'ils peuvent être 0 ou 1 par exemple
Rejoignez-nous