FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Aujourd'hui à 16:52

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 14:16

» Compilateur FBPano
par Ouf_ca_passe Aujourd'hui à 12:25

» mise a jour calculatrice
par papydall Aujourd'hui à 2:01

» double guillemets "" dans un EDIT
par Marc Hier à 23:43

» Documentation de KGF
par Klaus Lun 20 Nov 2017 - 22:52

» Zoom sur une portion d'écran
par JL35 Lun 20 Nov 2017 - 21:51

» Recherche d'une expression dans un source
par Marc Lun 20 Nov 2017 - 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 Représentation de fonctions.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

Nombre de messages : 863
Date d'inscription : 19/01/2014

MessageSujet: Représentation de fonctions.   Mar 7 Nov 2017 - 12:08

Bonjour.

Ce code permet de tracer la courbe de fonctions affines et du second degré.

Code:
' Version du 22 oct 2017.

dim a, b, c, e$, crlf$, delta, k, maximum, ox, oy, x1, x2, y1, y2, x3, y3

label calcul, quitter

maximize 0
2d_target_is 0
on_close 0,quitter

crlf$=chr$(10)+chr$(13)

ox=screen_x/2
oy=screen_y/2

alpha 4:top 4,50:width 4,30:height 4,30:font_size 4,12:font_bold 4:font_color 4,255,0,128:caption 4,"  a"
alpha 5:top 5,100:width 5,30:height 5,30::font_size 5,12:font_bold 5:font_color 5,255,0,128:caption 5,"  b"
alpha 6:top 6,150:width 6,30:height 6,30::font_size 6,12:font_bold 6:font_color 6,255,0,128:caption 6,"  c"

memo 1:left 1,50:top 1,50:height 1,30:font_size 1,12:font_bold 1:font_color 1,0,0,160
memo 2:left 2,50:top 2,100:height 2,30::font_size 2,12:font_bold 2:font_color 2,0,0,160
memo 3:left 3,50:top 3,150:height 3,30::font_size 3,12:font_bold 3:font_color 3,0,0,160

button 7:left 7,50:top 7,200:width 7,100:height 7,30:font_bold 7:caption 7,"Calculer"
on_click 7,calcul

end

calcul:
  cls

  a=0:b=0:c=0
  if text$(1)<>"" and numeric(text$(1))=1 then a=val(text$(1))
  if text$(2)<>"" and numeric(text$(2))=1 then b=val(text$(2))
  if text$(3)<>"" and numeric(text$(3))=1 then c=val(text$(3))

if a>0 then delta=b*b-4*a*c

for x1=0 to ox*2 step 25
   2d_pen_color 0,128,0
   2d_line x1,oy-5,x1,oy+5
   if (x1-ox)/25<>0    
      font_color 0,128,128,255
      if mod(x1,5)=0 then print_locate x1-5,oy+10:print str$((x1-ox)/25)
   end_if
next x1

for y1=0 to oy*2 step 25
   2d_pen_color 0,128,0
   2d_line ox-5,y1,ox+5,y1
   if (oy-y1)/25<>0
      font_color 0,128,128,255
      if mod(y1,5)=0 then print_locate ox+10,y1-5:print str$((oy-y1)/25)
   end_if
next y1

k=0
 
2d_line ox,0,ox,oy*2
2d_line 0,oy,ox*2,oy
 
2d_pen_color 255,0,0
2d_pen_width 3
for x1=-100 to 100 step 0.01
   k=k+1
   y1=a*x1*x1+b*x1+c
     
   x2=int(ox+x1*25)
   y2=int(oy-y1*25)
     
   if k=1
      2d_poly_from x2,y2
         else
      2d_poly_to x2,y2
   end_if
next x1

if a>0
  if delta<0
     message "Delta ("+str$(delta)+") est inférieur à zéro: l'équation n'a donc pas de solution !"
        else
     x1=(0-b-sqr(delta))/(2*a)
     x2=(0-b+sqr(delta))/(2*a)
     maximum=(x1+x2)/2
                                                                                                                             
     x3=0-maximum
     y3=a*maximum*maximum+b*maximum+c

     e$="Delta= "+str$(delta)+crlf$+"x1= "+str$(x1)+crlf$+"x2= "+str$(x2)+crlf$+crlf$+"Extremum en ("+str$(maximum)+" ; "+str$(y3)+")"
     e$=e$+crlf$+crlf$
     e$=e$+"Forme canonique: "+str$(a)+"(x"
     if x3>0 then e$=e$+"+"
     e$=e$+str$(x3)+")²"
     if y3>0 then e$=e$+"+"
     e$=e$+str$(y3)
     message e$
  end_if
end_if

while 0=0
     x1=mouse_x_position(0)
     y1=mouse_y_position(0)
     
     x1=(x1-ox)/25
     y1=(oy-y1)/25
     
     caption 0,"x: "+str$(x1)+", y1: "+str$(y1)
     if scancode=27 then terminate
end_while

return

quitter:
  terminate
return


Dernière édition par Pedro Alvarez le Mar 7 Nov 2017 - 22:29, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5594
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Représentation de fonctions.   Mar 7 Nov 2017 - 16:11

Bonjour Pedro et merci pour le partage.

Essayer avec a = 1 ; b = -15 ; c = 50 dont les solutions sont 5 et 10 et voir le tracé : tronqué
De même avec a = 1 ; b = -20 ; c = 100

Il est préférable de mettre CLS au début du sous-programme calcul pour un nouveau tracé.
Pourquoi tu fais varier x entre -10 et + 10 ? ligne 62
Il est préférable de déterminer d’abord l’intervalle de variation de x pour un tracé lisible.

Jette un œil sur ce post

Ajoute les tests nécessaires pour que les valeurs contenues dans les MEMO 1, 2 et 3 soient bien des valeurs numériques afin de contrer le petit malin qui donnerait comme valeur pour a (ou b ou c) quelque chose comme  « q3+ »
Ton code est perfectible et avec un peu de modification, il sera beaucoup plus utile.
Bonne continuation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
 
Représentation de fonctions.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Convertisseur Binaire
» représentation gabion
» Présentation de ACR38
» Présentation d'aspirine
» Présentation de Salim

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: