matrix mit funktion < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:22 Do 15.02.2007 | Autor: | lehugo |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt
hallo
bin neu im forum und hoffe nicht zu triviales zu fragen, bzw nicht zu speziell!! lol
also ich möchte folgendes tun!
for j=2:n
möchte ich eine matrix erzeugen M(j), die eine Funktion von Omega ist!
diese matrix wird immer 2x2 sein.
aber M(1) wird natürlich immer von M(2) usw verschieden sein!
wie bekomme ich hin, dass Matlab nicht immer einen Wert für Omega bemeckert, bzw wie kann ich diesen "MatrixArray" erzeugen!
meine erste idee war eine 100x100 matrix mit nullen zu füllen und dann die jeweiligen 2x2 matrizen immer auf die diagonale der großen zu schreiben!
geht das auch besser oder sinnvoller!
dann habe ich aber noch nicht das Omega problem gelöst!
ziel wird sein die 2x2 matrizen zu multiplizieren, was mir eine 2x2 matrix N liefern wird. dann möchte ich Elemente von N(1,1) und N(1,2) weiterverwenden (N(1,1)+N(1,2)=o --> das heisst diese Gleichung lösen als funktion von omega)!!
uiui....ich hoffe diese anfrage passt hier hin etc. ist nicht zu penetrant! lol
auch für teil-ideen bin ich sehr dankbar!
netten gruss,
fabian
|
|
|
|
Hallo,
> hoffe nicht zu triviales zu fragen, bzw nicht zu speziell
Keine Angst. Hauptsache ist, es ist verständlich, was du meinst.
> möchte ich eine matrix erzeugen M(j), die eine Funktion von Omega ist!
Also ist M abhängig von j und [mm] $\Omega$? [/mm] Wenn ja, in welcher Weise?
Wenn du M für mehrere bekannte j und unbekannte [mm] $\Omega$ [/mm] berechnen willst, dann benötigst du die Symbolic Toolbox. Teste einfach, ob der Befehl "syms Omega" keine Fehlermeldung liefert, dann ist die verfügbar.
Für die Funktionsdefinition selbst kannst du die mal "inline" in der Hilfe ansehen. Damit müsste es gehen.
Die 100x100-Matrix ist bestimmt nicht optimal, aber du schreibst auch nicht, wieviele kleine Matrizen es werden. Kannst du präziser werden?
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 13:48 Mo 19.02.2007 | Autor: | lehugo |
also danke erst einmal für deine antwort
"Also ist M abhängig von j und $ [mm] \Omega [/mm] $"
M(j) ist in erster linie von omega abhängig!
j soll der laufparamater sein, d.h in meinem fall verschieden schichten im erduntergrund darstellen...der ausdruck für M ist demnach von j und omega abh.!
"wieviele kleine Matrizen es werden"
naja .. im generellen schon für n-schichten, in der praxis werden es aber nicht mehr als n=50 kleinere matrizen werden!
die inline funktion habe ich mir schon einmal angeschaut, komme aber zu keinem vernünftigen ergebnis!
ziel wird sein die 2x2 matrizen zu multiplizieren, was mir eine 2x2 matrix N liefern wird. dann möchte ich Elemente von N(1,1) und N(1,2) weiterverwenden (N(1,1)+N(1,2)=o --> das heisst diese Gleichung lösen als funktion von omega)!!
viele grüsse, fabian
|
|
|
|
|
Hallo,
das Problem ist mir immer noch nicht ganz klar, aber hier mal ein paar Ansätze:
Wenn du mehrere gleichgroße Matrizen zu einem Array zusammenfassen willst, fügst du einfach noch eine Dimension hinzu. Dann kannst du auf die einzelnen Matrizen so zugreifen:
M(:,:,1) enstpricht deiner Matrix M(1)
M(:,:,12) entspricht deiner Matrix M(12)
Wenn du eine Matrix per Funktion definieren willst, in es auch kein großes Problem. Wir wollen uns eine Matrix definieren, deren Einträge Funktionen von [mm] $\Omega$ [/mm] sind:
f = inline('[omega 2; 4*omega+1 omega/2]')
Nun kannst du z.B. f(22) berechnen und bekommst eine Matrix, die sich durch Anwendung der Vorschrift auf 22 ergibt.
Ansonsten habe ich das mit den N-Einträgen nicht verstanden. du hast es einfach per Copy&Paste aus deinem letzten Beitrag eingefügt. Was soll denn das kleine o?
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:53 Mo 19.02.2007 | Autor: | lehugo |
hi
ok, das mit der inline funktion sieht ganz gut aus!
auch wenn ich die matrizen, nicht explizit für Omega lösen möchte, sondern vielmehr die Matrizen für j=2...n erstellen möchte, als Funktion von Omega!
Dann werde ich diese (nach der schleife j=2...n, nur noch) von Omega abh Matrizen multiplizieren (M(1)*M(2)...), was mir eine Matrix N liefern wird...hofentlich :)
Diese Matrix N wird wieder 2x2 sein und aus dieser Matrix wird die Gleichung aufgestellt N(1,1) + N(1,2)=0 (hier ist eine null...sorry kein kleines o)!
diese Gleichung soll dann für omega gelöst werden!!
vielleicht interessiert dich für was ich das mache
ich versuche mir dispersionskurven für oberflächenwellen zu erstellen (in der seismik),dafür muss ich die geschwindigkeit der seismischen wellen in abhängigkeit von der frequenz errechen ;))
|
|
|
|
|
Hallo,
zum Ausftellen und Lösen der Gleichung benötigst du die Symbolic Toolbox.
Dann deklarierst du Omega als Symbol:
syms Omega;
Dann berechnest du mit Hilfe der Funktion(en) f deine Matrix N:
N = f(Omega)*....
Nun kannst du rechnen:
Omega_0 = solve(N(1,1)+N(1,2))
Dieser Vektor enthält dann mögliche Lösungen.
Gruß
Martin
|
|
|
|