+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

come si calcola la radice quadrata

  1. #1
    Smith non  in linea Scolaretto
    per calcolare la radice quadrata di un numero
    in vb si usa il codice Text2.Text = Sqr(Text1.Text)

    però io volevo sapere il calcolo preciso da fare
    per capire il funzionamento di sqr.

    HO FATTO QUESTA FUNZIONE

    Private Sub Command1_Click()
    Dim N As Variant
    Dim RIS As Variant
    Dim Y As Variant

    'azzero le variabile n,ris,y
    N = 0
    RIS = 0
    Y = 0

    'inserisco il numero nella variabile n
    N = Val(Text1.Text)

    inizio il ciclo
    Do

    Y = Y + 1 'conta da 1 a text1.text

    RIS = CDec(Text1.Text / N + N) / 2 ' calcolo sqr
    N = CDec(RIS) ''

    If Y > CDec(Text1.Text) Then Exit Do 'se y e più alto di text1.text esco dal ciclo
    Loop
    Text2.Text = CDec(RIS) 'il risultato

    End Sub

    SI PUO' MIGLIORARE FINO A 16 CIFRE

    grazie
    Ultima modifica di Smith; 19-02-2006 19:40 

  2. #2
    Perche' non hai usato un ciclo for ... ?

    M = N
    
    Ris = 0
    For Y = 1 To M
        Ris = CDec(M / N + N) / 2
        N = Ris
    Next Y
    
    Print Ris
    
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    Smith non  in linea Scolaretto
    grazie

    pensavo che era pi veloce il ciclo do loop

    comunque e lento dopo le 5 cifre perche?
    e non ne fa pi di 6.

    l' istruzione Text2.Text = Sqr(Text1.Text) e velocissima.

    come e fatta?

    grazie

  4. #4
    L'avatar di yronium
    yronium non  in linea Scribacchino
    Quote Originariamente inviato da Smith
    l' istruzione Text2.Text = Sqr(Text1.Text) e velocissima.
    come e fatta?
    Cos:
    Public Function Sqr(Num As Decimal) As Decimal
        Sqr = CDec(Num ^ (1/2))
    End Function
    
    ;-)

  5. #5
    L'avatar di TheTruster
    TheTruster non  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Quote Originariamente inviato da yronium
    Public Function Sqr(Num As Decimal) As Decimal
        Sqr = CDec(Num ^ (1/2))
    End Function
    
    questo sistema tralaltro ha il vantaggio di potersi "adattare" per estrarre la radice cubica, o ennesima...

    così:

    Public Function Sqn(Num As Decimal, n As Integer) As Decimal
    sqn = cDec(Num^(1/n))
    End Function
    
    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  6. #6
    Smith non  in linea Scolaretto
    grazie per le risposte

    ma non mi avete capito.

    l' unico che mi a capito e AntonioGiuliana

    i metodi usati "^" "sqr"

    non li voglio usare.

    vorrei capire il funzionamento delle seguenti funzioni.

    quindi voglio fare il codice passo passo


    grazie

  7. #7
    Quote Originariamente inviato da Smith
    grazie

    pensavo che era pi veloce il ciclo do loop

    comunque e lento dopo le 5 cifre perche?
    e non ne fa pi di 6.

    l' istruzione Text2.Text = Sqr(Text1.Text) e velocissima.

    come e fatta?

    grazie
    Intanto devi ottimizzare il ciclo perche' la successione di Newton (quella che stai utilizzando) converge velocemente e, data la precisione che si vuole ottenere, non ha senso prolungare il ciclo oltre il necessario. Quindi inserisci la if dove ti mostro

      Ris = CDec(M / N + N) / 2
      If Ris = N Then Exit For        
      N = Ris
    
    In secondo luogo, la Sqr del VB e' piu' veloce perche' e' eseguita dal coprocessore matematico ... in hardware ...
    ℹ️ Leggi di pi su AntonioG ...

  8. #8
    LeaderGL non  in linea Novello
    Teoria: http://it.wikipedia.org/wiki/Calcolo...adice_quadrata
    Private Function RadiceQuadrata(ByVal Numero As Integer) As Double 
    Dim Xn0 As Double 
    Dim Xn1 As Double 
    Dim iIndice As Integer 
    
        Xn0 = (1 + Numero) / 2 
        For iIndice = 1 To 50 
            Xn1 = (0.5) * (Xn0 + (Numero / Xn0)) 
            If (Xn1=Xn0) Then Exit For
            Xn0 = Xn1 
        Next iIndice 
    
        RadiceQuadrata = Xn0 
    End Function
    

  9. #9
    Smith non  in linea Scolaretto
    grazie
    AntonioGiuliana era propio quello.

    ora e velocissima

    ecco il codice finito


    Private Sub Command1_Click()
    sqr
    End Sub


    Sub sqr()
    Dim N As Variant, RIS As Variant, Y As Variant, M As Variant
    N = Val(Text1.Text)
    M = CDec(N)
    For Y = 1 To M
    RIS = CDec(M / N + N) / 2
    If RIS = N Then Exit For
    N = RIS
    Next Y
    Text2.Text = CDec(RIS)
    End Sub

    meglio capire e creare le funzioni
    che scrivere funzioni elaborati da altri e non capirci nulla

    io sono all' inizio e voglio capire ci che faccio

    grazie a tutti

  10. #10
    L'avatar di yronium
    yronium non  in linea Scribacchino
    Quote Originariamente inviato da Smith
    grazie
    AntonioGiuliana era propio quello.
    ora e velocissima
    Sono contento che ci sei riuscito

    Quote Originariamente inviato da Smith
    meglio capire e creare le funzioni
    che scrivere funzioni elaborati da altri e non capirci nulla
    Per anche bene evitare di reinventare la ruota. Ci sono tantissimi algoritmi gi pronti e utilizzabili. Certo, ci pu sempre essere una soluzione migliore, ma spesso va benissimo quella gi pronta, e nella maggior parte dei casi essa gi la migliore possibile.
    Ciao e auguri di buona programmazione.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [C/C++] Radice quadrata
    Da M'auro nel forum C/C++
    Risposte: 2
    Ultimo Post: 26-07-2014, 22:14
  2. Algoritmo radice cubica c
    Da stefa1991 nel forum C/C++
    Risposte: 1
    Ultimo Post: 21-10-2012, 21:47
  3. Risolto: Calcolo della radice quadrata [D7]
    Da camaleonteplus nel forum Delphi
    Risposte: 8
    Ultimo Post: 24-11-2011, 22:48
  4. [C/C++] Calcolo radice di 2
    Da kuket nel forum C/C++
    Risposte: 1
    Ultimo Post: 07-09-2010, 18:37
  5. Algoritmo radice.
    Da Ununoctio nel forum Delphi
    Risposte: 6
    Ultimo Post: 23-02-2008, 17:10