Matlab Gleichungssysteme lösen

Neue Frage »

giusi Auf diesen Beitrag antworten »
Matlab Gleichungssysteme lösen
Ich versuche gerade das Galerkin Verfahren in Matlab zu programmieren. Dabei bin ich bei der Berechnung der Basisfunktionen stehen geblieben.

Ich habe folgende Rahmenbedingungen:

y(0)=0, y'(1)=1

bzw.

1*y(0)+0*y'(0)=0
1*y(1)+0*y'(1)=1

nun für u0 funktioniert mein Programm und liefert richtig für u0(x) = x

dann müsste das Porgramm für u1(x) das Gleichungssystem:

1*c + 0*b=0
0*(a+b+c) + 1*(2*a+b)=1 auflösen

ich habe es mit der Funktion solve ([funktion1,funktion2],[a,b,c]); versucht. und das Programm liefert mir a=0.5 ; b=0 und c=0. Ich sollte jedoch für u1(x)= x(1-x) erhalten. Ich gehe davon aus, dass die Funktion solve das Problem ist.
Es wäre super, wenn mir jemand helfen könnte.
zyko Auf diesen Beitrag antworten »
RE: Matlab Gleichungssysteme lösen
Zitat:
1*y(1)+0*y'(1)=1

Ich nehme an,dass dies
heißen muss, gemäß den Anfangsbedingungen.

Für "solve" musst du hier zwei Funktionen in x ansetzen
vgl.
https://de.mathworks.com/help/symbolic/s...rks.com#buhn5zh
Abschnitt:

syms a b c x
eqn = a*x^2 + b*x + c == 0;
solx = solve(eqn, x)

z.B.
funktion1 = a*x^2 + b*x + c == 0;
funktion2 = 2*a*x + b == 0;

Beachte: bei dir ist die Unbekannte nicht x sondern [a, b, c].
Soweit ich mich erinnern kann, arbeitet das Galerkin-Verfahren häufig mit Ansatzfunktionen.
In diesem Fall sollten dies Ansatzfunktionen auch bei deinen Funktionen 1 und 2 auftreten, bzw. deren Ableitungen.

Anhang: ich habe zwar einiges an Erfahrung mit matlab aber nicht speziell mit symbolischen Umformungen, hier mittels "solve". Lies dir deshalb die matlab Hilfe dazu durch.
giusi Auf diesen Beitrag antworten »
RE: Matlab Gleichungssysteme lösen
Hallo zyko

danke für deine Antwort

genau wir nennen die Ansatzfunktionen "Basisfunktionen". Genau diese müsste ich mit meinem Code generieren.

Gegeben sind nur die Randbedingungen und einma x=0 und einmal x=1. Wenn ich dann meine allgemein formulierte Ansatzfunktionen (u1(x)= ax^2+bx+c ) und deren Ableitungen (u1'(x)= 2ax+b) zur Berechnung der effektiven Ansatzfunktion für die gegebenen Randbedingungen kriege ich aber falsche Koeffizienten für a,b und c.

Dein Bespiel zeigt wie ich eine Funktion nach x auflöse richtig? Wie würdest du denn das unten aufgezeigten Gleichungssystem lösen um a, b und c zu berechnen?

DAnke nochmals
zyko Auf diesen Beitrag antworten »
RE: Matlab Gleichungssysteme lösen
Der Begriff Basisfunktionen bedeutet, dass diese Funktionen einen Vektorraum aufspannen und paarweise orthogonal sind im Sinne eines Skalarprodukt, z.B.
(Kronecker Symbol)
Oft werden die Funktionen so normiert, dass ihr Innenprodukt 1 ergibt.
Deine erste Funktion ist aber nicht orthogonal zu
Achte darauf, dass diese Basisfunktionen die Voraussetzungen erfüllen, andernfalls sind die Lösungen für [a, b, c] nicht eindeutig.

S. auch
https://de.wikipedia.org/wiki/Galerkin-Methode
Im Abschnitt
"Detailliertere Darstellung" wird an Hand eines Beispiels gezeigt, dass die Basisfunktionen nicht berechnet sondern vorgegeben werden, aber deren Vorfaktoren und zwar so, dass das betrachtete Funktional am besten approximiert wird.
Als Ansatz ist dann möglich:

Hierbei ergibt sich aber für a und b durch die Randbedingungen keine eindeutige Lösung.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »