WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Lineare Gleichung lösen

 

Schmankerl
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 05.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 22:14     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:


zu 1)
Was mir aufgefallen ist:
Code:
p19=size(Ma19);   %Vektor der Größe Ma19 erzeugen

Du meinst wohl
Code:

oder so etwas?
Ebenso in der Zeile darunter.

Code:

p19=p0;           %Vektor p19 erzeugen, der im Falle Ma19>1 (Düse kritisch) überschrieben wird

Hier wird p19 überschrieben, ohne dass vorher etwas damit gemacht wurde.


Ziel ist es, einen Vektor zu erzeugen, der genauso viele Zeilen hat wie der Vektor Ma19. Anschließend soll jeder Eintrag des Vektors den Wert p0 haben. Von dem her dürfte das passen...


Zitat:
ich habe Schwierigkeiten, die Problembeschreibung nachzuvollziehen.

Da es wichtig für mich ist mache ich es nochmals ausführlich:

Hinweis: jegliche Vektoren die ich hier ausführe haben in meinem Programm natürlich deutlich mehr Einträge (Zeilen), und sollen nur als Beispiel dienen:

Ich habe einen Vektor "Ma19" mit den Einträgen:

\begin{pmatrix} 2 \\ 3\\ 0,4 \\ 2 \\ 0,1 \end{pmatrix}

Dann noch einen Vektor mit dem Namen "Ers" mit den Einträgen:

\begin{pmatrix} 200 \\ 220\\ 250\\ 270\\ 310 \end{pmatrix} 
<br />

Dann lautet eine Konstante p0=0.3

Nun erzeuge ich mir einen Vektor "p19" mit genauso vielen Zeilen wie Ma19 hat, also 5, die alle samt den Wert p0=3 enthalten sollen :

\begin{pmatrix} 0,3 \\ 0,3\\ 0,3 \\ 0,3 \\ 0,3 \end{pmatrix}

Nun gibt es aber eine physikalische Bedingung, nach der die Einträge vom Vektor "p19" überschrieben werden müssen, falls der zugehörige Ma19 Eintrag größer als 1 ist:

Ma19=\begin{pmatrix} 2 \\ 3\\ 0,4 \\ 2 \\ 0,1 \end{pmatrix}
p19=\begin{pmatrix} 0,3 \\ 0,3\\ 0,3 \\ 0,3 \\ 0,3 \end{pmatrix}

Also bei der Zeile 3 und 5 , hier müssen neue p19 Werte berechnet werden.

Diese werden nun aus einer Berechnungsvorschrift berechnet, bei der die Einträge vom Vektor "Ers" wieder mit hineinspielen:

Die Berechnungsvorschrift war die Sache mit fsolve und den vielen Konstanten sowie den Elementen des Vektors "Ers".

Das heißt nun das fsolve quasi nur für p19(3) sowie p19(5) die neuen Werte berechnen muss und dabei eben in der Berechnung die Werte von Ers(3) und Ers(5) nutzen soll.

Letztlich erhalte ich also einen neuen Vektor p19 der überschrieben wird an der Stelle 3 und 5, und an den anderen Stellen aber weiterhin p0=0,3 stehen hat.

Im Prinzip denke ich, sollte das Programm das nun machen, macht es aber nicht Smile

Zwar sind in meinem Fall im Programm alle Ma19>1 und fsolve muss alle Gleichungen lösen, es gibt aber auch Fälle, bei denen Ma19<1 sein kann (je nach gewählten Ausgangswerten) die ich somit ebenfalls abdecken muss.
Dazu habe ich einfach in meinen Vektor Ma19 an der Stelle Ma19(100)=0.5 und Ma19(1000)=0.5 gesetzt , hier müsste dann folgendes passieren: p19(100)=p0=0,3 sein und p19(1000)=p0=0,3 sein, da eben Ma19<1 ist und fsolve hier keine Berechnung durchführen soll.

Ich hoffe es ist verständlich geworden?
Aufjedenfall bekomme ich jeweils für p19(100) und p19(1000) dann eine 0 anstatt einer 0,3?

Hmm...
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.01.2013, 23:02     Titel:
  Antworten mit Zitat      
Hallo,

führe mal bitte Zeile für Zeile deinen Code aus (Debugger) und schau dir das im Workspace an.

Zitat:
Ziel ist es, einen Vektor zu erzeugen, der genauso viele Zeilen hat wie der Vektor Ma19. Anschließend soll jeder Eintrag des Vektors den Wert p0 haben. Von dem her dürfte das passen...

Jetzt verstehe ich, was das soll, aber MATLAB wird es nicht verstehen.

Zitat:
Nun erzeuge ich mir einen Vektor "p19" mit genauso vielen Zeilen wie Ma19 hat, also 5, die alle samt den Wert p0=3 enthalten sollen :

Das klappt aber nun mit p19 = p0 mal gar nicht. Wenn du p19 = p0 schreibst, ist p19 danach ein Skalar mit Wert p0.
Ich würde stattdessen
Code:
verwenden.

Zitat:
Aufjedenfall bekomme ich jeweils für p19(100) und p19(1000) dann eine 0 anstatt einer 0,3?

Was durch obigen Fehler erklärt ist.

Und: bitte möglichst kompakte und an den Code angelehnte Erklärungen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.