![]() |
Re: auflisten + Graf
Guten Morgen,
da ist noch eine Sache an dem Programm. Ich habe selbst versucht, das Problem zu beheben, aber nicht geschafft. Was macht array of double genau? Die berechneten Werte des Programms stimmen nicht mit meinen Werten überein. Ich habe das noch einmal überprüft, habe versucht das Problem zu beheben, aber nicht geschafft. t[j] := t[j-1] + h; y[j] := y[j-1] + h* k * y[j-1]; Ich glaube an diesen Zeilen is der Fehler. j:= 1 gesetzt, dann ist t[j-1]=0 und dadurch ist t[j]=h, und das ist falsch. Das selbe gilt auch für y[j]. h*k*0 ergibt 0. Die angezeigten Ergebnisse unten, also bei ty und y1. Als Ergebnis werden die Startwerte angezeigt. Das ist auch falsch? Oder habe ich da etwas falsch verstanden ? Müsste nicht statt t[j-1] t[0] stehen? Mfg play |
Re: auflisten + Graf
Zitat:
Die Dimensionierung erfolgt durch setlength(), wobei das Array 0-basierte Indizies verwendet.
Delphi-Quellcode:
erstellt ein statisches array (Elemente 0 bis 3) mit Integer-Elementen.
array [0..3] of integer;
HTH Frank |
Re: auflisten + Graf
Zitat:
Delphi-Quellcode:
Dies kann ich tun, da ich am ersten Wert gar nichts verändern muss, den bekomme ich vorgegeben. Aber wenn ich jetzt auf den Vorgänger vom j-ten Element zugreifen möchte, dann muss für y[j]= y[j-1] + h * k * y[j-1] genommen werden (also steht hier versteckt dein y[0], wenn du einfach einsetzt y[1] = y[1-1] + h * k * y[1-1} für den ersten Schleifendurchlauf). Deine Einwürfe, dass wenn man y[0] = 0 setzt keinem richtigen Ergebnis führt, weil alle anderen Werte auch 0 werden, sind dabei logisch aber du musst bedenken, welche Funktion du nachstellst, es ist die e-Funtkion. Die E-Funktion hat folgende Form: f = a * e^b dabei sind a,b Elemete der Reelen Zahlen. Egal was du für b einsetzt du kannst NIE 0 erreichen (Versuchsmal, kleiner Tip du musst Zahlen nehmen, die gegen -Unendlich laufen). Du kannst natürlich auf eine Weise 0 erreichen, wenn du a = 0 setzt und wenn du dann aber egal wie b änderst, bleibt der Zahlenwert für die E-Funktion mit f= 0 * e^b auch immer 0 somit scheint mein Programm rein logisch gesehen dies wirklich nachzustellen.
for j:=1 to n-1 do ...
Ps. mir ist schon bewusst, wenn ich die Funktion so abwandel, dass sie lautet: f = a * e^b +c, dann erhalte ich einen Schnittpunkt mit der X-Achse. Das ist mir Wohl bewusst und ich werfe einfach mal den Begriff der Asymthote in den Raum, ich denke damit sollte alles klar sein. Falls noch Fragen bestehen, werde ich dir die gern weiter beantworten. Bereite schnell eine Kommentierung für die Procedure vor. MfG BAMatze |
Re: auflisten + Graf
Zitat:
Entweder habe ich das Programm noch nicht verstanden, oder das Verfahren. Die e-Funktion kommt eigentlich hier gar nicht vor. Die e-Funktion ist die exakte Lösung unseres Beispiels. Diese wird in dem Programm nicht gebraucht.Oder was meintest du '? |
Re: auflisten + Graf
Zitat:
Delphi-Quellcode:
procedure TForm1.KoordinatenSystem_zeichnen;
var ySchritt, xSchritt, i: integer; begin // Ok Ziel ist es 5 Teilstriche auf der X und Y Achse darzustellen. // Dafür habe ich die Zeilen mal neu geordnet (es sind keine weiteren // dazugekommen) damit es vieleicht besser Verständlich ist. // zuerst zeichnen ich die Achsen an sich mit folgenden beiden Zeilen // X-Achse wird 10 Pixel über dem unteren Rand gezeichnet. Line_zeichnen(0,PaintBox1.Height-10, Paintbox1.Width, PaintBox1.Height-10); // Y-Achse wird 10 Pixel vom linken Rand gezeichnet. Line_zeichnen(10,0, 10, PaintBox1.Height); // Für meine 5 Teilstriche bleiben, damit sie gleichmäßig über die Strecke // verteilt sind jeweils PaintBox1-Höhe und Breite minus 10 Pixel. // Also ermittel ich mir die Weite der Strichabstände indem ich durch 5 Teile. xSchritt := trunc((PaintBox1.Width-10)/5); ySchritt := trunc((PaintBox1.Height-10)/5); // Nach der Ermittlung der Schrittweite für diese Striche muss ich sie nur noch // zeichnen. Der einfachheithalber nutze ich da eine For-Schleife. Bedenken muss // ich nur, dass ich jeweils bei Pixel 10 erst anfange zu zählen (erklärt die 10+...) for i := 1 to 5 do begin Line_zeichnen(10+i*xSchritt, PaintBox1.Height-15,10+i*xSchritt, PaintBox1.Height-5); Line_zeichnen(5,PaintBox1.Height-(+i*ySchritt), 15,PaintBox1.Height-(+i*ySchritt)); end; // Damit ich die Änderungen überhaupt sehen kann lass ich mir die Paintbox nochmal neu // zeichnen. PaintBox1.Refresh; end; |
Re: auflisten + Graf
Zitat:
![]() Also die E-Funktion in der Form f = a* e^b hat eine Asymptote nämlich die 0, dass heißt sie nächert sich wenn a>0 ist dieser im negativen Unendlichen an, erreicht sie aber nicht. Bei a<0 gilt dies fürs positive Unendliche. Die E-Funktion in der Angesprochenen Form kann nur 0 Werden, wenn a = 0 ist! Aber wenn a = 0 ist, dann sind alle Funktionswerte 0. Dies wird durch meine Berechnungen im Programm auch so wieder gespiegelt. Wenn du für y[0] den Startwert auf 0 setzt, heißt das es gibt mindestens einen Funktionswert, der 0 ist und da dies nur sein kann, wenn a = 0 ist, dann müssen auch alle anderen Funktionswerte für die E-Funktion 0 sein. Jetzt kam dein Einwurf, du hast ja aber nicht die E-Funktion, sondern willst sie nur nachstellen, aber frag dich selber, wäre dir eine Funktion lieber, die dir anzeigt, y[irgendein Wert] = 5000 wenn du weißt y[irgendein Wert] = 0? Also ich denke mal wir sind uns einig, wir erwarten Werte, die auch die E-Funktion bringen würde. Also sind meine Ausführungen im gemeinten Threat erstmal plausibel, denke ich, wenn ich mich dort auf die E-Funktion beziehe. MfG BAMatze |
Re: auflisten + Graf
Zitat:
Erst einmal möchte ich mich für deine Bemühungen bedanken, hoffentlich konntest du aus dem Thread auch etwas mitnehmen. Wenn die berechneten Werte des Programms stimmen, dann müssen meine Werte falsch sein, wobei ich keine Fehler finden konnte. Ich habe die Funktion y'(t)=k*y(t) schon exakt gelöst, da kommt eine e-Funktion heraus, also hast du insofern recht. Mfg play |
Re: auflisten + Graf
Also ich würde erstmal immer meinem Handgerechneten vertrauen, weil du da weißt, was du gemacht hast. Bei meinem Programm, das ich dir geschickt hab, merkst du ja selber, dass ich mir nicht so sicher bin. Ich hab nur anhand der Betrachtungen versucht zu erklären, warum das Ergebnis eventuell plausibel sein könnte.
Wenn du andere Ergebnisse hast, dann ist denke ich vieleicht jetzt der Zeitpunkt, dass du diese mal hier angibst, dann kann ich mal schauen, was ich per Hand errechne. 4 Augen sehen bekannltich mehr als 2. |
Re: auflisten + Graf
Zitat:
![]() Hast du vielleicht einen Instant Messenger? das ist sicherlich etwas einfacher als hier immer zu schreiben. play |
Re: auflisten + Graf
Liste der Anhänge anzeigen (Anzahl: 1)
Also als erstes fällt mir auf, dass du Fehler in deinen Y-Werten hast. Ich hab das mal überprüft und denke du hast den Vorrang der Punktrechnung vor der Strichrechnung nicht beachtet, ist aber nicht so schlimm, haben das Problem ja erkannt.
Hier mal die Ergebnisse, dich ich für Y1 und Y2 per Hand erwarte: Anfangspunkt: P[t0 = 0,4; y0 = 0,2] Hier ist auch ein Fehler in deinem Bild, dort steht für Y1 = Y0 + h * k * Y0 für das 2. Y0 0,4 wobei das 0,2 sein sollte! Ich denke du setzt dort den Wert für t0 ein, was aber nicht das ist, was ich aus der Vorgabe nehme. Dort steht für y(t0) = k * y0 und das musst du denke ich dann auch so dort einsetzen. Hab hier mal die auführliche Rechnung aufgeschrieben. Y1 = Y0 + h * k * Y0 Y1 = 0,2 + (0,4 * 2 * 0,2) = 0,2 + 0,16 Y1 = 0,36 Y2 = Y1 + h * k * Y1 Y2 = 0,36 + (0,4 * 2 * 0,36) = 0,36 + 0,288 Y2 = 0,648 Wenn ich diese Änderungen beachte und die Werte auch eingeben, dann erhalte ich diese Werte auch von dem Programm, welches ich dir zur Verfügung gestellt habe. Im Anhang ist ein Bild, wo du die vom Programm berechneten Werte für Y1 und Y2 sehen kannst. Hab auch die Indexe angepasst, so dass es mit deinen Vorgaben übereinstimmt. PS.: Wenn ich das doch falsch verstanden habe und dort wirklich t und nicht y in der Formel stehen soll, dann musst du nur Bescheid sagen, dann kann ich das noch ändern. So habe ich das aber verstanden. MfG BAMatze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz