Zitat von
playa2kkk:
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
Also bei der Rechnung bin ich mir nicht 100% sicher, ob die richtig ist. Ich habe mich an deine Bilder und Erklärungen gehalten, so gut es geht. Ich denke die sachliche Richtigkeit zu prüfen, kann nur deine Aufgabe sein, dies zu klären eventuell mit deinem Lehrer oder so. Desweiteren zu dem Array of Double: Wenn ich ein Array dynamisch erzeuge, sagen wir mit 10 Stellen, dann erzeugt der Rechner für mich ein Array vom Index 0 bis 9. Ich lasse in der Schleife (wenn du dir mal vorstellst n=10 also die Anzahl) von 1 bis 9 laufen:
for j:=1 to n-1 do ...
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.
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