Jump to content

Sonar: Calcolo delle direttività delle basi idrofoniche circolari con le funzioni di Bessel (Listato disponibile in Visual Basic )  


Recommended Posts

Posted (edited)

Per eventuali sviluppi compresi nel post: link al calcolatore SONARMATH (per la determinazione dei parametri acustci del sonar)

 

 

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’ :

 

 fg. obessel0.jpg.a58d16248f39bd1ff963c3bcda0eac8f.jpg

 

 

besselo.jpg.22ba27c0068197fdb801e1ef69afb554.jpg

 

fig. 0'

 

 

si deve ricorre al computo delle funzioni di Bessel, o per via tabellare o con routine di calcolo.

 

bessel1.jpg.8cad61a7690824a3775c4ddae0a8a5bd.jpg 

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)

If 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

 

 

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:

 

 

bessel2.jpg.1978b8fcb17c8a2e2ff31e95ef0561fc.jpg

 

fig. 1

 

L’impiego del calcolatore è semplice:

 

si selezione sul combo l’ordine nj 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

 

In figura 2 il computo di j2 (nj=2)  per x = 0.4563:

 

 j2 =0.94862

 

bessel00.jpg.7530643c833851b22a7b2746789ad878.jpg

fig. 2

 

Edited by C. Del Turco
  • C. Del Turco changed the title to Sonar: Calcolo delle direttività delle basi idrofoniche circolari con le funzioni di Bessel (Listato disponibile in Visual Basic )  

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Forum Statistics

    • Total Topics
      45.4k
    • Total Posts
      526.2k
×
×
  • Create New...