Suite de Racines Carrées
+2
lamia
Napoléon
6 participants
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal :: Récursivité
Page 1 sur 2
Page 1 sur 2 • 1, 2
Suite de Racines Carrées
Calculer une estimation de R.
*********
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
- Code:
program RacineCarre;
uses wincrt;
var
N,i:integer;
R:real;
begin
write('donner le N');
read(N);
R:=0;
i:=N;
while i>0 do
begin
R:=sqrt(i+R);
i:=i-1;
end;
end.
Je sais pas si vraiment ce code marche car je l'ai pas essayé sur machine (remarque: depuis mon bac j'ai pas ecrit un programme en pascal )
Dernière édition par le Lun 3 Déc - 0:44, édité 1 fois
lamia- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Suite de Racines Carrées
une instruction manque en fin du programme
- Code:
...
end;
write ('l''estimation est:',R);
end.
lamia- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Suite de Racines Carrées
Vraiment bravo:
Il y a juste deux petites erreurs syntaxiques
RacineCarree ---> ajouter ";"
Begin: ---> sans ":"
Il faut aussi afficher R
Il y a juste deux petites erreurs syntaxiques
RacineCarree ---> ajouter ";"
Begin: ---> sans ":"
Il faut aussi afficher R
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
On trouve R = 1.758 (à 0.001) prêt.
Il faut trouver c'est quoi cette limite exactement? !!!!
Il faut trouver c'est quoi cette limite exactement? !!!!
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
- Code:
#include<stdio.h>
void main()
{int i,n;
float R;
printf("donner un entier\n");
scanf("%d",&n);
R=sqrt(n);
for (i<=n-1;i=1;i--)
{R=sqrt(i+R);}
printf("l'estimation de %d = %.4f\n",n,R);
}
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 39
Localisation : tunisie
Réputation : 5
Points : 6321
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Suite de Racines Carrées
Oui c'est quoi R ?
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
C'est un peu dur à trouver
Je suis entrain d'essayer de répondre à la question.
Je suis entrain d'essayer de répondre à la question.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Proposons une version récursive de la solution...
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Salut tout le monde:
Je crois qu'on s'est trompé TOUS dans cet exercice
Les solutions données sont fausses, et personne n'a fait attention
(J'espère que ce n'est pas moi qui se trompe maintenant )
La solution R := SQRT(i + R) ne donne pas le résultat demandé.
Je crois qu'on s'est trompé TOUS dans cet exercice
Les solutions données sont fausses, et personne n'a fait attention
(J'espère que ce n'est pas moi qui se trompe maintenant )
La solution R := SQRT(i + R) ne donne pas le résultat demandé.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
je ne vois pas l'erreur nabiL
informix- Nombre Rationnel
- Nombre de messages : 399
Réputation : 4
Points : 6525
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: Suite de Racines Carrées
moi aussi je ne la vois pas, comment corriger l'erreur?
lamia- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Suite de Racines Carrées
Je propose une solution (non récursive) puis une autre (récursive)
- Code:
program racines_r;
var
i, n : integer;
r : real;
begin
Readln(n);
r := sqrt(n);
i := n-1;
while (i > 0) do begin
r := sqrt(i + r);
i := i - 1;
end;
Writeln('r = ', r);
Readln;
end.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Admin a écrit:Salut tout le monde:
Je crois qu'on s'est trompé TOUS dans cet exercice
Les solutions données sont fausses, et personne n'a fait attention
(J'espère que ce n'est pas moi qui se trompe maintenant )
La solution R := SQRT(i + R) ne donne pas le résultat demandé.
Vos commentaires sur ce que j'ai posté ?
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
- Code:
program racines_r;
var
n : integer;
function rac(_from, _to : integer):real;
begin
if (_from = _to) then rac := sqrt(_to)
else
rac := sqrt(_from + rac(_from + 1, _to));
end;
begin
Readln(n);
Writeln('r = ', rac(1, n));
Readln;
end.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
manianis a écrit:Je propose une solution (non récursive) puis une autre (récursive)
- Code:
program racines_r;
var
i, n : integer;
r : real;
begin
Readln(n);
r := sqrt(n);
i := n-1;
while (i > 0) do begin
r := sqrt(i + r);
i := i - 1;
end;
Writeln('r = ', r);
Readln;
end.
salut:
J'ai éxécuté le code source manianis. Il fonctionne bien. J'ai pourtant quelques remarques:
Pourquoi la boucle "while" ici alors qu'on connait d'avance le nombre d'itérations qui est n ?
Autre chose:
Il faut commencer avec R := sqrt(n) et non pas R := 0. Lamia s'est trompée au début. D'ailleurs la majorité s'est trompée au début
bravo manianis!
Dernière édition par le Dim 2 Déc - 23:01, édité 1 fois
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
manianis, vous pouvez nous expliquer le raisonnement de la solution récursive? merci
suneddine- Nombre Réel
-
Nombre de messages : 730
Age : 39
Localisation : tunisie
Réputation : 5
Points : 6321
Date d'inscription : 11/11/2007
Feuille de personnage
Capacité linguistique:
(995/1000)
Re: Suite de Racines Carrées
Nabil :
Si j'ai fait attention et la solution que j'ai proposé est correcte car R a été initialisée à sqrt(n)
La boucle while est un choix que j'ai faite pour éviter d'écrire
for i:=n-1 downto 1 do ... que je n'aime pas.
Mosa :
Le raisonnement est assez simple.
Rn = sqrt(n)
Rn-1 = sqrt(n-1 + Rn)
Rn-2 = sqrt(n-2 + Rn-1)
...
R1 = sqrt(1 + R2)
Si j'ai fait attention et la solution que j'ai proposé est correcte car R a été initialisée à sqrt(n)
La boucle while est un choix que j'ai faite pour éviter d'écrire
for i:=n-1 downto 1 do ... que je n'aime pas.
Mosa :
Le raisonnement est assez simple.
Rn = sqrt(n)
Rn-1 = sqrt(n-1 + Rn)
Rn-2 = sqrt(n-2 + Rn-1)
...
R1 = sqrt(1 + R2)
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Dans le code de Manianis:
Dans le miens :
En principe que ca va etre la meme chose en fin de compte Expliquez moi SVP la difference???
- Code:
r := sqrt(n);
i := n-1
Dans le miens :
- Code:
R:=0;
i:=N;
En principe que ca va etre la meme chose en fin de compte Expliquez moi SVP la difference???
lamia- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Suite de Racines Carrées
read(N);
R:=0;
i:=N;
while i>0 do
begin
R:=sqrt(i+R);
i:=i-1;
end;
Exécution Manuelle pour n = 3
r:=0
i:=3
i > 0 ==> R :=sqrt(3)
i:=2
i > 0 ==> R :=sqrt(2+sqrt(3))
i:=1
i > 0 ==> R := sqrt(1+sqrt(2+sqrt(3)))
==>
Oui Lamia ton travail est correct.
R:=0;
i:=N;
while i>0 do
begin
R:=sqrt(i+R);
i:=i-1;
end;
Exécution Manuelle pour n = 3
r:=0
i:=3
i > 0 ==> R :=sqrt(3)
i:=2
i > 0 ==> R :=sqrt(2+sqrt(3))
i:=1
i > 0 ==> R := sqrt(1+sqrt(2+sqrt(3)))
==>
Oui Lamia ton travail est correct.
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Vous avez tous raison. J'ai pas fait attention que l'itération commence avec i=N
Dernière édition par le Lun 3 Déc - 0:45, édité 1 fois
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
lamia- Modérateur
-
Nombre de messages : 1936
Age : 38
Localisation : Tunis
Réputation : 53
Points : 6800
Date d'inscription : 04/11/2007
Feuille de personnage
Capacité linguistique:
(996/1000)
Re: Suite de Racines Carrées
manianis a écrit:
- Code:
program racines_r;
var
n : integer;
function rac(_from, _to : integer):real;
begin
if (_from = _to) then rac := sqrt(_to)
else
rac := sqrt(_from + rac(_from + 1, _to));
end;
begin
Readln(n);
Writeln('r = ', rac(1, n));
Readln;
end.
logiquement: la fonction doit prendre en paramètre uniquement le "n". Ca doit être suffisant pour calculer R(n).
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Oui c'est suffisant mais il faudra procéder de cette façon dans ce cas.
f
f
- Code:
unction rac(n : integer):real;
function int_rac(_from, _to : integer):real;
begin
if (_from = _to) then rac := sqrt(_to)
else
rac := sqrt(_from + rac(_from + 1, _to));
end;
begin
rac := int_rac(1, n);
end;
manianis- Nombre Réel
-
Nombre de messages : 975
Localisation : Tunisie
Réputation : 4
Points : 6254
Date d'inscription : 11/10/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Suite de Racines Carrées
Salut,
Peut-on trouver une forme récurrente de la suite R(n).
Autrement dit, une relation entre R(n+1) et R(n) par exemple.
???
a+
Peut-on trouver une forme récurrente de la suite R(n).
Autrement dit, une relation entre R(n+1) et R(n) par exemple.
???
a+
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Page 1 sur 2 • 1, 2
Sujets similaires
» L'entier avaleur de racines
» Suite et .... fin ?
» suite monotone
» Limite d'une suite (1)
» Suite de Fibonacci
» Suite et .... fin ?
» suite monotone
» Limite d'une suite (1)
» Suite de Fibonacci
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal :: Récursivité
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum