salut
au cas où ça interesse quelqu'un
j'ai construit quatre fonctions dont je vous retranscrit le code ci-dessous
deux remarques au préalable
1-pour la variable nommée eps prendre eps = 10^-9 ou 10^-10 (une valeur positive proche de zero mais non nulle)
2-par ailleurs lorsque la valeur de la fonction donne pour solution 10^90 cela signifie une aberration de calcul
et que l'erreur proviens des données mises en entrée
description des quatre fonctions :
-la premiere est notée : ineg(a,b)
il s'agit d'une application RXR->{0,1}
lorsque a est superieur ou egal à b on obtiens ineg(a,b) = 1 sinon ineg(a,b)=0
-la deuxieme est notée agm(a,b,eps)
elle donne la moyenne arithmético-géométrique du couple (a,b)
ici a et b sont positifs
-la troisieme est notée agmtr(a,b,c,eps)
avec a et b des réels quelconques et c qui est un réel strictement supérieur à 0 et non égal à 1
on verifie agmtr(x,x,c,eps)=x
x+y= agmtr(x,y,c,eps)+ agmtr(y,x,c,eps)
agmtr(x,y,c,eps)+ z=agmtr(x+z,y+z,c,eps)
agmtr(x,y,c,eps). z=agmtr(x.z,y.z,c,eps)
agmtr( agmtr(x,y,c,eps) , z , c , eps) =agmtr( agmtr(x,z,c,eps) , agmtr(y,z,c,eps) , c, eps)
lorsque x<y et 0<c<1 alors on verifie x<z<y
lorsque x>y et 0<c<1 alors on verifie x>z>y
lorsque x<y et c>1 alors on verifie x<y<z
lorsque x>y et c>1 alors on verifie x>y>z
-la quatrième est notée iagmtr(x,y,z,eps)
selon agmtr(x,y,t,eps)=z alors cette fonction donne la valeur de t
iagmtr(x,y,z,eps)=t
une aberration de calcul se produisant lorsque z>x>y ou bien lorsque z<x<y
Define ineg(a,b)=
Func
Local c
c:=int((2.int ((a+|a|+|b|+1)/(b+|a|+|b|+1)))/(int((a+|a|+|b|+1)/(b+|a|+|b|+1))+1))
Return c
EndFunc
Define agm(a,b,eps)=
Func
Local boucle,a0,b0,a1,b1,a2,b2,c2
c2:=eps
a2:=a
b2:=b
If eps =< 0 Then
c2:=10^-9
EndIf
If eps >= 1 Then
c2:=10^-9
EndIf
If a < 0 Then
a2:= |a|
EndIf
If b < 0 Then
b2:= |b|
EndIf
a1:=(a2+b2)/2
b1:=racine carrée de (a2.b2)
boucle :=1
While |a1-b1|>c2
boucle := boucle + 1
a0 :=a1
b0:= b1
a1:=(a0+b0)/2
b1:=racine carrée de (a0.b0)
If boucle >= 100 Then
a1:=0
b1:=0
c2:=0
EndIF
EndWhile
If boucle >=100 Then
a1:=10^90
EndIf
Return a1
EndFunc
Define agmtr(a,b,c,eps)=
Func
Local boucle,e,j,n,a0,a1,b0,b1,c0,c1
e:=eps
a0:=c
If eps =< 0 Then
e:=10^-9
EndIf
If eps >= 1 Then
e:=10^-9
EndIf
If c < 0 Then
a0:= |c|
EndIf
a1:=ineg(b,a)
j:=2.a1-1
b0:=j.a0.(b-a)
b1:=j.(b-a)
a0:=agm(b0,b1,e)
c0:=a+j.a0
b0:=|a+(b/2)-((3.c0)/2)|
b1:=|a-c0|
a0:=agm(b0,b1,e)
c1:=a+j.a0
n:=3
boucle :=1
While |c1-c0|>e
boucle := boucle + 1
b0:= |a-c1+((c0-c1)/n!)|
b1:=|a-c1|
a0:=agm(b0,b1,e)
c0:=c1
c1:=a+j.a0
n:=n+1
If boucle >= 100 Then
c0:=0
c1:=0
e:=0
EndIF
EndWhile
If boucle >=100 Then
c0:=10^90
EndIf
Return c0
EndFunc
Define iagmtr(x,y,z,eps)=
Func
Local boucle,a,b,c,d,l,n,t,t0,t1
c:=eps
n:=1
If eps =< 0 Then
c:=10^-9
EndIf
If eps >= 1 Then
c:=10^-9
EndIf
d:=0
If z>x Then
d:=d+1
EndIf
If x>y Then
d:=d+1
EndIf
If d=2 Then
t:=10^90
Goto n
EndIf
d:=0
If y>x Then
d:=d+1
EndIf
If x>z Then
d:=d+1
EndIf
If d=2 Then
t:=10^90
Goto n
EndIf
d:=|x-y|
If d =< c Then
t:=10^90
Goto n
EndIF
d:=|x-z|
If d =< c Then
t:=10^90
Goto n
EndIF
d:=|y-z|
If d =< c Then
t:=10^90
Goto n
EndIF
l:=(y-x)/(z-x)
a:=(1/3).( racine carrée de ((24/l^2)+1) -2)
b:=(1/25).((4/l)+1)^2
t1:=a+(b-a).((1-agmtr(0,l,a,c))/(agmtr(0,l,b,c)-agmtr(0,l,a,c)))
t0:=b
boucle :=1
While |t1-t0|>c
boucle := boucle + 1
t0:=t1
t1:=a+(t0-a).((1-agmtr(0,l,a,c))/(agmtr(0,l,t0,c)-agmtr(0,l,a,c)))
If boucle >= 100 Then
t0:=0
t1:=0
c:=0
EndIF
EndWhile
t:=t1
If boucle >=100 Then
t:=10^90
EndIf
Lbl n
Return t
EndFunc
pour info , hier je me suis aperçu que je me suis planté pour l'expression de la quatrième "fonction"
bon il me faudra quelques jours pour réparer l'erreur (j'ai une démo à terminer mais elle est bien avancée et par ailleurs pas trop compliquée à faire )
...ça m'arrive souvent de me planter mais y a que ceux qui font rien qui se trompent jamais ... lolll
salut
pourquoi faire compliqué quand on peut faire simple pour les deux premières fonctions ...
quant aux deux dernières ... que font-elles ?
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :