AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

auflisten + Graf

Ein Thema von playa2kk · begonnen am 17. Mär 2009 · letzter Beitrag vom 22. Mär 2009
Antwort Antwort
Seite 4 von 6   « Erste     234 56      
playa2kkk

Registriert seit: 21. Mär 2009
9 Beiträge
 
#31

Re: auflisten + Graf

  Alt 21. Mär 2009, 09:59
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
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#32

Re: auflisten + Graf

  Alt 21. Mär 2009, 10:12
Zitat von playa2kkk:
Was macht array of double genau?
das erstellt ein dynamisches eindimensionales array vom Datentyp double (8 Byte Fließkommazahl).
Die Dimensionierung erfolgt durch setlength(), wobei das Array 0-basierte Indizies verwendet.

array [0..3] of integer; erstellt ein statisches array (Elemente 0 bis 3) mit Integer-Elementen.

HTH Frank
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#33

Re: auflisten + Graf

  Alt 21. Mär 2009, 10:39
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
  Mit Zitat antworten Zitat
playa2kkk

Registriert seit: 21. Mär 2009
9 Beiträge
 
#34

Re: auflisten + Graf

  Alt 21. Mär 2009, 10:48
Zitat von BAMatze:
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
Bei mir herrscht zur ZEit Verwirrung im Kopf, weiß mich grad nicht zuzuordnen.
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 '?
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#35

Re: auflisten + Graf

  Alt 21. Mär 2009, 10:52
Zitat:
Die Prozedur für die Punktberechnung habe ich komplett verstanden, bei der Zeichnung des Koordinatensystems gibt es bei mir Verständnisprobleme.
Könntest du mir, falls du Zeit und Lust hast, mir die Prozedur Schritt für Schritt erklären?
Ok hier noch die Procedure mit den Erklärungen:

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;
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#36

Re: auflisten + Graf

  Alt 21. Mär 2009, 11:04
Zitat von playa2kkk:
Bei mir herrscht zur ZEit Verwirrung im Kopf, weiß mich grad nicht zuzuordnen.
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 '?
Ok ich versuche es nochmal zu erklären. Habe dir hier auch einen Link zu Wiki bereitgestellt, damit du dir auch noch die restlichen Informationen holen kannst, die du über diese Funktion wissen musst. Das Wissen über die Funktion, die du eigentlich darstellen willst, ist unbedingt nötig, wenn du dein Programm wirklich auf Plausibilität prüfen willst.

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
  Mit Zitat antworten Zitat
playa2kkk

Registriert seit: 21. Mär 2009
9 Beiträge
 
#37

Re: auflisten + Graf

  Alt 21. Mär 2009, 21:04
Zitat von BAMatze:
Zitat von playa2kkk:
Bei mir herrscht zur ZEit Verwirrung im Kopf, weiß mich grad nicht zuzuordnen.
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 '?
Ok ich versuche es nochmal zu erklären. Habe dir hier auch einen Link zu Wiki bereitgestellt, damit du dir auch noch die restlichen Informationen holen kannst, die du über diese Funktion wissen musst. Das Wissen über die Funktion, die du eigentlich darstellen willst, ist unbedingt nötig, wenn du dein Programm wirklich auf Plausibilität prüfen willst.

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

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
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#38

Re: auflisten + Graf

  Alt 21. Mär 2009, 21:12
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.
  Mit Zitat antworten Zitat
playa2kkk

Registriert seit: 21. Mär 2009
9 Beiträge
 
#39

Re: auflisten + Graf

  Alt 21. Mär 2009, 22:37
Zitat von BAMatze:
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.
http://img19.imageshack.us/img19/5302/euler.jpg

Hast du vielleicht einen Instant Messenger?
das ist sicherlich etwas einfacher als hier immer zu schreiben.

play
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#40

Re: auflisten + Graf

  Alt 21. Mär 2009, 23:33
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
Miniaturansicht angehängter Grafiken
e-funk_470.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz