Autor Beitrag
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 17.11.12 01:06 
Hallo,
durch die vielen Checkboxen wurde es langsam unübersichtlich. Deshalb habe ich die Sonderfunktionen f(-x), -f(x), usw. in das Menü ausgelagert. Je Menüpunkt wird auch erklärt, welche Aktion mit dem Originalgraphen dann durchgeführt wird.
Zusätzlich sind vier Menüpunkte enthalten, die den Einfluss des Parameters P auf das Kurvenbild demonstrieren, auch wenn in der Funktionsgleichung kein P enthalten ist.
Ich denke, dass es so etwas besser ist.

In der Revision 21 wird zusätzlich eine Funktionsschar der ersten Funktion gezeichnet. Dazu wird der Parameter P so lange mit dem Wert d= erhöht, bis er die Größe des ebenfalls eingebbaren Parameters Q erreicht oder überschreitet.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 21.11.12 20:35 
Hallo,
heute noch einmal eine Änderung am Funktionsprogramm.
Die Einstellmöglichkeiten für die Darstellung des Koordinatensystems habe ich ebenfalls in das Menü ausgelagert. Damit dürfte das rechte Teilfenster wieder etwas übersichtlicher werden.
Außerdem kann man jetzt außer der 1. auch die 2.Ableitung analytisch als Funktionsterme bestimmen.

Weitere Änderungen, u.a. eine Wertetabelle inkl. Anstiege für verschiedene x-Werte, werden in einigen Tagen folgen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 29.11.12 22:34 
Hallo,
bevor ab morgen Abend alle in der EE versuchen, Adventsrätsel zu lösen :wink: , komme ich noch einmal mit einer Erweiterung des Funktionsprogramms.

Wird eine Ergebnisliste angezeigt, so kann über den Auswahlpunkt "Wertetabelle" zusätzlich eine solche angezeigt werden. Start-, Endwert und Abszissenabstand wird aus von-bis-Delta entnommen. Neben den Funktionswerten zeigt die Tabelle auch die 1.Ableitungswerte.

Ein kleines programmtechnisches Problem habe ich. Wird die Wertetabelle sehr lang, müsste die Memobox eigentlich einen vertikalen Rollbalken bekommen. Immer möchte ich ihn nicht zuschalten, da er mir ganz einfach "optisch" nicht gefällt.

Wie kann man herausbekommen, ob so ein Rollbalken notwendig ist? Ab einer bestimmten Zeilenzahl ihn zuzuschalten ist nicht günstig, da ja das Fenster und somit die Memobox unterschiedlich hoch sein können.
Anders gefragt: Kann man irgendwie ausrechnen, wie viele Zeilen in einer Memo sichtbar sind? :nixweiss:

Beste Grüße
Mathematiker

Nachtrag:
ausblenden Delphi-Quelltext
1:
Zeilenzahl := Memo.height div Memo.font.size					

funktioniert nicht, da zwischen den Zeilen ein Abstand ist.
Auch wenn ich eine Variable abstand = 1, 2, 3, ... addiere,
ausblenden Delphi-Quelltext
1:
Zeilenzahl := Memo.height div (Memo.font.size + abstand)					

ergibt es nicht die korrekte Zeilenzahl. Entweder das Ergebnis ist zu groß oder bei größerem Wert von abstand zu klein.

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 29.11.12 23:34 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 30.11.12 00:17 
Hallo Frühlingsrolle,
danke für die Antwort.

Ich habe es ausprobiert, bringt aber leider nicht das Gewünschte.
Bei jedem Aufruf zeigt die Memo nun abwechselnd beide Rollbalken oder nur den vertikalen, gleichgültig, ob die Zeilenzahl nun einen Rollbalken braucht oder nicht, d.h., ich habe z.B. den vertikalen aber auch beide Rollbalken, wenn nur 5 Zeilen ohne Zeilenumbruch in der Memo stehen.

Ich muss vielleicht noch sagen, dass die Memo über
ausblenden Delphi-Quelltext
1:
Memo.lines.assign(ergebnisliste)					

mit einer Stringliste verknüpft wird, die aus einzelnen, relativ kurzen Strings besteht. Ein Umbruch tritt deshalb i.A. nicht auf.
Dennoch, nochmals Danke.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 30.11.12 11:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 30.11.12 12:01 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde den Code von oben im FormCreate aufrufen, dann klappt das auch mit den Balken.

Ich hab's probiert und, wie zu erwarten, funktioniert es nicht. Das Memo hat dann immer zwei Scrollbars, gleichgültig, wie viele Zeilen in ihr sind.
Da die Anzeige der vertikalen Scrollbar von der Zeilenzahl abhängig sein soll, kann in der FormCreate kaum die richtige Wirkung erzielt werden. Zum Zeitpunkt des Aufrufens der FormCreate ist die Memo ja noch leer.

Ich denke, der beste Weg müsste über die Berechnung der maximal sichtbaren Zeilenzahl in der Memo gehen.

Beste Grüße
Mathematiker

Nachtrag: Ich hab's gefunden. Bei meiner gewählten Schriftgröße von Verdana 8 ist der Zwischenraum gleich 5. Wenn ich berücksichtige, dass meine Memo "mergebnis" einen Rand hat (das hatte ich bis jetzt vergessen :autsch: ), bekomme ich mit
ausblenden Delphi-Quelltext
1:
mergebnis.clientheight div (mergebnis.font.size+5)					

die Anzahl der sichtbaren Zeilen. :zustimm:

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 23.12.12 13:30 
Hallo,
kurz vor Weihnachten habe ich noch einige Änderungen am Funktionsprogramm durchgeführt.

Die wesentlichste Erweiterung ist die Möglichkeit, die Funktionsgrafik wahlweise als BMP-, GIF- oder Vektorgrafikdatei zu speichern. Die Vektorgrafik ist jetzt auf "erweitert" umgestellt.
Weitere Veränderungen betreffen neue Zusatzfunktionen und interne Verbesserungen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 23.12.12 19:38 
Hallo Mathematiker, ich sehe gerade im Beitrage darüber, daß Du Schwierigkeiten ha(tte)st, etwas im FormCreate aufzurufen.

Vieles ist in jener Prozedur noch nicht (vollständig) initialisiert. Entweder versuchst Du es mit einer anderen Prozedur, die bei Programmstart (nur dann?) ausgelöst, siehe hier, oder das Zauberwort heißt: "one shot timer". Also, ein Timer wird in FormCreate gepackt, Schußfrequenz ("Kadenz") auf Minimum (1 ms) gestellt, das reicht nach meiner Erfahrung, und beim ersten Schuß wird er deaktiviert ("diabled") und tut dann das, was Dir FormCreate verweigerte.

Schöne Weihnachten!


Zuletzt bearbeitet von Delphi-Laie am Sa 29.10.16 10:17, insgesamt 3-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 23.12.12 20:06 
Ein Timer ist dafür nicht wirklich geeignet, besser ist es sich selbst einfach eine Windows Message zu schicken. Dann muss man nicht extra eine Komponente erstellen. Und im Grunde passiert ohnehin das gleiche, denn ein Timer funktioniert ja auch nur über eine WM_TIMER Botschaft.

Für diesen Beitrag haben gedankt: Delphi-Laie
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 23.12.12 20:21 
Hallo user profile iconDelphi-Laie,
Hallo user profile iconjaenicke,
vielen Dank für die Hinweise.
Das Problem war nur entstanden, da user profile iconFrühlingsrolle einen Vorschlag für die Rollbalken meiner Memo hatte.

Die Schwierigkeit mit den anzuzeigenden Rollbalken konnte ich ja anders lösen (siehe oben), zumal erst während der Ausführung der Berechnung entschieden werden muss, ob der vertikale Rollbalken notwendig ist.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: So 23.12.12 21:36 
Also, allein schon die syntaktische Ableitung (ich hoffe, das ist der richtige Begriff, denn ich bin kein Mathematiker) ist eine Wucht. Selbst schwierige Funktionen kann das Programm richtig ableiten. Alle Achtung. Muss mir mal in Ruhe ansehen, wie das gemacht wurde.

Wünsche Dir ein gesegnetes Weihnachtsfest.

Gunther

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 23.12.12 21:54 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Also, allein schon die syntaktische Ableitung (ich hoffe, das ist der richtige Begriff, denn ich bin kein Mathematiker)
Das nennt sich symbolische Ableitung als Abgrenzung zur numerischen Ableitung.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 24.12.12 10:49 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ein Timer ist dafür nicht wirklich geeignet, besser ist es sich selbst einfach eine Windows Message zu schicken. Dann muss man nicht extra eine Komponente erstellen. Und im Grunde passiert ohnehin das gleiche, denn ein Timer funktioniert ja auch nur über eine WM_TIMER Botschaft.


Hallo jaenicke, wärst Du um ein paar Codezeilen, die das demonstrieren, nicht verlegen, bitte?

Ich kenne das nur mit dem Timer, z.B. auch von himitsu in der delphipraxis empfohlen, und der ist sicher eine Größe unter den Delphiprogrammierern.

Danke im voraus und schöne Weihnachten auch Dir!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 24.12.12 15:42 
So aus dem Kopf:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
const
  WM_AFTERSHOW = WM_USER + 1454;

type
  TMyForm = class(TForm)
  protected
    procedure WmAfterShow(var Msg: TMessage); message WM_AFTERSHOW;
  end;

// ...

procedure TMyForm.WmAfterShow(var Msg: TMessage);
begin
  // tu was nach dem Start
end;

// und in FormShow:
PostMessage(Handle, WM_AFTERSHOW, 00);


Zuletzt bearbeitet von jaenicke am Di 25.12.12 21:43, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Delphi-Laie
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Di 25.12.12 12:55 
Hallo jaenicke,
für das Funktionsprogramm brauche ich es zwar nicht, aber es interessiert mich allgemein.
Dein Quelltext
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
// und in FormShow:
PostMessage(Handle, WM_AFTERSTART, 00);

sieht vor, in FormShow die Nachricht zu senden.
Wird diese dann jedesmal, wenn das Formular aktiv wird, gesendet oder nur genau einmal durch die Nachricht WM_AFTERSTART?
Wie erkennt das Programm, dass das Formular erstmals angezeigt bzw. nur neu gezeichnet wird?

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 25.12.12 21:44 
Ich habe die Bezeichnung mal in after show geändert um die Funktion zu verdeutlichen. Wenn man das Formular mit z.B. Show und Hide oder Visible (dein eigener Code eben) mehrfach anzeigt, wird auch das Ereignis mehrfach ausgeführt. Minimieren und Wiederherstellen oder so (alles was der User ohne Quelltext von dir machen kann) löst OnShow hingegen nicht erneut aus.

Für diesen Beitrag haben gedankt: Mathematiker
Anika
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30
Erhaltene Danke: 2

Windows 7
Delphi 7
BeitragVerfasst: So 13.01.13 23:30 
Guten Abend,
ich denke einen Fehler gefunden zu haben.
wenn ich den Punkt A anzeige und automatisch verschieben lassen will, passiert nichts. Erst wenn ich das Verschieben beende sehe ich die Änderung.
Mit dem Punkt B geht es aber.

Anika

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mo 14.01.13 11:11 
Hallo Anika,
user profile iconAnika hat folgendes geschrieben Zum zitierten Posting springen:
ich denke einen Fehler gefunden zu haben.

Entschuldigung und Danke für den Hinweis. Das war wieder ein typischer Fehler meinerseits. :autsch:

Bei der Erweiterung des Programms um die Verschiebung von Punkt B ist mir ein Befehl "abhanden" gekommen. In der Revision 25 ist es wieder richtig.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein

Für diesen Beitrag haben gedankt: Anika
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mo 22.04.13 15:43 
Hallo,
durch user profile iconDelphi-Laie (Danke!) wurde ich auf einen interessanten Beitrag aufmerksam gemacht: www.luschny.de/math/...dsGammaFunction.html

Daraufhin habe ich den Funktionsinterpreter des Programms zur Funktionsdarstellung und -untersuchung erweitert.
Jetzt können folgende Funktionen, außer den Grundoperationen +,-,*,/,^ in der Funktionsgleichung verwendet werden:
ausblenden Quelltext
1:
2:
3:
4:
5:
SQR SQRT ABS INT SGN FRAC HEAVISIDE
EXP LN LG LD
SIN COS TAN COT SEC CSC ARCSIN ARCCOS ARCTAN ARCCOT ARCSEC
SINH COSH TANH ARSINH ARCOSH ARTANH 
GAMMA GAUSS DIGAMMA

Sollte noch etwas Interessantes fehlen, bitte ich um einen kurzen Hinweis.

Soll die Hardamardsche Gamma-Funktion aus dem genannten Artikel gezeichnet werden, ist einfach
(DIGAMMA(1-X/2)-DIGAMMA(1/2-X/2))/(2*GAMMA(1-X))
als Term einzutragen, für die Luschny-Funktion
GAMMA(X+1)*(1-SIN(PI*X)/(PI*X)*(-1/2+X/2*(DIGAMMA(X/2+1/2)-DIGAMMA(X/2))))
allerdings mit einer "hässlichen" Unstetigkeit bei 0.
Beide Funktionen haben mit Schulmathematik natürlich absolut nichts zu tun, aber was soll's ...

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein