inhomogene DGL in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 21:14 Sa 09.08.2008 | Autor: | Succubus |
Aufgabe | my``(t)+by`(t)+ky(t)=F(t)
m = Masse
b = Reibung
k = Federkonstante |
Hallo ihr Lieben, ich schreibe gerade meine Bachelorarbeit in Mathe und muss natürlich schon in 10 Tagen abgeben...
wie ihr seht ist oben eine inhomogene DG eines Pendels mit äußerer Kraft, bzw. eines Oszillators angegeben.
laut meinen Recherchen ergibt sich für mein Modell
m=0,12x10^-3
b=7,51981x10^-3
k=2pi m [mm] 25^2
[/mm]
F(t) ist etwas kniffelig, da es von x abhängt aber nehmen wir spaßeshalber mal an
F(t)=20
der ganze Spaß soll nun in Matlab gelöst werden, entweder ode23 oder ode45, ich denke letzteres ist sinnvoller,
zusätzlich weiß ich, das Matlab nur DGL erster Ordnung löst, ich weiß auch wie man sie umschreibt,
der Clou ist, ich habe keine Ahnung wie ich nun Matlab dazu bringe mir die Lösung auszuspucken,
ich weiß noch nichtmal wie ich ein .m-file erstelle die anscheinend nötig ist...
wenn mir jemand helfen kann, wäre ich sehr dankbar...
PS
ein ähnliches Problem wurde schon vor zwei Jahren gepostet, aber es hat mir leider nicht geholfen
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo Succubus,
> my''(t)+by'(t)+ky(t)=F(t)
> m = Masse
> b = Reibung
> k = Federkonstante
> Hallo ihr Lieben, ich schreibe gerade meine Bachelorarbeit
> in Mathe und muss natürlich schon in 10 Tagen abgeben...
> wie ihr seht ist oben eine inhomogene DG eines Pendels mit
> äußerer Kraft, bzw. eines Oszillators angegeben.
> laut meinen Recherchen ergibt sich für mein Modell
> m=0,12x10^-3
> b=7,51981x10^-3
> k=2pi m [mm]25^2[/mm]
> F(t) ist etwas kniffelig, da es von x abhängt aber nehmen
> wir spaßeshalber mal an
> F(t)=20
>
> der ganze Spaß soll nun in Matlab gelöst werden, entweder
> ode23 oder ode45, ich denke letzteres ist sinnvoller,
> zusätzlich weiß ich, das Matlab nur DGL erster Ordnung
> löst, ich weiß auch wie man sie umschreibt,
> der Clou ist, ich habe keine Ahnung wie ich nun Matlab dazu
> bringe mir die Lösung auszuspucken,
> ich weiß noch nichtmal wie ich ein .m-file erstelle die
> anscheinend nötig ist...
> wenn mir jemand helfen kann, wäre ich sehr dankbar...
Schau mal hier: Mathematik-Online-Lexikon: Lösung gewöhnlicher DGLs mir MATLAB
>
> PS
> ein ähnliches Problem wurde schon vor zwei Jahren
> gepostet, aber es hat mir leider nicht geholfen
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>
Gruß
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 21:39 Sa 09.08.2008 | Autor: | Succubus |
Hey MathePower,
ich habe ganz Google durchforstet und bin auch auf diverse gute (ua. auch deinem link, danke dafür) Einführungen gekommen,
mein Problem ist nur leider, dass ich nicht weiß wie ich im Command Window beginnen soll, wie ich MatLab sage, dass eine inh. DGL lösen möchte und wie ich diese m-files anlege...
kannst du mir da weiterhelfen?
|
|
|
|
|
Hallo Succubus,
> Hey MathePower,
>
> ich habe ganz Google durchforstet und bin auch auf diverse
> gute (ua. auch deinem link, danke dafür) Einführungen
> gekommen,
> mein Problem ist nur leider, dass ich nicht weiß wie ich
> im Command Window beginnen soll, wie ich MatLab sage, dass
> eine inh. DGL lösen möchte und wie ich diese m-files
> anlege...
m-files erzeugst Du über File->New->M-File
Dort dann Befehlszeilen eingeben und mit File->Save speichern
Siehe auch: MATLAB - M-Files
> kannst du mir da weiterhelfen?
Schau Dir mal diesen Link an: MATLAB-Buch
Dort speziell das Kapitel 4.
Gruß
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:39 So 10.08.2008 | Autor: | Succubus |
so, ich habe nun 5. Anleitungen gefunden, die mir zeigen wie ich eine DGL in Matlab einpflege, folgenes habe ich nun zusammengeschustert,
das .m file ist
fu1.m
%DGL 2.Ordnung - für nummerische Lösung mit ode45
%y''=-0,2y'-2y+10
%y1=y
%y2=y'
%y1'=y2
%y2'=-0,2y2-2y1+10
%y(0)=1 und y'(0)=0
funcion dp=fu1(x,y)
dp=[-0.2*y(2)-2*y(1)+10;y(2)];
dann im Command Window folgendes
>> [x,y]=ode23('fu1',[0 2],y0);
leider sagt mir MatLab darauf
??? Error using ==> nargin
fu1 is a script.
Error in ==> odearguments at 81
if (nargin(ode) == 2)
Error in ==> ode23 at 172
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
also ihr lieben,
es hilft mir leider nicht mir weitere links zu schicken die alles erklären (ich habe eh schon alle gefunden), wäre toll wenn mir jemand direkt sagen kann was ich ändern muss, ich verzweifel nämlich langsam...
vielen dank
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:06 Mo 11.08.2008 | Autor: | Rene |
Keine Ahnung in wie weit Du dein Problem bereits gelöst hast, aber was mir auffällt:
1. Laut Fehlermeldung ist dein m-file ein script und keine function, liegt wahrscheinlich daran das du "funcion" statt "function" geschrieben hast. (entweder hier beim Abtippen ein Fehler oder wirklich im m-file falsch).
2. Deine "function" ist falsch.
dy(1)=y(2)
dy(2)=.....
Das hast Du schon richtig geschrieben aber falsch deklariert in deinem m-file. du hast
die Einträge vertauscht.
richtig muss es heißen
dp = [y(2); ....];
Der Übersichtlichkeit halber würd ich schreiben
dp(1, : ) = y(2);
dp(2, : ) = ...;
3. Wie hast du y0 deklariert. Es muss ein spaltenvektor sein mit y0 = [y(0); dy(0) ]. Also in deinem Fall y0 = [0 ; 0];
So, jetzt sollte es funktionieren.
|
|
|
|