|
|
Differentialgleichung Programmieren |
|
berlin79 |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 22.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 13:19
Titel: Differentialgleichung Programmieren
|
 |
|
 |
|
Hallo!
Ich habe hier eine Aufgabe vor mir, wo ich einfach nicht weiter weiß.
******************************
"Das exponentielle Zellwachstum C(t) wird durch die lineare, homogene DGL 1. Ordnung beschrieben:
C'(t)= µ * C(t) ; Nebenbedingung C(to)=Co
Zur Vereinfachung: µ ist konstant. Mit dem nachfolgenden Verfahren und der Schrittweite h=0.01 die numerische Lösung der DGL berechnen:
Ck+1=Ck + h * µ * Ck; tk+1=tk+h; k=0,1,2,...
Info:(k+1 und k und o sind alle tief gesetzt, kann es hier nur nicht so schreiben)
Die Anfangswerte to=0, Co=2 und µ=0.5 sind gegeben. Wie lange muss iteriert werden, um die numerische Lösung auf dem Intervall [0,1] zu erhalten? Speichern Sie die berechneten numerischen Lösungspunkte (tk,Ck),k>0 ab. Geben Sie die berechneten Lösungspunkte auf dem Bildschirm aus. Visualisieren Sie die Daten.
******************************
Ist bestimmt total falsch, aber ich weiß einfach nicht mehr weiter
Würde mich über Hilfe/Tipps sehr freuen!
|
|
|
|
|
Phate |

Forum-Guru
|
 |
Beiträge: 283
|
 |
|
 |
Anmeldedatum: 09.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2008b
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 14:08
Titel:
|
 |
HI,
Hab leider grade nicht viel Zeit es dir zu korrigieren, aber ein paar Sachen kann ich dir sagen die falsch sind.
1. µ wird er nicht kennen. Ersetz es einfach mit: mue
2. Ck+1 und tk+1 = 0 wird auch Probleme machen schreib dafür
Ck_0 = 0 und tk_0 = 0
3. in der schleife hast du quasi deine mit k deineSchrittweite festgelegt. Die Schleife wird jetzt von 0 bis 30 in 0.01 schritten durchlaufen. du verwendest aber niemals die varaible k.
Hoffe es hilft auf die schnelle
Grüße
|
|
|
berlin79 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 22.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 14:16
Titel:
|
 |
Vielen Dank für deine Antwort.
Zu 1.) und 2.): Ich würde es dann anpassen, wenn ich es in Matlab programmiere, habe es nur so geschrieben um es optisch zu vereinfachen.
3.) Hmm, ja. Ich weiß ja noch nichtmal ob ich da überhaupt eine Schleife brauche in der Aufgabe. Vermutlich muss es eine While Schleife sein. Stehe damit aber (leider) auf Kriegsfuß
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 15:00
Titel:
|
 |
Hallo,
zu 1. + 2.: gerade wenn du dich selbst als völligen Anfänger siehst, ist es wichtig, sich mit der Syntax von MATLAB vertraut zu machen. Für die Leute hier ist MATLAB-Code eher lesbarer als die Variante hier.
zu 3.: ich würde k über die Anzahl der Schritte laufen lassen, also
k = 1:2999. Man könnte natürlich auch mit CUMSUM arbeiten, aber versuchs doch erstmal mit FOR.
Wenn du das alles berücksichtigst, sollte es recht gut aussehen. Wenn dann noch Probleme bestehen, kannst du ja nochmal deinen modifizierten Code posten, und dann sehen wir weiter.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Balzer82 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 15:18
Titel:
|
 |
Was dort gemacht werden soll, ist die mathematisch exakte Differentialgleichung durch numerische Integration zu berechnen. Dabei wird das exakte Differential mit unendlich kleinen Zeitdifferenzen durch den "Euler-Cauchy" Ansatz approximiert.
Also einfach mal C' als (Delta C)/(Delta T) hinschreiben. Dann wird es klarer, oder?
Ck+1 soll einfach "das nächste C" sein. Ck ist das "aktuelle C".
Probier mal ob das funktioniert:
|
|
|
berlin79 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 22.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 17:36
Titel:
|
 |
Danke Harald für deinen Beitrag!
An Balzer82: Ich denke genau so soll es aussehen. Dann lag ich ja garnicht so extrem falsch. Das beruhigt mich etwas.
Allerdings verstehe ich die Schleifenbedingung
nicht so ganz.
Also wie kommst du auf (1/h-1)?
Und
bedeutet quasi nur, dass das eben berechnete C halt C' sein soll, richtig?
Herzlichen Dank für eure Hilfe. Bin so glücklich endlich Antworten auf meine Fragen zu erhalten .
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 17:46
Titel:
|
 |
Hallo,
ich wollte dir an sich helfen, selbst genau diesen Schritt zu machen
Ich würde allgemein T/h-1 nehmen:
T ist die Endzeit, die Anzahl der benötigten Schritte ist dann T/h. balzer nimmt T=1 an. Das -1 würde ich weglassen; den Denkfehler hatte ich vorhin aber auch drin, als ich 2999 geschrieben habe.
Idealerweise sollte man C am Anfang noch vorbelegen:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
berlin79 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 22.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2011, 18:07
Titel:
|
 |
Ah, ok. Dann verstehe ich es wieder. Das kann man ja frei variieren. Also k= 1 in 1er Schritten bis z.B. 1/h oder 30 oder oder...
Also das mit dem floor lasse ich lieber.
Der Grund: Ich brauche vorerst nur ein bestimmtes Basiswissen, und das auch nur für die mündliche Prüfung. Und in der Vorlesung hatten wir nur eine begrenzte Anzahl an Befehlen.
Ihr habt mir aber wirklich sehr geholfen. Schlimmeres als das wird mich auch nicht erwarten.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|