:salut:
Je veux évaluer cette expression en Batch :
http://img94.xooimage.com/files/4/6/2/rec-3d58793.png
la valeur n sera renseignée par l'utilisateur, alors comment faire cette évaluation :koi:
:merci:
Version imprimable
:salut:
Je veux évaluer cette expression en Batch :
http://img94.xooimage.com/files/4/6/2/rec-3d58793.png
la valeur n sera renseignée par l'utilisateur, alors comment faire cette évaluation :koi:
:merci:
re :mrgreen:
comme ça,
pour récuperer le resteCode:
1
2 set /p n=valeur de n : set /a (n*(n+1)*(2*n+1))/6
EDIT:Code:set /a (n*(n+1)*(2*n+1))%%6
C'est une formule de récurrence d'une suite 1²+2²+3²+...+n², le reste vaut 0...
:salut: minnesota
Si c'est possible de faire quelque chose comme je l'ai fait en Vbscript càd quelque chose similaire à ceci avec les fonctions:
Citation:
Evaluer()
Poser_question()
:merci:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Dim Titre : Titre = "Evaluer le nombre N" Set ws = CreateObject("wscript.Shell") Do Call Evaluer() Call Poser_question() Loop Sub Evaluer() Do N = Trim(InputBox("Entrez le nombre N pour évaluer cette expression : "&Vbcr&" N*(N+1)*(2*N+1)/6",Titre,"4")) If Not IsNumeric(N) Then ws.Popup "Vous devez taper un Nombre pour évaluer cette expression : N*(N+1)*(2*N+1)/6 ","4",Titre,0+48 End if Loop Until IsNumeric(N) Resultat = N * (N+1) * (2*N+1)/6 MsgBox "Pour N="&N& ":" &vbcr&"N*(N+1)*(2*N+1)/6 = "&N&" * ("&N&"+1) * (2*"&N&"+1)/6 = " &Resultat ,64,Titre End Sub Sub Poser_question() Question = MsgBox ("Vouliez-vous évaluer cette expression à nouveau N*(N+1)*(2*N+1)/6 ?",VBYesNO+VbQuestion,Titre) If Question = VbYes then Call Evaluer() else Wscript.Quit end if End Sub
à peu de chose près dans la lignée de ton code vbs, en espérant que le forum ne soit plus en mode multiple micros maintenances :aie:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 @echo off setlocal title Evaluer le nombre N :main set again=0 call :Evaluer call :Poser_question if not %again% equ 0 goto main endlocal goto :eof :IsNumeric ::NTIsNum.cmd part copy set ret=1 call set "param=%%%~1%%" for /f "tokens=1 delims=0123456789" %%i in ("%param%") do set ret=0 goto :eof :Evaluer cls echo. echo Entrez le nombre N pour ‚valuer cette expression : (N*(N+1)*(2*N+1))/6 : set /p "N=" call :IsNumeric N if not %ret% equ 1 echo Vous devez taper un Nombre pour ‚valuer cette expression : (N*(N+1)*(2*N+1))/6& pause& goto Evaluer set /a Resultat=(N*(N+1)*(2*N+1))/6 echo Pour N=%N% : (N*(N+1)*(2*N+1))/6 = (%N%*(%N%+1)*(2*%N%+1))/6 = %Resultat% goto :eof :Poser_question set "Question=n" set /p "Question=Vouliez-vous ‚valuer cette expression … nouveau (N*(N+1)*(2*N+1))/6 ? [y,[n]] " if /i "%Question%"=="y" set again=1 goto :eof
:salut: et :merci: pour cette solution donc le sujet est :resolu:
Une démonstration par récurrence se fait en 3 étapes :
- la première consiste à montrer que la relation est vraie pour un n donné, très souvent n=0 ou n=1;
- la deuxième consiste à admettre que la relation est vraie au rang n, il faut alors démontrer qu'elle l'est au rang n+1
- la troisième est la conclusion qui affirme que la relation est vraie pour tout n.
Pour résumer, si tu vérifies que la relation admise vraie au rang n l'est encore au rang n+1, tu démontres alors qu'elle le sera encore pour n+2 et ainsi de suite. Le tout est de commencer pour n=0 ou n=1 afin de montrer que c'est vraie pour n=2, puis 3, puis 4 et ainsi de suite.
Donc ici,
Pour n=1, tu t'aperçois que http://latex.ilemaths.net/ile_tex.cg...29%7D%7B6%7D=1, donc la relation est vraie. La première étape s'achève ici.
Seconde étape : tu admets que la relation est vraie jusqu'au rang n, donc http://latex.ilemaths.net/ile_tex.cg...7D%5En%20k%5E2, il reste à démontrer que c'est vrai au rang http://latex.ilemaths.net/ile_tex.cgi?n+1. Pour le faire, on reprend la fraction au rang http://latex.ilemaths.net/ile_tex.cgi?n supposée vraie, on lui ajoute (n+1)^2 :
http://latex.ilemaths.net/ile_tex.cg...%5E2%7D%7B6%7D
On factorise par (n+1) au numérateur :
http://latex.ilemaths.net/ile_tex.cg...6%29%7D%7B6%7D
Or http://latex.ilemaths.net/ile_tex.cg...2%29%282n+3%29, donc http://latex.ilemaths.net/ile_tex.cg...B6%7D%20%5C%5C
Donc en remplaçanthttp://latex.ilemaths.net/ile_tex.cgi?%20n par http://latex.ilemaths.net/ile_tex.cgi?n+1 dans l'expression, tu démontres que la relation est vraie au rang http://latex.ilemaths.net/ile_tex.cgi?n+1.
Application :
Pour calculer le nombre de carrés contenus dans ce carré de nombre n=4:
http://img.over-blog.com/300x300/4/39/08/01/carres.jpg
Vous pouvez utiliser la formule de récurrence suivante:
http://img94.xooimage.com/files/4/6/2/rec-3d58793.png
Pour ce carré, n=4 ce qui donnera comme résultat: 30 carrés au total !
C'est Bon le Math :mouarf: :zoubi: :king:
gros +1 (n*3 :mouarf:) merci du retour ;)
Sinon y'a une suite qui est très intéressante, c'est celle de Fibonacci...
:salut:
une autre façon de calculer cette expression : 1²+2²+3²+...+n²
proposé par un batcheur :mouarf:
Code:
1
2
3
4
5
6 @echo off setlocal enabledelayedexpansion set /p N=Entrez une valeur de N \\: for /l %%# in (%N%,-1,1) do set /a ADD=%%#*%%# &set /a COUNT+=!ADD! echo R‚ponse: %COUNT% carr‚(s) dans un carr‚ de taille N ! pause
Oui, mais toi tu as eu l'intelligence de tester N, c'est pas rien ! ;)
Cela dit pourquoi tu ne sautes pas le pas vers un "vrai langage de programmation" ? Parce que les scripts c'est à la fois utile et surtout très ludique :mrgreen: , mais c'est quand même limité...