begin process at 2012 02 12 07:48:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CALCUL AVEC DES NOMBRE JUSQU'A 10^10000 MAJ

CALCUL AVEC DES NOMBRE JUSQU'A 10^10000 MAJ


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Expert Date de création :02/08/2003 Date de mise à jour :15/08/2003 13:26:23 Vu / téléchargé :6 101 / 173

Auteur : dtom

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (56)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
REGARDER LA CAPTURE D'ECRAN, CE SERAS PLUS EXPLICIT!
permet des calculs avec des nombre jusqu'a 10^10000 (!) avec une précision à l'unité!
(on peut aller jusqu'a 10^n avec n de type int)
ex :
1234568579*1234568581=1524159578723216399
aucun programme n'a une tel présision, meme pas en 64 bit!
type : _uint (unsigned int)
addition,soustraction,multiplication,division ,modulo,puissance,factoriel
a+b,a-b,a*b,a/b,a%b,!b  (et non b!,pour les matheux)
  

Source

  • #include "nb.hpp"
  • using namespace tom;
  • char*chrtime(DWORD time,char*string,int type);
  • int main(int argc, char* argv[])
  • {
  • DWORD tps=GetTickCount();
  • char*a=new char[1000];
  • _uint nb1="542546524";
  • _uint nb2=54;
  • _uint nb3=nb1/nb2;
  • printf(" %s\n",nb1.GetString(a));
  • printf("/%s\n",nb2.GetString(a));
  • printf("=%s\n",nb3.GetString(a));
  • printf("+/- =10^%d\n",nb3.GetLenString());
  • tps=GetTickCount()-tps;
  • chrtime(tps,a,0);
  • printf("Realise en %s\n",a);
  • delete[]a;
  • }
  • char*chrtime(DWORD time,char*string,int type)
  • {
  • DWORD ms=0;
  • DWORD s=0;
  • DWORD m=0;
  • DWORD h=0;
  • DWORD j=0;
  • DWORD mois=0;
  • DWORD sem=0;
  • DWORD ans=0;
  • switch(type)
  • {
  • case 0:
  • ms=time;
  • s=ms/1000;ms-=s*1000;
  • m=s/60;s-=m*60;
  • h=m/60;m-=h*60;
  • j=h/24;h-=j*24;
  • mois=j/30;j-=mois*30;
  • sem=j/7;j-=sem*7;
  • ans=mois/24;mois-=ans/7;
  • break;
  • case 1:
  • s=time;
  • m=s/60;s-=m*60;
  • h=m/60;m-=h*60;
  • j=h/24;h-=j*24;
  • mois=j/30;j-=mois*30;
  • sem=j/7;j-=sem*7;
  • ans=mois/24;mois-=ans/7;
  • break;
  • case 2:
  • m=time;
  • h=m/60;m-=h*60;
  • j=h/24;h-=j*24;
  • mois=j/30;j-=mois*30;
  • sem=j/7;j-=sem*7;
  • ans=mois/24;mois-=ans/7;
  • break;
  • case 3:
  • h=time;
  • j=h/24;h-=j*24;
  • mois=j/30;j-=mois*30;
  • sem=j/7;j-=sem*7;
  • ans=mois/24;mois-=ans/7;
  • break;
  • case 4:
  • j=time;
  • mois=j/30;j-=mois*30;
  • sem=j/7;j-=sem*7;
  • ans=mois/24;mois-=ans/7;
  • break;
  • case 5:
  • j=time*7;
  • mois=j/30;j-=mois*30;
  • sem=j/7;j-=sem*7;
  • ans=mois/24;mois-=ans/7;
  • break;
  • case 6:
  • mois=time;
  • ans=mois/24;mois-=ans/7;
  • break;
  • }
  • char*tmp=new char[100];
  • char*nb=new char[25];
  • *tmp=0;
  • if(ans)
  • {
  • ultoa(ans,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"ans");
  • }
  • if(mois)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(mois,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"mois");
  • }
  • if(sem)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(sem,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"semaines");
  • }
  • if(j)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(j,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"jours");
  • }
  • if(h)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(h,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"h");
  • }
  • if(m)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(m,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"min");
  • }
  • if(s)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(s,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"s");
  • }
  • if(ms)
  • {
  • if(strlen(tmp))strcat(tmp," ");
  • ultoa(ms,nb,10);
  • strcat(tmp,nb);
  • strcat(tmp,"ms");
  • }
  • if(strlen(tmp)==0)strcat(tmp,"0ms");
  • strcpy(string,tmp);
  • return string;
  • }
#include "nb.hpp"
using namespace tom;


char*chrtime(DWORD time,char*string,int type);

int main(int argc, char* argv[])
{
DWORD tps=GetTickCount();
char*a=new char[1000];
_uint nb1="542546524";
_uint nb2=54;
_uint nb3=nb1/nb2;
printf(" %s\n",nb1.GetString(a));
printf("/%s\n",nb2.GetString(a));
printf("=%s\n",nb3.GetString(a));
printf("+/- =10^%d\n",nb3.GetLenString());
tps=GetTickCount()-tps;
chrtime(tps,a,0);
printf("Realise en %s\n",a);
delete[]a;
}


char*chrtime(DWORD time,char*string,int type)
{
	DWORD ms=0;
	DWORD s=0;
	DWORD m=0;
	DWORD h=0;
	DWORD j=0;
	DWORD mois=0;
	DWORD sem=0;
	DWORD ans=0;
	switch(type)
	{
	case 0:
		ms=time;
		s=ms/1000;ms-=s*1000;
		m=s/60;s-=m*60;
		h=m/60;m-=h*60;
		j=h/24;h-=j*24;
		mois=j/30;j-=mois*30;
		sem=j/7;j-=sem*7;
		ans=mois/24;mois-=ans/7;
		break;
	case 1:
		s=time;
		m=s/60;s-=m*60;
		h=m/60;m-=h*60;
		j=h/24;h-=j*24;
		mois=j/30;j-=mois*30;
		sem=j/7;j-=sem*7;
		ans=mois/24;mois-=ans/7;
		break;
	case 2:
		m=time;
		h=m/60;m-=h*60;
		j=h/24;h-=j*24;
		mois=j/30;j-=mois*30;
		sem=j/7;j-=sem*7;
		ans=mois/24;mois-=ans/7;
		break;
	case 3:
		h=time;
		j=h/24;h-=j*24;
		mois=j/30;j-=mois*30;
		sem=j/7;j-=sem*7;
		ans=mois/24;mois-=ans/7;
		break;
	case 4:
		j=time;
		mois=j/30;j-=mois*30;
		sem=j/7;j-=sem*7;
		ans=mois/24;mois-=ans/7;
		break;
	case 5:
		j=time*7;
		mois=j/30;j-=mois*30;
		sem=j/7;j-=sem*7;
		ans=mois/24;mois-=ans/7;
		break;
	case 6:
		mois=time;
		ans=mois/24;mois-=ans/7;
		break;
	}
	char*tmp=new char[100];
	char*nb=new char[25];
	*tmp=0;
	if(ans)
	{
		ultoa(ans,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"ans");
	}
	if(mois)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(mois,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"mois");
	}
	if(sem)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(sem,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"semaines");
	}
	if(j)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(j,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"jours");
	}
	if(h)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(h,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"h");
	}
	if(m)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(m,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"min");
	}
	if(s)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(s,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"s");
	}
	if(ms)
	{
		if(strlen(tmp))strcat(tmp," ");
		ultoa(ms,nb,10);
		strcat(tmp,nb);
		strcat(tmp,"ms");
	}
	if(strlen(tmp)==0)strcat(tmp,"0ms");
	strcpy(string,tmp);
	return string;
}
 

 Conclusion

nb: pour ceux qui veulent comprendre le code :
le nombre 1234 et rangé sous forme d'une chaine de caractère en débutant pas les décimal,pous les dixaines,centaines... :
4321000000000000...

le "#define maxlen 1000" définit la taille max des nombre
#define maxlen n permet d'utiliser des nombre jusqu'a 10^n  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

CALCUL DE RACINE CARRE ENTIERES

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de fiend le 02/08/2003 00:39:23

Génial,
Pour quand les autres oppérations(/, ^, cos, sin, tan, invcos, invsin, invtan, racine, carré,racine n-ème?

Commentaire de dtom le 02/08/2003 00:42:32

ca arrive bientot : je l'ai fait en 5h, ce n'est que le squellette!
mais le reste arrive d'ici peut...

Commentaire de GoldenEye le 02/08/2003 10:47:29

Bon début, ça fait plaisir de voir que certains s'intéressent au calcul en multi précision. Quelques pistes pour améliorer :
1/c'est dommage de représenter 1234 par un tableau de maxlen éléments. Pour savoir combien de chiffres contient un nombre, on peut utiliser la formule 1+E(log(n)) où n est le nombre et log le logarithme en base 2
2/ La multiplication : ton algorithme est juste mais simpliste (donc lent). Lorgne du côté de la multiplication de Fourier. Même écueil pour la mise à la puissance (pow)
3/ Garde l'idée d'une classe C++ avec surcharge des opérateurs c'est facile à manipuler par la suite

Commentaire de dtom le 02/08/2003 12:58:04

Re :Bon début, ça fait plaisir de voir que certains s'intéressent au calcul en multi précision :-).
1/je sais mais cela permet d'éviter de changer al taille après chaque opération et d'éviter les problèmes de débordement.
2/merci, je vais explorer cette piste :
pour la multiplication, mon algorithme est plus que sympliste : j'ai dabord fait sur un brouillon une multiplication comme on apprend à les faire en primaire!
Au fait : Quelqu'un connaitrait-il un algorithme pour la division ? (j'ai du mal à coder celui qu'on apprend en priaire(!) ? )
3/OK!

Commentaire de GoldenEye le 02/08/2003 13:03:25

Division = multiplication par l'inverse
Là encore des algorithmes rapides existent. Google est ton ami lol

Commentaire de dtom le 02/08/2003 13:23:51

Merci, j'ai plus qu'a trouver  un algorithme pour calculer l'inverse.
I go to google---->

Commentaire de Zeroc00l le 03/08/2003 23:24:31

Cool la source que je pensais faire .. j'aurais pas a la faire .. Et justement j'ai eu le meme probleme pour la division ...
Toutes les piste que j'ai exploré et qui se rapprochent de la façon dont apprend à les résoudre en primaire tende vers le meme probleme : l'innéluctable approximation du résultat (meme si elle semble négligeable )
Je me tiendrait au courant ... C'est certain. :)

Commentaire de dtom le 15/08/2003 13:31:08

Comment trouver-vous la nouvelle version ?

Commentaire de Lightness1024! le 16/08/2003 19:20:22

selon la capture il ta fallu 10 secondes pour calculer ca et j'imagine que tu as un proc plus rapide que 500 MHz.
sur un motorola 68000 a 12 MHz un calcule comme ca on peut le faire en 10 secondes aussi si le programme etait mieux optimisé.
c juste une remarque. c bien de faire de genre de prog ca apprend les maths. aller @#

Commentaire de dtom le 17/08/2003 00:49:35

j'ai win95,32ram et seulement 233MHz ! alors sur un 2GHz, c surement mois de 10s!

Commentaire de sidewalker le 18/08/2003 10:44:47

I just want to know: DWORD time renvoit quoi? Et qu'est-ce que c'est que ce type DWORD? et GetTickCount()???
Je pose bcp de question mais mon expérience m'y oblige.

Merci beaucoup si un expert peut y répondre

Commentaire de dtom le 18/08/2003 13:45:54

GetTickCount renvoie le nombre de miliseconde écoulé depuis minuit ou depuis le démarage de l'ordi(j'ai oublier) et DWORD s'est un unsigned long : ca me permet de calculer de temp du calcul avec une petite soustraction.

Commentaire de sidewalker le 18/08/2003 22:24:17

Akay merci beaucoup.
Je suis débutant, donc dites moi si je me trompe, ce script permet aussi de faire des rendus 3D plus précis non? Voilà je vous laisse.
ced

Commentaire de Zeroc00l le 19/08/2003 00:10:58

Perso je ne vois pas l'interet d'utiliser une tel precision dans le rendu 3D. Et de toute facon la difference serait imperceptible a l'oeil nu (sauf si on effectu un zoom du rendu )

A part les soft mathématique complexe (fractale 2D, 3D ...)
Dans le cas des fractale en 3D et en 4D (quaternions ) la ca pourrait etre interessant, mais les calculs que necessite de tels monstres bouffent deja bcp de ressource cpu.

Cependant pour le calcul 2D ca pourrait etre interessant :)
Enfin, je ne vois que ca comme interêt :) .
Et vous ???

Commentaire de Zeroc00l le 19/08/2003 00:14:10

Il faudrait que je revois mon vocabulaire ('cause d'une belle répétition )...

(et ma grammaire dirons certains :p )
Arf après minuit, mes messages n'ont pas obligatoirement le label 'qualité fr' dsl     <:-J

Commentaire de sidewalker le 20/08/2003 11:15:18

Alors l'intérêt de ce prog n'est que pédagogique.
Sur ces bases là on peut faire des programmes très interessants.
(Mais à utilité futile :-p) Comme pour tout, trop de précision aux yeux d'un humain, surtout pour des nbres décimaux, ça n'a pas grand intérêt, ça ne permet pas de se rendre plus compte des choses ...

Commentaire de dtom le 20/08/2003 12:53:08

L'INTERET, comment ca L'INTERET ?
fractale,chiffrement(cryptographie),physique...
mais surtout, (c'est pour ca que je l'ai fait à l'origine) quand vous avez un prof de math qui vous donne en question subsidiaire d'un devoir maison une multiplication de 2 nombre a 20 chiffre : j'ai mis moins de temps que ceux qui l'on fait à la main(avec l'aide d'un clculatrice) a faire la fonction de multiplication et à l'executer!

Commentaire de Zeroc00l le 20/08/2003 15:41:23

lol c un faineant ton prof ! c tout ... il vous donne du boulot our se tourner les pouces...
(J'en ai eu mes 2 derniere anne la ... c'etait le meilleur prof qu j'ai jamais eu n'empeche.. barbe blanche cheveux blanc humour blanc, t-shirt pas blanc ; très cultivé... mais le cachant bien ...)

Moi je vais te donner un autre devoir ... qu'un gamin de 8-9 ans à recu vers 1786 qui devint un mathématicien encore célèbre aujourd'hui...

Pour avoir la paix, Son proffesseur avait demandé a sa classe :
"Calculer moi la somme de tout les chiffres entiers de 1 à 100 et inscriver le résultat sur votre ardoise"
Esperant avoir gagner la paix durant 30 minutes , il fut surpris lorsque le gamin leva son ardoise au bout de 5 minutes, ainsi que le resultat : 5050.
Mais comment avait il donc fait ? :)

Le prof surpris dit par la suite à son père :
"Dsl je n'ai plus rien à apprendre a votre fils ..."
Mais au fait... Qui etait ce gamin ? :)

Commentaire de guiguikun le 25/08/2003 02:35:46

Mais au fait... Qui etait ce gamin ? :) -> euh C'est pas Gauss ?

Commentaire de Zeroc00l le 25/08/2003 16:56:57

sisi ! :)

Commentaire de hpfx le 02/09/2003 23:57:07

sidewalker, t'es fou ou quoi ! c'est super comme systeme.
ne serais-ce que pour les factorielles !
essaie une factorielle de 180 avec les long, tu veras l'interret :)

Commentaire de Zeroc00l le 03/09/2003 00:48:20

Se pose maintenant l'interet de calculer la factorielle de 180 !!!!
(:p Ben vi koi ?)

Commentaire de hpfx le 03/09/2003 18:08:11

à Zeroc00l (20/08/2003) "Mais comment avait il donc fait ? :)"
moi je sais, et ben il a sortie sa jolie hp48 (si si même en 1786) et il a tappé << 0 1 100 FOR i i + NEXT >>
voilà ! :)
ou alors ca doit être un truc du genre : sum(1->100) = n*(n+1)/2 ...mais shut !...


à Zeroc00l (03/09/2003) : "l'interet de calculer la factorielle "
ha ben là ta sacrement raison, pourquoi faire des factorielles,
hein ?... et puis tiens, pourquoi faire des sinus, a quoi bon les complexes, au chiote les logarithmes, finalement c'est vrai ca sert a rien tout ca :)

PS : j'aime bien ton "avatar" je le trouve sympas.


à dtom : j'ai hate de voir les nouvelles versions de ton source...

Commentaire de Zeroc00l le 04/09/2003 12:46:33

Nan mais sans blague  je ne dis pas que cette source est inutile, au contraire mais je me demande pour quelle(s) raison(s) on aurait besoin de caculer la factorielle de 180 ... c tout !
C 'est pas trop compliqué comme question !
Pas la peine de me sortir tout l'arsenal mathématique à jeter a la poubelle !

PS : Mon avatar c'est Calvin (& Hobbes)

Commentaire de sidewalker le 04/09/2003 16:51:09

En fait, je me posais la question de l'utilité pke j'ai jamais su ce que c t, chui en 1ere g 16 ans, et si j'avais un jour senti le besoin de calculer une factorielle, et ben j'aurais cherché à apprendre ce que c t.
Rien que pour moi, pour la culture, donne moi un exemple concret ou on a besoin du calcul d'une factorielle (je crois savoir, mais dis moi)

Commentaire de hpfx le 05/09/2003 12:59:52

sidewalker :
un exemple : d'une maniere generale dans les developpements limités, formule de Taylor
En tappant dans google : "developpement limité sin", sur le 1er lien tu vera un peu de théorie a ce sujet.
J'ai pris "sin" pour demande a google qu'il ne m'envoie pas les pages de "développements" non mathematique
le DL du sinus est classique :
DL en zero de sin(x) = -x - x^i/!i  ( i : nombres impairs)

Autre exemple :
En proba, dans les calculs (combinaisons/Arangement/Permutation), que l'on retrouve dans le triangle de pascal d'ailleur ( Cnp ) pour le calculs descoefficient de degré n...

Ca fait longtemps que j'ai quitté l'ecole, mais je me rappelle que la factoriel est un outils que l'on retrouve un peu partout (tel l'exponentiel..)
et n'est pas un gadget pedagogique.
voilà.

Commentaire de hpfx le 05/09/2003 13:03:43

desolé j'ai fait *quelques* erreur de typo sur le DL.. vous corrigerez par vous même...

Commentaire de Zeroc00l le 05/09/2003 14:03:06

looool ouais bon d'accord les factorielles... ça peut servir...
Sinon pour le triangle de pascal il existe un autre moyen de trouver les coefficients ...
Après *quelques* heures de recherche perso (et d'essais infructueux )j'ai trouvé une suite qui permet de developper (x+y)^N
Le '.' signifiant la multiplication et les [Ap] les coeffs d'indice p, la forme developpé est :
[A0].x^(n).y^(0)  + [A1].x^(N-1).y^(1) + [A2].x^(n-2).y^(2) ... + [An].x^(n-n).y(n)
Que l'on peut optimise en cela :

p=n
EEEE
E
  EE      [Ap].x^(N-p).y^(p)
E
EEEE
P=0

Et bien les coefficients s'obtiennent avec ma suite.
[A0]=1
[A(p+1)] = [Ap] * (N - P + 1) / P

Pour exemple aller sur : http://www.vbfrance.com/article.aspx?Val=3974

Commentaire de sidewalker le 05/09/2003 21:12:10

Okay, n'ayant pas votre niveau, mais voulant tout de même m'avancer sur le programme, je vais regarder tout ça...
Ca m'a l'air bien joyeux. Merci à tous pour votre aide.
ced

Commentaire de dtom le 06/09/2003 08:24:55

n!-1=nombre d'anagramme d'un mot de n lettre
(annagramme de abc=acb,bac,bca,cab,cba)
de plus je compte faire un module _float,
qui auras les meme posibilité que _int mais il permetra des calcul décimaux,qui pourront etre très précis.
PS : le module _int est presque teminé (_int=signed int et _uint=unsigned int)

Commentaire de Zeroc00l le 06/09/2003 12:33:22

C'ets plus simple de dire qu'il existe n! arrangements d'un mot de n caractères (différents)

Commentaire de hpfx le 06/09/2003 23:06:45

Exact Zeroc00l, dtom tu donne la definition de l'Arangement avec tes anagrames :) j'avais déjà cité dans mon post di 5  ;)

mais je viens de me rappeler que l'on retrouve aussi cela dans la trigo complexe !! wouaaaa :
cos (z) = (exp(iz) + exp(-iz))/2 = sigma(0->infini) (-1)^k * z^(2k+1) / (2k+1)!

le factoriel est au denominateur...
ho, je suis sur que l'on peu en trouver a d'autre endroit des factoriels...

Commentaire de sidewalker le 07/09/2003 10:25:55

Pourquoi ça marcherait pas pr un mot de n lettres identiques?

Commentaire de sidewalker le 07/09/2003 10:27:59

C'est quoi la trigonométrie complexe, trigo sur plusieurs triangles?

Commentaire de dtom le 07/09/2003 13:02:37

1-mathématiquement parlant "aA" à 2!-1= 1 anagramme : "Aa" (je modifie la case uniquement pour mieu expliquer)
mais grammaticalement parlant, "aa" et "aa", c'est la meme chose!
2-trigo complexe : c quand on développe les fonction trigo.

Commentaire de Zeroc00l le 07/09/2003 14:09:04

La trigo complexe ? :) Patience tu va voir ca en terminale !!!

Commentaire de hpfx le 08/09/2003 00:05:15

sidewalker, la trigo complexe ?...
hum, dejà les nombres complexe, tu connais ?
tu vera c'est joli, c'est un nombre qui n'est pas sur la droite des réels, il est au dessus/dessous enfin là ou tu veux, donc c'est fini la relation d'ordre, tu ne peux plus dire "a plus petit que b"  ... interressant non?
ces nombres peuvent être representés dans le plan...
exemple z= 2+3i   le petit "i" indique la partie imaginaire... petit truc sympas : i*i= -1  hehe.. vaste programme...

tiens, donc racine carré de -2 ca devient possible !!!.. ha ha..
n'essaye pas sur ta calculatrice elle va faire tilt ! :)
c'est ti pas maginifique les math... jusqu'a present on t'as fait croire que les racines sur les negatifs c'etait pas possible...

ensuite, la trigo complexes, et bien c'est la trigonometrie qui porte sur les nombres complexes.
astuce : les nombres réels sont un sous ensemble des nombres complexe (en fait c'est pas un ensemble mais un corps mais on s'en fou!)
voilà, bon, c'est un peu plus chiant que les triangles mais ne te jette quand même pas par la fenetre :) tu vera c'est sympas comme truc.

Question pour ceux qui suivent : quelles sont les racines cubiques de 1  ???? ceux qui repondent "1" c'est pas ca, rangez vos calculatrices...


PS:Peut être certains vont me dire "oui mais a quoi ca sert les complexe", je le dit tout de suite : en electronique (circuit LRC filtres) c'est TRES concret , vecteurs de fresnel , courant alternatif/triphasé.

Commentaire de sidewalker le 09/09/2003 07:41:06

Far Far Far away!

En effet c'est un vaste programme, et franchemment, il faut qu'on ait déjà dépassé les compléments de fonctions pour en arriver là. mais i^2 =1 là franchemment, je me demande comment on pourrait en arriver à là. S ke c pke i a plusieurs valeurs comme tu dis sous la barre des réels?

Commentaire de sidewalker le 09/09/2003 07:41:41

je me suis trompé: je corrige i*i=-1

Commentaire de hpfx le 09/09/2003 12:19:06

sidewalker,
quand je dit qu'un nombre complexe et a dessus ou au dessus, ca veux par dire qu'il a plusieurs valeurs, il n'en a qu'une, mais juste pour dire que l'on n'est plus sur la droite des réels, on est dans le plan.
C'est tres interressant les complexe, et en plus on peux les representer graphiquement... (ce n'est pas le cas des quaternions..)

a remarquer que  l'exponentiel de i*pi est egal à -1.
on note : e(i*pi)-1 = 0  c'est original :)

Bon on s'eloigne du sujet initial : les sources qui permettent de calculer avec une precision arbitraire... dtom est en train de nous faire un truc drollement interressant là...

Commentaire de hpfx le 09/09/2003 12:20:02

sidewalker,
quand je dit qu'un nombre complexe et a dessus ou au dessus, ca veux par dire qu'il a plusieurs valeurs, il n'en a qu'une, mais juste pour dire que l'on n'est plus sur la droite des réels, on est dans le plan.
C'est tres interressant les complexe, et en plus on peux les representer graphiquement... (ce n'est pas le cas des quaternions..)

a remarquer que  l'exponentiel de i*pi est egal à -1.
on note : e(i*pi)-1 = 0  c'est original :)

Bon on s'eloigne du sujet initial : les sources qui permettent de calculer avec une precision arbitraire... dtom est en train de nous faire un truc drollement interressant là...

Commentaire de sidewalker le 09/09/2003 17:04:40

je sais que l'on s'éloigne bcp du sujet, mais si tu pouvais juste répondre à ces quelques questions pke ça m'interesse vraiment (jy ai pensé tte la journée)!

Alors, ces nombres complexes n'ont plus de relations en ordre de grandeur c celà?
c à dire que 3 < 2 peut ne pas être vrai?
Alors, c absurde! Quelles relations ont ils entre eux? ils ont tout de même une relation, comment on les uitiliserait alors?

Tu me parlais de plan. Moi ce que je comprends c que comme il n'y a plus de sens, les relations des nombres sont, chépa moi, vectorielles? les nombres représentent ils des aires, des longueurs, des figures?? J'en viens à poser la question est-ce que tt celà est défini? Ptet que les nombres n'occupent pas une place précise dans l'ordre de grandeur, mais il y a bien qqch qui les caractérise...
Finalement, est-ce que tt celà est applicable à la géométrie?
merci
ced

Commentaire de hpfx le 09/09/2003 23:15:42

Pour la relation d'ordre, c'est pas grave elle n'est pas obligatoire a tout ensemble. (tiens, l'ensemble des tangeante à une courbe n'as pas de relation d'ordre par exemple)
Les nombres complexes peuvent être representé dans un plan. (ca tu l'as bien compris) existe t'il une relation d'ordre entre 2 points d'un plan ?
non bien sur, il existe uen relation d'ordre entre 2 points s'il sont sur une droite et que l'on pose la proposition "si ce point est a gauche , alors le nombre qu'il represente est plus petit". ce n'est pas le cas dans un plan.
Soit donc point nombre complexes z1 et z2 , on ne peux pas dire z1 < z2 ni z1 > z2.
un nombre complexe utilise 2 notation, la notation cartesienne (x;y) les coordonnée du point si tu veux et la notation polaire (rho;theta) = rho * e(i*theta) qui correspond à la "norme"/module (distance eucl par rapport au point O) et "l'argument" à l'angle qu'il forme par rapport à l'axe Ox.
par exemple le nombre complexe i s'ecrit comme ceci : (0;1) en cart. et comme ceci [1;pi/2]
il est tres simple de faire des addition en utilisant sa forme cartesienne , de la même manieres que tu le fait dejà avec les vecteurs (t'avais bon la dessus)
et il est tres simple de faire des multiplications avec la forme polaire.
c'est vrai que tu ne t'es sans doute pas tellement posé la question de multiplier des vecteurs ! pourtant là on ne se gene pas pour faire toutes les operation possible avec les complexes et c'est rudement pratique, car comme les Réels ne sont d'un sous ensemble des complexes ceci à permis de faire de demonstration tres interressantes, tel que par exemple la decomposition de sinus au cube...(ou d'autre mais je ne me rappelle plus)
pour en revenir à la droite (qui represente les Reels) elle fait bien partie du plan (l'ensemble des complexes) donc toutes les particularités des fonctions (sin, racine carré..) dans le corps des réels n'est qu'un cas particulier en fait !!!
et comme il n'y a plus de relation d'ordre, le mot "nombre negatif" n'a plus de sens, donc la racine carré est definie PARTOUT.
exemple sqr(-4) = sqr( i^2 *4) = i * sqr(4) = 2*i
c'est simple, c'est de l'algebre, et quand un signe moins d'embete tu le remplace par i au carré !

* tiens ca deviens un forum de math ici

tu vera (surtout si tu continue tes etudes) les complexes, en dehors de l'aspect curieux du debut, c'est tres tres interressant.
c'est un peu comme quand le chiffre zero à été inventé, dans l'espris de certains gens celà ne representait pas une valeur concrete...

La reponse à la question "quelles sont les racines cubique de l'unité" que j'avais posé un peu plus haut.
elles sont :
(1;0)  (-1/2;sqr(3)/2) et (-1/2; -sqr(3)/2)
sur le plan celà represente le signe de mercedes à 90° , j'aurai du demander les racines de -i pour l'avoir dans le bon sens.
a noter que la sommes des racines n-ieme de tout nombre fait toujours zero.
racines carrés de 4 = 2 et -2

Commentaire de sidewalker le 10/09/2003 17:00:30

Et bien, je te remercie ENOOORMEMENT de m'avoir complètement renseigné sur ce point là. Merci bocou bocou.
Merci d'avoir pris le temps, merci d'avoir été exhaustif...
Et pis maintenant, comme tu as poussé ma curiosité à bout, m'en va m'renseigner d'avantage! Allez ciao.

Commentaire de Zeroc00l le 10/09/2003 19:57:20

Jamais vu une source qui fait couler autant de ... euh de bits ... :)
(meme en me corrigeant je m'apercois que le remplacant de "encre" peut porter a confusion lors de la lecture orale (Arf encore ! Non non !!! je ne fais pas expres de choisir des mots appartenant a un champ lexical particulierement bien identifiable ... ! ;þ) )
Bon revenons a nos moutons (merde qu'ont ils fait ceux la ? (et non pas :"Que leur fait on?")
Personnelement, et pour reprendre le probleme de 'classer' des nombres complexe, je classe les nombres complexe suivant leur module par rapport a un centre (a 99% l'origine)
De plus il ne faut pas se dire que les complexes, c'est difficile a assimiler. ca parait un peu bizarre, tordu ,incomprehensible quand on ne connait pas, mais  dans le plan il faut simplement sedire .. c'est un jeu: Avant j'ajoutais les coordonnés de deux point facilement
(X1 + X2, Y1 +Y2)
mais le probleme c'est que justement c'est tout ... on ne peut que additionner des coordonnés ou bien les soustraire. :( limite ..
Et bien les complexes definissent des 'regles du jeu' pour les multiplications et les divisions des coordonnés.
(a + b.i).(c + d.i) = (a.c - b.d) + (a.d+ b.c).i
pour la division cherchez , j'ai la flemme ...

En realite il faut comprendre les complexe comme un nouveau moyen de reperer dans un plan ...
par exemple le nombr complexe z = a+bi ou se situe t-il ?
il faut deux variable pour savoir ou se trouve z dans le plan ...
une autre methode ? et bien oui...
je te donne l'angle par rapport a l'axe des abscisses. Une fois l'angle trouve tu trace une droite ... tu par du point Zero (origine) et tu te deplace de racine de 2 Unite de plan. Sur quel point es tu tombé ?
sur le point de coordonné cartesienne (1,1) qui est bien a racine de 2 distance de Zero et qui forme un angle de 45 ° avec l'axe des abscisse

Ainsi un nombre autrefois representé par (X,Y)
peut etre representer comme cela : (Module, Angle )
Le module n'est en fait que la distance par rapport a Zero

mais on n'est pas oblige de choisir toujours Zero pour origine du repere... si je prend le nombre T=c+di pour origine du repere
pour connaitre la distance entre T et Z je n'ai simplement qu'a faire :
a -c + (b- d)i , pour avoir le vecteur  TZ. ensuite si je calcule le module de TZ j'obtiendrait la distance.
Donc dans un plan complexe, toute les operations et les soutraction de coordonnée se font comme dans le plan cartesien, lorsque tu as un nombre complexe sous la forme a +bi
Cependant lorsque tu as deux complexe sour la forme (module, angle), il n'est pas aisé de les additionner de tête (enfin pour les non habituels )
Si je pose maintenant M = Z * T cela revient a faire tourner le point Z d'un angle egale a celui qui servirai pour reperer T. Mais aussi cela reviendrait a faire tourner le point T d'un angle egale a celui qui ser't a reperer le point Z. Le module lui peut changer ..
En fait lorsque tu multiplie deux nombre complexes sous la forme (a+bi) chacun, c'est comme si le resultat etait la somme de leur angle (dans la forme (Module,Angle) ) et que tu multipliaitleur module.

Maintenant que tu connais (enfin mes explications sont loin d'etre tres comprehensible, normal en 10 minutes ...) la regles pour une dimension (+ et - ), pour deux dimensions (* et / )
Comment se comporterait ces regles dans un espace a trois dimension ? ("ben euh apres + ,- ,* et / je voit pas quel operateur il reste !!!:(" )

La je ne connais pas trop, mais j'ai lu quelques page dessus
En fait c'est pareil pour representer un nombre on peut lui attribuer trois variable  : x, y ,z
RAPPEL quand je multipliait un nombre complexe par un autre, cela le faisait tourner dans le repere... donc si j'avais pris tout les points d'une figure par exemple, je l'aurais fait tourner. Et C'EST LA , justement qu'ets l'interet des complexe, c'est que l'on peut faire plein de transformations que ne nous permettait pas un plan cartesien ordinaire. comment faire tourner un point  avec simplement des calcul  ('gnuuuuu' ?:/) ?
Donc les complexe permtte de faire tourner des figure en 2 DIMENSION ... D'ou le manque de .'quelquechose' pour faire tourner cette fois ci une figure en 3 Dimensions ..)
et bien juste une regle bizarre.. x.y est different de y.x
en realite si je prend les 3 variable x,y,z il existe 9 resultat possible si j'en porend deux et que je les multiplie... etrange non ? comme il n'y a plus d'operateur , 'on' complique les * et /... on peut rever pour les 4D etc ... )
Sur ce je vais aller faire tourner ma cuisse de poulet dans mon assiette afin de la manger le plmus proprement possible' :)
A++

(PS si kkun connait un bon site sur les quaternions PV Me ..Thansk !)
(PS2 : Si kkun veut des precision au sujet des fractales qu'il me le demande ..(comment ca amrche etc ...) je demenage, je n'ai pas encore internet dans mon appart, la je suis revenu exceptionnellement chez mes parents. donc reponse NON garanti sous 24 heures :p )
(PS : z'avez eu du courage de lire jusque l'a !!! lol )

Commentaire de hpfx le 10/09/2003 23:40:34

woua, Zeroc00l, tu y es allé de ta prose aussi ;)

juste une remarque : c'est intentionellement que je n'ai pas donné la formule de la multiplication sous sa forme cartesienne, en effet, je pense (du point de vu du concept) qu'il est plus interressant de travailler avec la forme polaire dans le cas des multiplication et division :
z1 = [r1,a1] rho1 et theta1 (module;angle)
z2 = [r2,a2]
et bien violà ce que donne z1 * z2 = [r1*r2 ; a1+a2]
peux ton rever plus simple, pas de formule bizaroide !!!
et comment retrouver ce resultat !? tous simplement en ecrivant le complexe sous sa forme exponentielle : z = r e(ia)
z1 * z2 = r1 * r2 * e(i *a1) * e(i * a2) = r1*r2 * e(i(a1+a2))
je vous laisse deviner la division... par analogie...

voilà c'etait juste pour la remarque et pour donner une piste a notre chercheur "sidewalker".

pour les autres dimentions, en ce qui concerne la 3eme, là j'avoue que je ne l'ai pas du tout etudié, et je crois qu'elle n'as pas d'interret mathematique je sais plus pourquoi... bref,
pour la 4eme dimention, les quaternions, je pense que tu doit mieux les connaitre que moi, ce que je peux dire ... pour ceux qui le sauraient pas (*) ... c'est que ce nombre là est composé de 4 parties.
c'est à dire qu'en plus du i , on a ajouté j et k qui ont des particularités similaire . produit egal à -1 , et produit 2 à 2 donnent un vecteur ortho au plan.
ben, les seuls liens que j'ai sous la main, c'est du general a ce propos, rien de bien exitant (pas de fractal donc) :
en francais : http://www.bib.ulb.ac.be/coursmath/quater.htm
et en anglais : http://www.cs.berkeley.edu/~laura/cs184/quat/quaternion.html (plus complet je trouve)

(*) je sais pas, si quelqu'un arrive là par hazard :)

PS : on doit être les 3 seuls a suivre ce thread, même l'auteur a du abandonner :)
PPS : ca me fait du bien de me rememorer des maths... j'ai adoré les complexe.. ca se vois non ? :)

Commentaire de dtom le 11/09/2003 17:12:38

"L'auteur" n'a pas abandonner mais écoute avec interet. car "il" n'est qu'en terinal depuis 2 semaine.
donc il doit bosser.
je n'ai pourtant pas tolalement oublier la programmation car je suis sur un projet de prog de math big ( du style :
eq a="2x+5";
eq b="5x²+2";
eq c=derivé(a/b);
double d=val((a*b)/d,"x=5*8-4")
char toto[100]
interval moninterval=a>b;
moninterval.str(toto);
messagebox(0,toto,"",0) => "]-06;1["
ps:j'en suis à 5%

Commentaire de Zeroc00l le 11/09/2003 20:30:23

lool Note pour "L'auteur" :

j'ai un bout de source en vb qui sait deriver ( a 95 % puisque tu aimes les pourcentages :) ) toutes fonctions ... (je m'acharne une derniere fois avec les x^x^x^x ... )

PS : Je sais bien que tu entre en terminale j'ai ete voir ton profil .. 17 ans .. de plus j'ai ecris : "La trigo complexe ? :) Patience tu va voir ca en terminale !!!" et je rajouterais "plus tôt que tu ne le penses !"

Commentaire de Titaz le 01/10/2003 22:58:43

Salut,

jai un prob pour faire marcher ce prog.
IL maurai bien servi pour faire 12^1527/5

Je voulais aussi savoir si kelkun ne pourrait pas me donner un tuto pour faire des fractales parce que jai sa a faire pour le BAC mais je ni comprend rien ...

Merci sa serai cool

Commentaire de dtom le 02/10/2003 17:41:32

char*toto=(_uint)12^(_uint)1527/(_uint)5;
MessageBox(0,toto,0,0);
delete toto;
Ca ne fonctionne pas?

Commentaire de Zeroc00l le 12/10/2003 16:57:12

Au fait hpfx , c'est, fait  je viens de voir à mon école les dév limités...
Euh personnelement je comprend tjrs pas l'interet de calculer fact de 180 !!!
Bon il est certain qu'a un niveau de mathematique et de recherche Pousse ca peut etre un passage necessaire certes, mais pour le grand public ....... Enfin en tout cas je ne refuse pas la source ...
Les dév limités on arrête pas à l'ordre 4 ou 5 en général ? hum ?
a++

Commentaire de Wett le 14/11/2003 20:58:15

Mdr moi pauvre etudiant sorti du lycée depuis qlq semaines je vois des chose de maths et je comprends des trucs!! waaa je suis pas si con finallement mdr
C'est cool cette source j'aurai aimé pouvoir la compiler pour voir le resultat ;) Un code source pour deriver une fonction??? Moi je veux bien voir ca ca m'interresse un max!
En tout cas bravo à l'auteur ;)

Commentaire de dtom le 16/11/2003 18:54:58

j'ai déjà écrit une fonction pour dérivé une autre mais faut que je la retrouve...
PS:pour le big projet : il risque de rester à l'état de projet (pas le tps dsl)

Commentaire de OverDarck le 16/11/2003 22:09:13

WOW moi aussi je suis en 1ere et je me trouve un peu dans le meme cas que sidewalker et j'ai suvi vos dialogue avec le plus grnad interet ce qui as eveiller ma curiositée au plus haut point !!!!

Commentaire de OverDarck le 16/11/2003 22:25:11

encore un grand merci a vs pour tt ces chose magnifiques qui changent bcp de chose pr moi, pour ceux que sa interesse :

http://www.tanopah.com/

Un site de maths, et quelle site !!!
De quoi noyer nimporte quel genie !
Allez fiar eun ptit tours c trj sympas !

Commentaire de tibur le 14/02/2004 20:27:48

Je vais poster une class BigInt avec tout ce qui faut dedans ...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,153 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales