|
Autor |
Schwingkreis, Stromstärke in Matlab |
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Themenstart: 2017-07-09
|
\quoteon(ursprünglicher Beitrag)
Hallo :)
ich sitze vor einer Aufgabe, an der ich kein Stückchen weiterkomme..
Es geht um einen Stromkreis, an dem ein elektrischer Widerstand R, ein Kondensator mit Kapazität C und einer Spule mit Induktivität L hängt.
Mit
D:=1/LC-(R^2)/(4L^2) >0
lässt sich die Funktion I beschreiben als
I(t) = Re(U_0/(L(-w^2 + R/L * iw+ 1/LC))* exp(iwt)
+ exp( -R/2L *t)(\alpha*cos(sqrt(D) *t)+ \beta * sin(\sqrt(D) * t))
soweit zu den Formeln , die mir angegeben wurden.
Werte für C, L,t, R, U0 , alpha, beta und einen Vektor omega(w) sind mir auch gegeben.
Nun geht es um den Matlab Teil.
Man soll einen Vektor von 200 äquidistanten Werten für die Zeit t angeben (durch tmin und tmax). Und dann die Stromstärke I für jedes mögliche Paar von t und w Werten berechnen (gemäß der obigen Gleichung).
Hier ist soweit was ich habe:
>> vt=linspace(tmin,tmax,200);
>> vw=linspace(0.2500, 0.7500,200);
>> D=(1/L*C)-((R^.2)/(4*L^.2))
D =
0.9246
>> sD= sqrt(D)
sD =
0.9615
>> I(vt)= Re((U0.*exp(i.*vw.*vt))/(L(-vw.^2+ (R/L).*i.*vw + (1/L.*C))))+exp((-R.*vt)/(2.*L).*(alpha.*cos( sD.*vt)+ beta.*sin( sD.*vt)))
Subscript indices must either be real positive integers or logicals.
Ich weiß nicht was der Fehler ist und wieso die Fehlermeldung dort auftaucht ?! :( ich hoffe es kann jemand helfen..denn ich bin der Verzweiflung nahe :/ wenn noch Fragen zu der Aufgabenstellung bestehen- bitte gerne fragen :)
ICH DANKE :)
\quoteoff
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.1, vom Themenstarter, eingetragen 2017-07-09
|
hat jemand einen Tipp? oder habe ich ganz was falsch gemacht?
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.2, eingetragen 2017-07-10
|
Hallo kira123,
Dein Matlab-Code wird besser lesbar, wenn Du ihn in einen Quelltextbereich stellst:
stellst:
\sourceon Matlab
\numberson
vt=linspace(tmin,tmax,200);
vw=linspace(0.2500, 0.7500,200);
D=(1/L*C)-((R^.2)/(4*L^.2))
sD= sqrt(D)
I(vt)= Re((U0.*exp(i.*vw.*vt))/(L(-vw.^2+ (R/L).*i.*vw + (1/L.*C)))) ...
+exp((-R.*vt)/(2.*L).*(alpha.*cos( sD.*vt)+ beta.*sin( sD.*vt)))
real
\sourceoff
Die Fehlermeldung
\sourceon text
Subscript indices must either be real positive integers or logicals.
\sourceoff
bezieht sich auf Zeile 5, wo der Vektor vt als Index verwendet wird. Normalerweise gibt Matlab die Zeilennummer des Fehlers an.
Den Realteil erhältst Du mit der Funktion real, nicht mit Re(). Am Ende von Zeile 6 sollte ein Semikolon stehen, warum ist das dort sinnvoll?
Versuche zuerst, den Strom für einen Wert der Kreisfrequenz w an den in vt gespeicherten Zeitpunkten zu berechnen. Wenn das funktioniert, kannst Du das Programm erweitern, um mehrere Werte für w zuzulassen. Welche Datenstruktur benötigst Du dann für I ?
Ich hoffe, das hilft Dir,
Roland
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.3, vom Themenstarter, eingetragen 2017-07-11
|
Danke Ihnen für die Tipps :)
Ich habe I(vt) durch I ersetzt und erstmal mit einem festen Wert für w versucht..jedoch kommt die Fehlermeldung trotzdem :(
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.4, vom Themenstarter, eingetragen 2017-07-11
|
ah doch, jetzt funktioniert es für einen festen Wert..hab den Fehler gefunden..ein * hat gefehlt..
Jetzt zum Part wo ich den ganzen Vetor w miteinbeziehen soll..
soll das dann ein Array darstellen?
o.o ich weiß nicht genau wie...
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.5, eingetragen 2017-07-12
|
Hallo kira123,
es freut mich, dass ich Dir helfen konnte. Wenn Du Dein verbessertes Programm hier vorstellst, können auch andere daraus lernen.
Ja, I muss ein zweidimensionales Array sein, wenn es den Strom als Funktion der Zeit und der Kreisfrequenz darstellen soll. An welchen Stellen des verbesserten Programms hast Du angenommen, dass w ein Skalar ist?
Beachte, dass der Operator .* zwei gleich lange Vektoren elementweise multipliziert. Die Längen der Vektoren vt und vw werden im Allgemeinen unterschiedlich sein.
Servus,
Roland
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.6, vom Themenstarter, eingetragen 2017-07-13
|
ich werde den Code hochladen, sobald ich darin etwas aufgeräumt habe. Durch Ausprobieren herrscht dort Chaos ^^.
Ich hatte jetzt die Idee eventuell die Funktion I als .m Funktion zu schreiben für den festen Vektor vt.
Und dann durch eine Schleife alle Werte vom Vektor w nacheinander an die Funktion übergeben..
macht das Sinn? Langsam blicke ich nicht mehr durch o.o
Aber durch die Schleife wäre das alles ziemlich langsam ...
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.7, vom Themenstarter, eingetragen 2017-07-13
|
oder meinen Sie hier würde arrayfun mehr passen auf die Aufgabenstellung?
|
Profil
|
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 11650
Wohnort: Wien
 | Beitrag No.8, eingetragen 2017-07-13
|
Hallo kira123,
eine Funktion für I(t,w) ist eine gute Idee. Wenn Du Dir die Formel ansiehst, erkennst Du dass sich der Strom aus zwei Anteilen zusammensetzt, von denen nur einer von der Kreisfrequenz abhängt. Wie kannst Du das ausnützen?
Ich würde eine Schleife verwenden. Wie viele Werte soll die Kreisfrequenz annehmen? Was soll mit den berechneten Daten getan werden?
Ob arrayfun hier angebracht ist, kann ich nicht beurteilen. Kannst Du uns den Originaltext der Aufgabe mitteilen?
Servus,
Roland
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.9, vom Themenstarter, eingetragen 2017-07-16
|
okay,
ich habe jetzt etwas rumprobiert..
und dann die meshgrid Funktion angewendet.
Die Aufgabenstellung besagt, dass man "für jedees mögliche Paar von t- und w-Werten die Stromstärke I" berechnen soll und dann I in Abhängigkeit von t und w- Werten die Fläche mittels surf darstellen soll.
Hier mein jetziger Stand :
\sourceon nameDerSprache
>> vt=linspace(tmin,tmax,200);
>> vw=omega;
>> D=(1/L*C)-((R^.2)/(4*L^.2));
>> sD= sqrt(D);
>> [vw,vt]=meshgrid(vw,vt);
>> I= real((U0.*exp(i.*vw.*vt))./(L*(-vw.^2+ (R/L).*i.*vw + (1/L.*C))))+exp((-R.*vt)/(2.*L).*(alpha.*cos( sD.*vt)+ beta.*sin( sD.*vt)));
>> surf(vw,vt,I)
\sourceoff
http://matheplanet.de/matheplanet/nuke/html/uploads/b/47058_strom..jpg
hierbei bin ich mir unsicher ob meshgrid die Aufgabenstellung erfüllt..
ich Danke Ihnen, dass Sie schon so lange mit mir hier dran arbeiten :D !
|
Profil
|
kira123
Ehemals Aktiv  Dabei seit: 12.12.2016 Mitteilungen: 140
 | Beitrag No.10, vom Themenstarter, eingetragen 2017-07-16
|
zu Ihrer Frage noch..
mein Zeitvektor vt hat Länge 200.
und vw hat Länge 50.
|
Profil
|
kira123 hat die Antworten auf ihre/seine Frage gesehen. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|