Calcolo delle funzioni di Bessel in Visual Basic
Nello studio delle caratteristiche di direttività di alcune particolari basi idrofoniche circolari che ricevono il suono nella direzione perpendicolare al piano d’appoggio, vedi figure o e o’ :
-
Figura 0
-
Figura 0'
si deve ricorre al computo delle funzioni di Bessel, o per via tabellare o con routine di calcolo.
L'algoritmo di direttività
[modifica]Questo tipo di direttività, indicato con , è governato dall'algoritmo espresso da una funzione di Bessel ordine zero:
Dove
in cui:
diametro della base
angolo di provenienza del suono rispetto all'asse del piano dove giace la base
frequenza media geometrica della banda delle frequenze ricevute.
Il calco di è valido se sussiste la condizione
dove è il numero degli idrofoni che compongono la base
Il listato del programma in Visual Basic
[modifica]La valutazione tabellare è per valori discreti, migliore definizione di calcolo si ha con una routine software in Visual Basic il cui listato a seguire:
Listato del programma
‘Da trasferire in ambiente VB con copia/incolla
Dim s1 As Double
Dim i1 As Double
Dim p1 As Double
Dim y1 As Double
Dim x1 As Double
Private Sub text1_KeyPress(KeyAscii As Integer)
If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0
Then KeyAscii = 0
End Sub
Private Sub text2_KeyPress(KeyAscii As Integer)
If InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0
Then KeyAscii = 0
End Sub
Private Sub text3_KeyPress(KeyAscii As Integer)
InStr("-+.0123456789" + Chr(&H8), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub Command1_Click()
Label2.Caption = ""
Cls
If Combo1.Text = "n = 0" Then n = 0
If Combo1.Text = "n = 1" Then n = 1
If Combo1.Text = "n = 2" Then n = 2
z = Val(Text1.Text)
s1 = Val(Text2.Text)
If s1 = 0 Then s1 = 0.0001
i1 = 0
a1 = 0
b1 = 3.14159265
For x1 = 0 To b1 Step s1
y1 = (1 / 3.14159265) * Cos(z * Sin(x1) - n * x1)
p1 = y1 * s1
i1 = p1 + i1
PSet (1200 + 610 * x1, 3500), vbRed
Next x1
Dim ns As String
Dim i1s As String
Dim zs As String
zs = z
ns = n
i1s = Format(i1, "#.#####")
Label2.Caption = "J" + ns + "(" + zs + " ) = " + i1s
Circle (1200 + 610 * 3.14, 3500), 44, vbRed
End Sub
‘ Nel combo si devono listare i numeri: 0; 1; 2
Pannello di comando su P.C.
[modifica]Per l’impiego della routine si realizza un pannello di comando con alcuni oggetti: un combo, un textbox, un pulsante, un label nascosto sotto il pulsante calcolo, come mostra la figura 1:
Impiego del calcolatore
[modifica]L’impiego del calcolatore è semplice:
-si selezione sul combo l’ordine n della funzione da computare -si digita nel TextBox l’argomento x della funzione -si pigia il pulsante calcolo
a seguito dell’azione sul pulsante sotto di esso si sviluppa, in crescendo, un segmento rosso che indica che la routine sta girando regolarmente, alla fine della computazione all’estremità destra del segmento compare un cerchietto e contemporaneamente, sotto di esso il valore Jn(x) .
Un esempio
[modifica]In figura 2 il computo di j2 per x = 0.4563:
j2 =0.94862
Bibliografia
[modifica]- F. Balena, Visual Basic-il linguaggio-, Mondadori Informatica, 2008
- G.Frantz, Programmare con Visual Basic, Apogeo 1996
- M.Padovani, Visual Basic flash, Apogeo, 1997
- D. Inmann B. Albrecht Programmare in Quik Basic,McGraw-Hill, Marzo 1991
- C. Del Turco, La matematica con il personal computer- Metodi matematici e grafici in QBasic, Editrice MODERNA La Spezia, 1998