bon je vous remercie pour toutes les fois que vous m'avez aidé
alors en guise de remerciement 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
- Code: Select all
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
- Code: Select all
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
- Code: Select all
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
- Code: Select all
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