J'aurais pu mettre ce prog dans la partie maths, mais bon, je l'ai mis là, alors ...
Ce programme trace des courbes selon un algorithme proposé.
Sélectionner la courbe dans la liste puis cliquer sur la feuille et voilà !
Le code est en VB 3 mais est compatible VB 6
Le ZIP contient :
- la feuille (présentée ici)
- le module (présentée ici)
- le fichier FRX
- le projet MAK
- l'EXE
- l'icone
taille : 7,44 Ko (2 sec max)
Source / Exemple :
:FICHIER MODULE :
Option Explicit
Function ArcCos! (X)
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 1.5708
End Function
Function ArcCoSec! (X)
ArcCoSec = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * 1.5708
End Function
Function ArcCoTan! (X)
ArcCoTan = Atn(X) + 1.5708
End Function
Function ArcSec! (X)
ArcSec = Atn(-X / Sqr(X * X - 1)) + Sgn(Sgn(X) - 1) * 1.5708
End Function
Function ArcSin! (X)
ArcSin = Atn(X / Sqr(-X * X + 1))
End Function
Function CoSec! (X)
CoSec = 1 / Sin(X)
End Function
Function CoTan! (X)
CoTan = 1 / Tan(X)
End Function
Function HArcCos! (X)
HArcCos = Log(X + Sqr(X * X - 1))
End Function
Function HArcCoSec! (X)
HArcCoSec = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
End Function
Function HArcCoTan! (X)
HArcCoTan = Log((X + 1) / (X - 1)) / 2
End Function
Function HArcSec! (X)
HArcSec = Log((Sqr(-X * X + 1) + 1) / X)
End Function
Function HArcSin! (X)
HArcSin = Log(X + Sqr(X * X + 1))
End Function
Function HArcTan! (X)
HArcTan = Log((1 + X) / (1 - X)) / 2
End Function
Function HCos! (X)
HCos = (Exp(X) + Exp(-X)) / 2
End Function
Function HCoSec! (X)
HCoSec = 2 / (Exp(X) - Exp(-X))
End Function
Function HCoTan! (X)
HCoTan = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
End Function
Function HSec! (X)
HSec = 2 / (Exp(X) + Exp(-X))
End Function
Function HSin! (X)
HSin = (Exp(X) - Exp(-X)) / 2
End Function
Function HTan! (X)
HTan = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
End Function
Function Sec! (X)
Sec = 1 / Cos(X)
End Function
:FICHIER FEUILLE :
VERSION 2.00
Begin Form AppFrm
AutoRedraw = -1 'True
Caption = "Graphotraceur"
ClientHeight = 6000
ClientLeft = 1095
ClientTop = 1485
ClientWidth = 7500
Height = 6405
Icon = FEU1_1.FRX:0000
Left = 1035
LinkTopic = "Feuille1"
ScaleHeight = 400
ScaleMode = 3 'Pixel
ScaleWidth = 500
Top = 1140
Width = 7620
Begin ComboBox LstGraph
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
Height = 315
Left = 90
Style = 2 'Liste déroulante
TabIndex = 1
Top = 90
Width = 2355
End
Begin CheckBox CAutoCls
Caption = "Effacer automatiquement"
FontBold = 0 'False
FontItalic = 0 'False
FontName = "MS Sans Serif"
FontSize = 8.25
FontStrikethru = 0 'False
FontUnderline = 0 'False
Height = 195
Left = 90
TabIndex = 0
TabStop = 0 'False
Top = 450
Value = 1 'Coché
Width = 1995
End
Begin Line AxeOrd
BorderColor = &H000000C0&
X1 = 250
X2 = 250
Y1 = 0
Y2 = 400
End
Begin Line AxeAbs
BorderColor = &H000000C0&
X1 = 0
X2 = 500
Y1 = 200
Y2 = 200
End
End
Option Explicit
Dim gbw!, gbh!
Sub Form_Click ()
Dim i!
Dim x#, y#
Dim dep!, fin!, pas!, coef!
Dim ty%
dep = -gbw / 50
fin = -dep
pas = .01
coef = 50
On Error Resume Next
If CAutoCls = 1 Then Cls
forecolor = &H80000005
ty = LstGraph.ListIndex
If ty < 0 Then
LstGraph.SetFocus
Exit Sub
End If
Randomize
For i = dep To fin Step pas
x = i
Select Case ty
Case 0
y = Cos(x)
Case 1
y = Sin(x)
Case 2
y = Tan(x)
Case 3
y = Atn(x)
Case 4
y = Log(x)
Case 5
y = Exp(x)
Case 6
y = Rnd(x)
Case 7
y = Sqr(x)
Case 8
y = Sec(x)
Case 9
y = CoSec(x)
Case 10
y = CoTan(x)
Case 11
y = ArcSin(x)
Case 12
y = ArcCos(x)
Case 13
y = ArcSec(x)
Case 14
y = ArcCoSec(x)
Case 15
y = ArcCoTan(x)
Case 16
y = HSin(x)
Case 17
y = HCos(x)
Case 18
y = HTan(x)
Case 19
y = HSec(x)
Case 20
y = HCoSec(x)
Case 21
y = HCoTan(x)
Case 22
y = HArcSin(x)
Case 23
y = HArcCos(x)
Case 24
y = HArcTan(x)
Case 25
y = HArcSec(x)
Case 26
y = HArcCoSec(x)
Case 27
y = HArcCoTan(x)
Case 28
y = x ^ 2 / Sqr(x)
Case 29
y = Sqr(x) / x ^ 2
Case 30
y = x ^ 3 * Sqr(Sqr(x))
End Select
x = x * coef
y = y * coef
Line Step(0, 0)-(x + gbw, -y + gbh)
forecolor = &H80000008
PSet (x + gbw, -y + gbh)
Next
End Sub
Sub Form_Load ()
LstGraph.AddItem "Cosinus" '0
LstGraph.AddItem "Sinus" '1
LstGraph.AddItem "Tangente" '2
LstGraph.AddItem "Arctangente" '3
LstGraph.AddItem "Logarithme népérien" '4
LstGraph.AddItem "Antilogarithme" '5
LstGraph.AddItem "Aléatoire"
LstGraph.AddItem "Racine carrée"
LstGraph.AddItem "Sécante"
LstGraph.AddItem "Cosécante"
LstGraph.AddItem "Cotangente" '10
LstGraph.AddItem "Arc Sinus"
LstGraph.AddItem "Arc Cosinus"
LstGraph.AddItem "Arc Sécante"
LstGraph.AddItem "Arc Cosécante"
LstGraph.AddItem "Arc Cotangente" '15
LstGraph.AddItem "Sinus hyperbolique"
LstGraph.AddItem "Cosinus hyperbolique"
LstGraph.AddItem "Tangente hyperbolique"
LstGraph.AddItem "Sécante hyperbolique"
LstGraph.AddItem "Cosécante hyperbolique"'20
LstGraph.AddItem "Cotangente hyperbolique"
LstGraph.AddItem "Sinus hyperbolique inverse"
LstGraph.AddItem "Cosinus hyperbolique inverse"
LstGraph.AddItem "Tangente hyperbolique inverse"
LstGraph.AddItem "Sécante hyperbolique inverse"'25
LstGraph.AddItem "Cosécante hyperbolique inverse"
LstGraph.AddItem "Cotangente hyperbolique inverse"
LstGraph.AddItem "Perso 1"
LstGraph.AddItem "Perso 2"
LstGraph.AddItem "Perso 3" '30
End Sub
Sub Form_Resize ()
AxeAbs.X2 = scalewidth
AxeAbs.Y1 = scaleheight / 2
AxeAbs.Y2 = AxeAbs.Y1
gbh = AxeAbs.Y1
AxeOrd.Y2 = scaleheight
AxeOrd.X1 = scalewidth / 2
AxeOrd.X2 = AxeOrd.X1
gbw = AxeOrd.X1
Cls
End Sub
Conclusion :
Il ne reste plus qu'à faire un interpréteur d'expréssion mathématique : l'utilisateur rentrera la formule et elle sera interprétée (comprise) par le programme ; mais ça, ... c'est pour plus tard !
Vous pouvez bien sûr changer la précision, l'échelle, mettre des nouvelles formules.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.