Numerische Berechnung der Rayleigh-Lamb-Kurven

Die Rayleigh-Lamb-Gleichungen:

bräunen ( P D ) bräunen ( Q D ) = [ 4 k 2 P Q ( k 2 Q 2 ) 2 ] ± 1

(zwei Gleichungen, eine mit dem Exponenten +1 und die andere mit dem Exponenten -1) wobei

P 2 = ω 2 C L 2 k 2
Und
Q 2 = ω 2 C T 2 k 2

zeigen sich in physikalischen Betrachtungen der elastischen Schwingungen fester Platten. Hier, D ist die Dicke einer elastischen Platte, C L die Geschwindigkeit von Longitudinalwellen und C T die Geschwindigkeit von Transversalwellen. Diese Gleichungen bestimmen für jeden positiven Wert von ω eine diskrete Menge reeller "Eigenwerte" für k . Mein Problem ist die numerische Berechnung dieser Eigenwerte und insbesondere, Kurven zu erhalten, die diese Eigenwerte darstellen. Welche Art von numerischer Methode kann ich bei diesem Problem anwenden? Danke.

Bearbeiten: Verwenden der numerischen Werte D = 1 , C L = 1,98 , C T = 1 , sollten die Diagramme etwa so aussehen (schwarze Kurven entsprechen dem -1-Exponenten, blaue Kurven dem +1-Exponenten; die horizontale Achse ist ω und die vertikale Achse ist k ):

So sollen die Kurven aussehen.

sobald Sie einfügen ω du hast eine gleichung F ( k ) = 0 für die Sie lösen möchten k . Dies ist ein nichtlineares 1d-Wurzelfindungsproblem (wie Sie sehen können, wenn Sie einige einleitende Absätze aus jedem Abschnitt in den numerischen Rezepten des Buches lesen (ich würde jedoch nicht ihren Code verwenden). Da es 1d ist, können Sie die Wurzel einklammern suchen Sie mit Sekans oder einer anderen Methode danach.
kannst du analytisch nach den Eigenwerten auflösen? und dann einfach die Software verwenden, um das Diagramm zu zeichnen? :)
@Timtam: Das analytische Lösen nach den Eigenwerten ist Teil des Problems
@Alice: Das Problem ist, dass es mehr als eine Wurzel gibt. Blindes Einklammern nach Wurzeln kann einige von ihnen übersehen.
@beko. Nur drei freie Parameter, D , ω / C T , ω / C L das wird die Wurzeln spezifizieren. Für die meisten Situationen D wahrscheinlich sagt Ihnen der Abstand mit Wurzeln alle k 2 D Mod 2 π . Sobald Sie die Wurzeln eingeklammert haben, können Sie einen Wurzelsucher ausführen. Wenn Sie die Funktion für verschiedene Regime Ihrer drei Parameter zeichnen, können Sie überprüfen, ob Sie die Wurzeln richtig eingeklammert haben.

Antworten (1)

Wie wäre es, anstatt die Wurzeln zu finden und dann die Plots zu erstellen, mit einer Monte-Carlo-Methode direkt zu den Plots zu springen?

Wählen Sie ein zufälliges k, wählen Sie dann ein zufälliges ω und berechnen Sie die linke Seite und die rechte Seite der RL-Gleichungen. Wenn die RHS nah genug an der LHS ist (Sie bestimmen, wie nah), setzen Sie einen Punkt auf das Diagramm (blau oder schwarz, je nachdem, welchen Zweig Sie verwendet haben).

Je mehr Punkte Sie verarbeiten und je strenger die Bedingung für die Gleichheit von RHS=LHS ist, die Sie auswählen, desto genauer wird das Diagramm aussehen.

Ein Problem bei diesem Ansatz besteht darin, dass Ihr Algorithmus nicht weiß, zu welchem ​​Zweig er gehört, wenn Sie einen Punkt in das Diagramm einfügen. Aber wenn es die Handlung ist, nach der Sie suchen, werden Sie kein Problem haben, sie mit dem Auge zu erkennen, wenn die Berechnung abgeschlossen ist.

Um aus diesem Monte-Carlo-Diagramm numerisch abzulesen, können Sie die gefundenen Lösungen sortieren (im k-Raum oder im ω-Raum sortieren) und eine Art Suche mit Interpolation durchführen.

Hier ist ein ungefährer C-Code, um zu erklären, was ich meine:

void main()
{
srand(1);
const int N=1000000000;
const float eps=0.01;
const float cl=...;
const float ct=...;
const float kmax=20.0;
const float omegamax=20.0;
float k, omega, p, q, lhs, rhs;
for (int i=0; i<N; i++)
 {
  k=(float)rand()/(float)RAND_MAX*k_max;
  omega=(float)rand()/(float)RAND_MAX*omega_max;
  lhs=tan(...)/tan()...;
  rhs=(4.0*k*k...);
  if (fabs(lhs-rhs) < eps*fabs(lhs+rhs))
    printf("%f %f\n", k, omega);
 }
}

und das ist es.

+1 Das ist eine gute Idee, die es wert ist, erkundet zu werden. Ich werde Sie auf dem Laufenden halten.
Freut mich, dass es deinen Wünschen entspricht. Für ein leichtes Problem wie dieses kann sich der Brute-Force-Monte-Carlo-Ansatz auszahlen. Die Berechnung wird nicht so lange dauern, insbesondere wenn Sie sie parallelisieren, aber Sie müssen nicht viel Zeit und Mühe in die Suche nach einer eleganteren Lösung investieren.