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
» Planétarium virtuel.
par Oscaribout Aujourd'hui à 19:45

» 11 (en analyse): commandes sur TAB et SUB_MENU.
par Jack Aujourd'hui à 14:10

» 10 (en analyse): Erreur sur variable locale.
par Jack Aujourd'hui à 14:05

» Métamatière, éternité et renouvellement
par Oscaribout Aujourd'hui à 12:40

» De retour...
par Yannick Hier à 15:11

» bug SEVERE fnc+sub : (35)name already defined
par Oscaribout Dim 12 Aoû 2018 - 23:55

» ajouter des blancs dans un TXT
par silverman Dim 12 Aoû 2018 - 15:38

» Encadrement
par Jean Claude Dim 12 Aoû 2018 - 11:53

» Des rectangles...
par JL35 Dim 12 Aoû 2018 - 10:53

» TRIGGER_KEY_COMBINED_TOUCH
par Jean Claude Mar 7 Aoû 2018 - 20:58

» ITEM_SELECT N,L pour synedit
par Jean Claude Mar 7 Aoû 2018 - 19:11

» amélioration panoramic
par silverman Dim 5 Aoû 2018 - 18:34

» Commande file_readln.
par Pedro Alvarez Dim 5 Aoû 2018 - 17:08

» Klaus ?
par Jack Sam 4 Aoû 2018 - 22:48

» Défragmentation du disque dur
par JL35 Sam 4 Aoû 2018 - 21:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2018
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

 Représentation de fonctions.

Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

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

MessageSujet: Représentation de fonctions.   Mar 7 Nov 2017 - 10: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 - 20:29, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5983
Age : 68
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 - 14: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.
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: