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
» Découpe dans une image
par JL35 Hier à 23:03

» FNC IsDateValide(d$) pour vérifier la validité d'une date
par Marc Hier à 21:51

» Pour faire plaisir à Marc37.
par Marc Hier à 21:46

» Couleur d'une variable qui n'est pas un mot-clé
par bignono Hier à 14:03

» Un catalogue de photos de fleurs, avec KBDD, affichage HTML
par Klaus Mer 21 Fév 2018 - 22:44

» KGF_dll - nouvelles versions
par Klaus Mer 21 Fév 2018 - 22:30

» Mah-Jong anglais
par jjn4 Mer 21 Fév 2018 - 14:22

» Partie fractionnaire d'un flottant
par silverman Mer 21 Fév 2018 - 14:19

» bug CREATE_HIDE : corruption de form
par silverman Mer 21 Fév 2018 - 13:32

» Racine carrée d’un nombre par l’algorithme de Héron
par Ouf_ca_passe Mer 21 Fév 2018 - 9:52

» Méthode manuelle d'extraction de la racine carrée
par pascal10000 Mer 21 Fév 2018 - 7:47

» [annulé]ON_MOVE n,l ne fonctionne que sur le form 0
par silverman Mar 20 Fév 2018 - 16:52

» Ludothèque Panoramic
par jjn4 Mar 20 Fév 2018 - 15:42

» Calculus
par Ouf_ca_passe Mar 20 Fév 2018 - 9:06

» 6 (en analyse):confusion de variable locale entre SUB et FNC
par Jack Mar 20 Fév 2018 - 8:18

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Février 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
262728    
CalendrierCalendrier

Partagez | 
 

 Représentation de fonctions.

Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

Nombre de messages : 929
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 : 5744
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 - 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: