Newsgroup: it.comp.lang.visual-basic
Titolo: Come calcolare il punto comune di 2 curve?

Ho questo problema :
ho 2 equazioni che descrivono 2 componenti; dato una serie di valori
come faccio a sapere per quale x  la y delle 2 equazioni e' la medesima.
Devo implementare la procedura che fa questo calcolo in visual basic.
Grazie, ciao
Dunga

Probabilmente non ti interessa, questo serve a calcolare l'intersezione
tra due rette. Se intanto ti può essere utile per qualcos'altro....
PS;. sono interessato anch'io all'argomento, spero che qualcuno alleghi
qualcosa sulle curve.
' INTERSEZIONE TRA DUE RETTE O VERIFICA SE UN PUNTO APPARTIENE A DUE RETTE.
'  Se alla funzione passi Rx e Ry controlla se il punto appartiene alle due
rette. Se li passi = 0 e le due rette si intersecano Rx e Ry conterranno il
punto di appartenenza.
Function Intersez(x11 As Double, y11 As Double, x21 As Double, y21 As
Double, x12 As Double, y12 As Double, x22 As Double, y22 As Double, RX As
Double, Ry As Double) As Integer
     Dim X1 As Double, Y1 As Double, x2 As Double, y2 As Double
     ' Equazione a 3 incognite
     ' Calcolo coefficenti delle 2 rette
     ' e calcolo intersezione tra le due
     ' Set di Rx e Ry per i punti di intersezione
     ' Ritorna True se il punto Rx, Ry  appartiene a entrambe le rette
     Coefficenti x11, y11, x21, y21, a1#, b1#, c1#
     Coefficenti x12, y12, x22, y22, a2#, b2#, c2#
     RX = 0
     Ry = 0
     D_D = a1# * b2# - a2# * b1#
     If D_D = 0 Then
       Intersez = False                ' Le rette sono parallele
       Exit Function
      Else
        Dx = b1# * c2# - b2# * c1#
        Dy = a2# * c1# - a1# * c2#
        RX = Dx / D_D
        Ry = Dy / D_D
     End If
        Intersez = True                ' Set a True prima di effettuare il
test
     ' Test Appartenenza punto 1° retta
     ' Se il punto non appartiene ad entrambi le retta la condizione è False
        X1 = x11
        Y1 = y11
        x2 = x21
        y2 = y21
        My = Get_y(X1, Y1, x2, y2, RX)
        If Y1 < y2 Then
            If My < Y1 Or My > y2 Then
                Intersez = False
                Exit Function
            End If
        Else
            If My > Y1 Or My < y2 Then
                Intersez = False
                Exit Function
            End If
        End If
     ' Test Appartenenza punto 2° retta
        X1 = x12
        Y1 = y12
        x2 = x22
        y2 = y22
        My = Get_y(X1, Y1, x2, y2, RX)
        If Y1 < y2 Then
            If My < Y1 Or My > y2 Then Intersez = False
        Else
            If My > Y1 Or My < y2 Then Intersez = False
        End If
End Function
Function Get_x(Ax As Double, Ay As Double, Bx As Double, By As Double, Dy As
Double) As Double
     Dim Pm As Double, Am As Double, Y1  As Double, X1 As Double
   ' Ritorna la x di una retta passante per due punti
   ' (data la sua y)
     X1 = Ax - Bx
     Y1 = Ay - By
     x2 = Bx - Ax
     If X1 = 0 Then X1 = 1
     If Y1 = 0 Then Y1 = 1
     Am = (Bx + (By * (x2) / (Y1)))
     Pm = (X1) / (Y1)
     Get_x = (Pm * Dy + Am)
End Function
Function Get_y(Ax As Double, Ay As Double, Bx As Double, By As Double, Dx As
Double) As Double
     Dim Pm As Double, Am As Double, My As Double, my2 As Double, mx As
Double
     ' Ritorna la y di una retta passante per due punti  (data la sua x)
     mx = Ax - Bx
     My = By - Ay
     my2 = Ay - By
     If mx = 0 Then mx = 1
     If My = 0 Then My = 1
     If my2 = 0 Then my2 = 1
     Am = (By + (Bx * (My) / (mx)))
     Pm = (my2) / (mx)
     Get_y = (Pm * Dx + Am)
End Function
Sub Coefficenti(X1 As Double, Y1 As Double, x2 As Double, y2 As Double, Ca
As Double, Cb As Double, Cc As Double)
      Dim x As Double, y As Double, dx_Step As Double, dy_Step As Double
      Dim Dx As Integer, Dy As Integer, Steps As Integer, u As Integer
      Dim E As Double, f As Double, m As Double, A As Double, B As Double
      Dim Ax As Double, Ay As Double, Bx As Double, By As Double, Q As
Double
      Ax = X1: Ay = Y1
      Bx = x2: By = y2
      P = Get_x(Ax, Ay, Bx, By, 0) ' Get della x per la retta passante per
l'origine di Y (0)
      Q = Get_y(Ax, Ay, Bx, By, 0) ' Get della y per la retta passante per
l'origine di X (0)
     ' Coefficenti per l'equazione
     ' ax+by+c=0
      Ca = -Q
      Cb = -P
      Cc = Ca * Cb
End Sub

Hai due equazioni specifiche o la procedura deve funzionare per qualunque
tipo di equazione?
Dunga ha scritto nel messaggio <01bdb31a$677feb00$8364a8c0@mrdunga>...


Se hai due funzioni y=f1(x) e y=f2(x) e vuoi trovare il punto x* che
soddisfa entrambe devi costruire la funzione g(x)=f1(x)-f2(x) e porla uguale
a 0, cioč trovare le sue soluzioni (che sono in numero tanto maggiore quanto
grande č il grado della funzione g(x)).
Ciao
--
Stefano Zamboni
----------------------------------------------------------------------------
----------------
sz...@XXXtin.it
zam...@XXXfreemail.it
Togliere "XXX" per rispondere
----------------------------------------------------------------------------
----------------


Potresti chiedere su comp.graphics.algorithms (in inglese, chiaramente...)
--
Roal Zanazzi
z...@iol.it

Una domanda (mi sono perso la prima parte, forse lo dicevi): in che forma "conosci" le due curve?
Hai la loro rappresentazione sotto forma di equazione matematica o cos'altro ?
Se è così risolvi il sistema formato dalle due curve; la soluzione è quello che cerchi.
leo™
Roal Zanazzi ha scritto:

--
  _______________________________
 /                               \
< leonardo ghelfi - 
ghe...@tin.it
 >
 \_______________________________/