Autor |
Beitrag |
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Fr 27.01.12 11:56
Tranx hat folgendes geschrieben : | Diese Liste könnte man dann auf Abruf anzeigen lassen und sich die Konstante auswählen oder eine neue eingeben ....
Wichtige Konstanten wären m.M. nach c, g, Nl, k, R, Gamma, .... (siehe Tabellenbücher) |
Siehe die Funktionen const() und constinfo()
Ladung eines Aluminium(Al_13)-Kerns in Coulomb 1: 2: 3: 4: 5:
| > e=const('ElectronCharge') = 1.602 176 46E-19
> 13*e = 2.082 829 397 999 999 68E-18 |
(Man beachte auch das umdefinieren von "e" im "Work"-Context. Das wird man mit undef('e') wieder los)
Tranx hat folgendes geschrieben : | Auch wäre es sinnvoll, Groß-/Kleinschrift als Unterscheidung zu nehmen, denn in der Physik gibt es t als Symbol für die Zeit und T als Symbol für die Temperatur, oder v = Geschwindigkeit und V = Volumen .... |
Hm, stimmt. Wäre aber doof, wenn Variablen case-sensitive sind und Funktionsnamen nicht, also müsste ich die auch so machen. Und das wiederum wird etwas unpraktisch
@ delfiphan: hab deinen Auflösungs-Stack mal geklaut, funktioniert wunderbar. Beim nächsten mal also drin
EDIT: Beispiel für const()
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Mo 21.05.12 06:19
Törööö, es gibt mal wieder was neues
Das, was ich eigentlich für die V3 vorgesehen hatte ist nicht drin, dafür einige andere Sachen die ich nicht länger zurückhalten will (und die mal jemand testen muss  ).
Änderungen:
-wie von delfiphan vorgeschlagen werden rekursive Definitionen erkannt
-Stringverarbeitung: #123 wie in Delphi, auch: zahl=123, #zahl; Stringverkettung mit || (Oracle-SQL-Stil)
-Laden von CSV-Dateien in mehrdimensionale Listen
-Ausgeben (mehrdimensionaler) Listen im Logfenster mit table()
-hoffentlich weniger fehleranfälliger Modulus für große Zahlen (ist in bestimmten Fällen immernoch unerkennbar(!) falsch, aber die Grenze ist weiter oben. Alles mit weniger als 18 Stellen sollte jetzt okay sein, danach schlägt die Precision zu)
-Zufallszahlen (uniform) mit random()
- bucket(): Erstellen eines Häufigkeitshistogramms
-Funktionsplots und Listen-Diagramme. Potentiell sehr buggy, aber genau nach Handbuch benutzt sollte alles funktionieren.
-Korrekte Ergebnisse/Fehler für Div. durch Null (+/-Inf oder NaN) und logarithmen negativer Zahlen und 0 (NaN und -Inf)
Wichtig für Programmierer:
Nachdem ich das Problem endlich mal gelöst habe, steht der Code jetzt unter einer Dual-Lizenz, Kurzfassung: "Ohne Erlaubnis gar nichts" für kommerzielle Verwendung, MPL 2.0 für alles andere. Genaueres im Handbuch.
Todo:
-Min/Max auf Listen
-Listen als Syntaxfeature: blubb = {1,2,3}. Kreative Ideen für die Formulierung von Listenzugriff (Elementweise) gesucht! [] sind ja schon weg...
-Mindestparameteranzahl für Funktionen mit dynamischen Parametern, damit Fehler erkannt werden können
Downloadlink im ersten Beitrag ist aktualisiert.
Bonus für die die bis hierhin noch dabei sind:
Zum lesen 1: 2: 3: 4: 5: 6:
| ndist:= 1/(sqrt(2*pi)*sig) * exp(-0.5*((x-mu)/sig)^2) stndist:= ndist[mu=0] rgauss:= sqrt(-2*ln(random())) * sin(2*pi*random()) a = each(range(1,3000,1),x,rgauss) b = bucket(a, -6,6,23) show(l(listplot(b,style='bar',color='clRed',size=0.5),plot(stndist[sig=1]*1600,x,l(-3,3))),yrange=l(0,800)) |
Zum Als-ein-Stück-einfügen 1:
| ndist:= 1/(sqrt(2*pi)*sig) * exp(-0.5*((x-mu)/sig)^2), stndist:= ndist[mu=0], rgauss:= sqrt(-2*ln(random())) * sin(2*pi*random()), a = each(range(1,3000,1),x,rgauss), b = bucket(a, -6,6,23), show(l(listplot(b,style='bar',color='clRed',size=0.5),plot(stndist[sig=1]*1600,x,l(-3,3))),yrange=l(0,800)) | Zeigt einen Vergleich einer idealen Standardabweichung(Linie) mit den kumulierten Wahrscheinlichkeiten von 3000 Würfen eines Box-Muller-Zufallsgenerators, den ich neulich anderswo verbaut hab. Warum das nicht ohne Rechentricks passt ist mir nicht wirklich klar - rein logisch müsste die 1600 in der letzten Zeile eine 3000 sein. War an der Stelle aber egal, ich brauchte nur einen Generator der ungefähr normalverteilt ist, da hab ich das nicht weiter erforscht 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Sa 20.10.12 00:43
Hach ja, da ist mir wohl irgendwo die V4 hängen geblieben
Hier ist sie also, zusammen mit ein paar Ergänzungen, die ich heute noch gebaut hab.
Änderungen:
-AtomicUnit war um Faktor 1E6 zu groß
-Listen (endlich!):
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| > liste = {2,4,6,8,10,12} = {2, 4, 6, 8, 10, 12}
> liste@3 = 8
> liste@-2 = 10 |
-min(), max() für Listen
-b(), h(), o(): Kurzformen für Basiskonvertierung, erkennt automatisch ob nach oder von Dezimal konvertiert werden soll
-round(), verhält sich wie Delphi ROUNDTO
-Bugfixes, sollte jetzt mit XE aufwärts compilieren (und dann auch funktionieren)
Downloadlink wie immer im ersten Beitrag.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Für diesen Beitrag haben gedankt: BenBE, FinnO, Mathematiker
|
|
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1446
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Sa 20.10.12 09:14
Hallo Martok,
ich habe Dein Programm (endlich) getestet und kann nur sagen: sehr schön. Die Berechnungen funktionieren tadellos.
Natürlich habe ich aber einen Spezialwunsch. Die Gaußsche Normalverteilungsfunktion wäre vordefiniert noch schön. Sie wird doch ab und an benötigt.
Ich wollte für meine persönlichen Zwecke Dein Programm mit einer Funktion zum Abspeichern der Rechnung als Text versehen, scheidere aber an der Komponente TreeNT, die mein altes Delphi 5 nicht mag. Vielleicht könnte ein weiterer kleiner Schalter alle Berechnungen und Ergebnisse als txt speichern oder kopieren.
Außerdem bekomme ich in jeder Quelltextzeile die Meldung: Zeile zu lang (Mehr als 1023 Zeichen), kann also ohnehin nicht compilieren.
Vor einiger Zeit hattest Du geschrieben:
Martok hat folgendes geschrieben : | Meinst du, es gibt Leute die ein Handbuch lesen würden?  |
Ja, ich! Und da ist mir aufgefallen, dass mein Internet Explorer 8 die Umlaute Deines HTML-Textes sehr merkwürdig darstellt.
Martok hat folgendes geschrieben : | Ein komplettes CAS fällt da natürlich aus  |
Schade! Ich suche schon lange jemanden, der ein CAS in Delphi umsetzt.
Unabhängig von meinen kleinen "Meckereien" kann ich nur sagen: Pi gefällt mir.
Wenn es kein Geheimnis ist: Könntest Du verraten, wieso das Programm "Pi" heißt? Ich bin immer davon fasziniert, welche Beweggründe zur Namensgebung eines Programms führen.
Beste Grüße
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Sa 20.10.12 19:20
Moin!
Mathematiker hat folgendes geschrieben : | Ich wollte für meine persönlichen Zwecke Dein Programm mit einer Funktion zum Abspeichern der Rechnung als Text versehen, scheidere aber an der Komponente TreeNT, die mein altes Delphi 5 nicht mag. |
Aber die richtige Version hast du? Es gibt eine für D3-5 und eine für D6 aufwärts.
Mathematiker hat folgendes geschrieben : | Außerdem bekomme ich in jeder Quelltextzeile die Meldung: Zeile zu lang (Mehr als 1023 Zeichen), kann also ohnehin nicht compilieren.: |
Git richtig installiert? Ich glaube, die Fehlermeldung kommt, wenn die Dateien nur LF als Dateiende verwenden statt CRLF. Im Notfall alle in einem Texteditor öffnen und neu speichern.
Mathematiker hat folgendes geschrieben : | Martok hat folgendes geschrieben : | Meinst du, es gibt Leute die ein Handbuch lesen würden?  | Ja, ich! Und da ist mir aufgefallen, dass mein Internet Explorer 8 die Umlaute Deines HTML-Textes sehr merkwürdig darstellt. |
Ja, der IE ignoriert die Zeichensatzangabe für UTF-8 im XML-Kopf. Ich hab mal ein <meta> ergänzt.
Mathematiker hat folgendes geschrieben : | Vielleicht könnte ein weiterer kleiner Schalter alle Berechnungen und Ergebnisse als txt speichern oder kopieren. |
Also kopieren kannt du schon, das ist ein normales RichEdit. Kommt also ganz gewöhnliches RTF raus.
Wobei du damit wieder das ansprichst, was mich am Meisten stört... die Ein/Ausgabe. Allein, dass das zwei Controls sind (man also hin und her tabben kann) ist schon doof - das haben CASse schon richtig. Ich hab da immer mal mit Protected im RichEdit oder auch HTMLViewer experimentiert, aber so richtig zufriedenstellend war das alles nicht. Im Richedit ist auch die Eingabe-History etwas schwierig einzubinden. Mit Pfeiltasten geht grad noch, aber ein Dropdown ist da echt ein Problem.
Müsste man also eigentlich ein eigenes Control schreiben (da könnte man dann auch z.B. Diagramme als eingebettete Controls realisieren, das wäre dann gleich interaktiv), aber dafür dann Textselektion und sowas zu bauen... ne, das wollte ich mir noch nicht antun.
Wenn du natürlich mal Langeweile hast....
Mathematiker hat folgendes geschrieben : | Die Gaußsche Normalverteilungsfunktion wäre vordefiniert noch schön. Sie wird doch ab und an benötigt. |
Als verteilter Zufall (dann wäre mindestens Poisson auch mal noch wichtig) oder als Statistik auf Listen (also Stddev)? Letzteres ist nämlich einfach in Pi selbst programmiert, aber da ich "Lade Skript aus Datei" bis heute nicht von der Todo-Liste abgearbeitet hab, muss man sich den Ausdruck merken
Mathematiker hat folgendes geschrieben : | Wenn es kein Geheimnis ist: Könntest Du verraten, wieso das Programm "Pi" heißt? Ich bin immer davon fasziniert, welche Beweggründe zur Namensgebung eines Programms führen. |
Eine sehr gute Frage
Ich glaube, einen richtigen "Grund" gabs da gar nicht. Ich hatte etwas gesucht, was ich auf's Icon malen könnte. Und irgendwie ist pi ja schon das erste Symbol, was einem so zu Mathematik einfällt. Hat vielleicht auch damit zu tun, dass es die erste vordefinierte Konstante war  .
Übrigens, wer das mal braucht, hab die Behandlung grade im Divisions-Code wiedergefunden: \Infty = 1/0, \NegInfty = -1/0, NAN = 0/0
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Für diesen Beitrag haben gedankt: BenBE, Mathematiker
|
|
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1446
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Sa 20.10.12 19:54
Hallo Martok,
vielen Dank für die Hinweise.
Martok hat folgendes geschrieben : | Aber die richtige Version hast du? Es gibt eine für D3-5 und eine für D6 aufwärts. |
Natürlich hatte ich die falsche. Jetzt funktoniert es.
Martok hat folgendes geschrieben : | Ich hab mal ein <meta> ergänzt. |
Wunderbar. Das Handbuch wird jetzt im Internet Explorer korrekt angezeigt.
Martok hat folgendes geschrieben : | Müsste man also eigentlich ein eigenes Control schreiben (da könnte man dann auch z.B. Diagramme als eingebettete Controls realisieren, das wäre dann gleich interaktiv), aber dafür dann Textselektion und sowas zu bauen... ne, das wollte ich mir noch nicht antun.
Wenn du natürlich mal Langeweile hast....  |
Langeweile habe ich selten, aber was wichtiger ist, ich wüsste gar nicht, wie ich das anstellen soll. Es wird wohl nichts werden.
Beste Grüße
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Mi 24.10.12 01:26
Hi,
Mathematiker hat folgendes geschrieben : | Natürlich hatte ich die falsche. Jetzt funktoniert es. |
Kaum macht man's richtig, schon gehts
Mathematiker hat folgendes geschrieben : | Langeweile habe ich selten, aber was wichtiger ist, ich wüsste gar nicht, wie ich das anstellen soll. Es wird wohl nichts werden. |
Och schade
Was aber wirklich mal interessant (und weit weniger speziell) wäre: das Graphing-Zeugs "in schön". Ich hab da im Git schonmal etwas umgeräumt, aber die Skalierung z.B. haut ja noch nicht so wirklich stabil hin. Ich brauch das grade selber öfter, da ist mir das aufgefallen wie schlecht das eigentlich alles ist  Zoomen können wäre wirklich schön, aber so wird das nix.
ListPlots (die eigentlich eher XYPlots sind) sollte man vielleicht auch von Histogrammen trennen. Das würde ein paar Sachen erleichtern...
Vorschläge nehm ich da gerne entgegen. Gerne auch in Codeform
Grüße,
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1446
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Mi 24.10.12 16:43
Hallo Martok,
Martok hat folgendes geschrieben : | ... das Graphing-Zeugs "in schön". Ich hab da im Git schonmal etwas umgeräumt, aber die Skalierung z.B. haut ja noch nicht so wirklich stabil hin. ... Zoomen können wäre wirklich schön, aber so wird das nix. |
Bisher habe ich in "Pi" nur die Grafik für die Funktionen getestet. Sieht doch ganz gut aus.
Ich werde unter Open Source Projekte ein kleines Programm mit spezieller Unit veröffentlichen, mit der man schnell und einfach mathematische Standardfunktionen zeichnen kann, auch mit Zoom des Darstellungsintervalls und ein paar anderen Möglichkeiten.
Ich vermute, dass dies Dir nicht helfen wird, aber vielleicht nützt es anderen.
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: Martok
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Sa 03.11.12 20:48
Mit tatkräftigerideengebender Hilfe von FinnO und einem "joar, den Vorschlag hatte ich auch schon getippt und dann wieder aus dem Chat gelöscht" von Hidden gibt's jetzt schöne Diagramme, und damit eine neue Version. In den dazugekommenen Features ist eindeutig eine Tendenz, was daran liegt, dass ich aktuell Pi zur Auswertung der Messergebnisse für meine BA verwende.
Änderungen:
- Zeichensatz der documentation.html nochmal für den IE im <head> angegeben
- Round mit nur einem Parameter rundet auf ganze Zahlen
- Skripte zeilenweise ausführen mit Source(dateiname)
Falls das notwendig ist, wird die Erweiterung '.pi' automatisch angehangen; der angegebene Name hat aber immer Vorrang.
Kommentare mit ';' einleiten(wie ini-Dateien)
- CSVLoad gefixt, skip-Angaben>1 funktionieren jetzt
- SortBy(list,element,komparator) sortiert list nach den werten, die der komparator zurückgibt (siehe Beispiel in der Doku)
- NumDerive(list), "Ableitung" der (X,Y)-Liste nach Differenzenmethode, nimmt linearen Verlauf zwischen 2 Punkten an und legt den abgeleiteten Punkt in die Mitte zwischen 2 X-Werte
- ListAccess(@-Operator) bindet jetzt stark, d.h. list@3+1 tut jetzt das, was man denkt: Addition(ListAccess(list,3),1)
- Flatten() umbenannt in Hold() (expandiert nach wie vor eine Range in ein FixedList)
- neue Funktion Flatten(), tut jetzt das was sie in Mathematica tut (eine Ebene Listen auspacken)
- {} ist jetzt kein Syntaxfehler mehr, sondern eine leere Liste
Neu: ordentliche Diagramme!
- show()'s erster Parameter kann auch ein einzelnes <Plot>-Objekt sein (mehrere nach wie vor per Liste)
- listplot() gibt es nicht mehr, die Funktionalität wurde aufgeteilt in:
- histogram(list) zeichnet ein Histogramm/Bargraph mit Balken zentriert auf den X-Werten
- xyplot(list) zeichnet alles was man sonst aus x-y-Paaren machen kann
- Diagrammfenster haben jetzt ein Kontextmenü, in dem die Darstellung verändert werden kann
- direktes Kopieren der Ansicht als EMF
- Plot-Objekte haben eine neue Option Caption für die Diagrammlegende
- Diagramme können per "Rechteck aufziehen" gezoomt werden
Beispielgraph (png, 44.53 KB)
Was an dem zu beachten ist: der blaue Sinus stammt aus einer Funktion, die Ableitungen Cos und -Sin sind per numderive aus einer Wertetabelle erzeugt worden. Bei -Sin sieht man auch schön, wie das mit den Ableitungen läuft: vor dem ersten Schritt sind einfach keine Daten vorhanden  . Der absolute Fehler der 2. Ableitung gegen die Funktion -sin(x) ist übrigens irgendwo in der Größenordnung von 1E-4.
Downloadlink wie immer im ersten Beitrag.
PS: 111 Commits im Repository 
Einloggen, um Attachments anzusehen!
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Für diesen Beitrag haben gedankt: FinnO
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: So 11.11.12 19:39
Wie bereits öfter angedroht, hab ich mich mal hingesetzt und eine kurze Dokumentation zum Codeaufbau geschrieben.
Das ganze findet sich hier, ich werde den Link auch im ersten Beitrag noch ergänzen.
Ich hoffe mal, ich hab nicht allzu viel vergessen 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1446
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: So 11.11.12 20:47
Hallo Martok,
Martok hat folgendes geschrieben : | Wie bereits öfter angedroht, hab ich mich mal hingesetzt und eine kurze Dokumentation zum Codeaufbau geschrieben. |
Danke. Ich habe intensiv Deinen Text gelesen und kann nur staunen. Ich verstehe nämlich überhaupt nichts.  Z.B.
Zitat: | Implementiert ist das ganze über Interfaces, um Referenzzählung zu bekommen. Dieses Interface wird dann von Klassen implementiert, die in der Konstante Expressions definiert sind. |
Du musst mir das aber hier nicht erklären. Es wäre verlorene Mühe. Bis ich soweit bin, dass zu verstehen, dauert es noch sehr sehr lange.
Was macht das Termzusammenfassen?  Ich habe gepasst.
Beste Grüße
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: So 11.11.12 20:53
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
FinnO
      
Beiträge: 1329
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: So 11.11.12 21:26
Martok hat folgendes geschrieben : | Das verstehst du, wenn du meinen aus Zeitmangel unveröffentlichten Artikel über Interfaces gelesen hast... |
Also... wenigstens in Auszügen verstehst du das dann
LG!
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Mi 13.02.13 21:22
Ich darf Verkünden: es ist nix passiert
Doch, eins: Github hat die Downloads abgeschafft, das heißt: die aktuellste Binary gibts jeweils nur noch im ersten Beitrag als Anhang. Schade.
Als "Zwischenstand" gibt's jetzt die Version 6, mit folgenden Änderungen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| add: Panning in Graphs, fix some UI stuff add: graph tool 'read value' add: Step(), Sign() chg: replace TreeNT with standard TTreeView add: directly save EMF from Graph display add: GCD(), LCM(), Fraction() fix: extreme zoom in graphs add: basic statistics with Gaussians (Package Statistics) |
Für Details verweise ich auf die Dokumentation.
Was ich als nächstes mache, ist noch nicht klar. Eventuell passiert hier auch noch länger nix, aber dieses Release war erstmal überfällig.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Sa 29.06.13 00:00
Martok hat folgendes geschrieben : | Was ich als nächstes mache, ist noch nicht klar. Eventuell passiert hier auch noch länger nix, aber dieses Release war erstmal überfällig. |
Ich bin ziemlich gut darin, (In-)Aktivität vorherzusagen
In den letzten 2 Wochen habe ich mich damit befasst, die komplette innere Struktur neu zu entwickeln. Da das ja mindestens doppelt so gut werden sollte, passiert das ganze in einem Entwicklungszweig namens "tau", und einiges hat sich da schon getan.
Relativ offensichtlich am Anfang ist eine striktere Trennung des Rechenkernels von der Oberfläche und von seinen Funtionspackages. Das macht es einfacher, den Kernel (ich suche übrigens noch einen schönen Codenamen, sowas haben die doch alle  ) in anderen Projekten zu verwenden. Unter Anderem gibt es jetzt eine Kommandozeilenversion tau.exe (logischerweise ohne die Graphing-Funktionen), die allerdings eher zum Testen des neuen Codes diente und vermutlich nicht wirklich weiterentwickelt werden wird. Wird sich zeigen.
Wichtiger ist allerdings die erwähnte neue Struktur, die (unter Verwendung von Dingen die ich in den letzten Jahren beim Lesen diverser Paper und Blogbeiträge der Entwickler von MuPAD und Mathematica gelernt habe) jetzt komplett auf einer möglichst geringen Anzahl verschiedener Elemente basiert. So gibt es jetzt nur noch 4 Typen von Expressions (genannt Primitiven):
- Werte (auch Listen sind Werte)
- symbolische Referenzen
- Funktionsaufrufe
- Subkontextaufrufe
Sämtliche Operatoren werden über Zuordnungstabellen auf Funktionen abgebildet. So ist z.b. der Ausdruck 1+2+3+4 identisch zu _plus(1,2,3,4). Diverse Optionen stellen dabei sicher, dass nur sinnvolle Aufrufe gebildet werden können. Dies passiert direkt beim Parsen der Ausdrücke nach der Zerlegung in Tokens (der einzige Teil, der gleich geblieben ist), so dass danach der komplette Ausdruck in einen Baum von diesen 4 Primitiven überführt ist oder eventuelle Fehler bereits erkannt wurden.
Da jetzt symbolische Referenzen ein echtes Ausdruckselement sind, ist es auch einfacher, symbolische Aktionen zu entwickeln (nun ja, wie "einfach" das halt sein kann) und bei der Gelegenheit ist auch die Unterscheidung zwischen := / _define() und = / _assign() nachvollziehbarer geworden. Zusammen mit hold() bedeutet das, dass jetzt Ausdrücke an sich transportiert werden können, ohne eine ungewollte Auswertung zu "riskieren".
Auch neu (bzw. aktuell Work-in-Progress) ist (realisiert über einen Datentyp für das Primitive Objekt "Wert", so wie String oder Liste auch) das Rechnen mit phyiskalischen Einheiten/Dimensionen (Hände hoch: wer hier weiß, auf welch' abenteuerliche Art das °C definiert ist?). Noch funktioniert das nur sehr rudimentär und die komplette Algebra ignoriert Einheiten vollständig, allerdings sollten zumindest die Grundrechenarten recht einfach brauchbar umsetzbar sein. Auch Konstanten können dann in ihren echten Einheiten definiert werden (Elementarladung = 1.602e-19 C) bzw. werden direkt überflüssig (Lichtjahr, Parsec...).
Neu auf der TODO-Liste ist eine sinnvollere Dokumentation der Funktionen, am Besten in einem standardisierten Format im Quellcode selbst. PasDoc ist hier der offensichtliche Ansatz, ist allerdings nur schwierig anpassbar. Wird also wohl auf eine Eigenentwicklung hinauslaufen. Eine Einbindung in das Programm (Code Hint) wäre natürlich optimal, allerdings habe ich noch keine Ahnung wie
Binaries vom aktuellen Stand gibt es erstmal nur im Anhang dieses Beitrags (oder zum selbstcompilieren im Git, es werden keine Extrakomponenten mehr benötigt), da das Ganze kein Release ist sondern ich nur auf ein wenig Feedback hoffe. Die Dokumentation ist nicht aktuell, allerdings sollte sich nicht viel geändert haben. Auch das ist Teil des Tests  Undokumentiere Funktionen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| clone(expr) erzeugt eine Kopie der Expression subs(expr, {var:=newexpr,var2=newVal}) wendet die Definitionen(Zuweisungen) in der Liste auf expr an. expr wird evaluiert, also ggf. in hold() verpacken unit(value,'unitspec') erzeugt eine Zahl mit Dimension convert(unitval, 'unitspec') rechnet eine Zahl von einer Einheit in eine andere um, sofern das möglich ist |
Oh und: am 9.7. wird Pi 2 Jahre alt
Wer also vorher noch das "Ich war dabei"-Zertifikat haben will: Patches, GitHub-Pull-Requests oder auch Blobs of Code sind immer gern gesehen und werden passend vercredited
[/WallOfText]
Einloggen, um Attachments anzusehen!
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Fr 16.08.13 06:52
Moin!
Es ist mal wieder soweit, die "Periode Größerer Aktivität" neigt sich dem Ende zu, es gibt also ein Release
Was sich intern getan hat, steht im Beitrag hier drüber. Die Kommandozeilenversion liefere ich tatsächlich mit aus, aber wirlich gefplegt würde ich die nicht nennen. Ist auch nicht dokumentiert, verhält sich aber nicht weiter unerwartet für jemand der vor 20 Jahren schon Computer hatte
Das mit den Namen ist jetzt so: der Kernel heißt Tau, die GUI heißt weiterhin Pi. Minimale Umgewöhnung und so  Genau deswegen hab ich mich auch gegen die Versionsnummer Tau entschieden und so folgt auf V6 tatsächlich ganz gewöhnlich V7. Solche Spielereien rächen sich spätestens nach 5-6 Versionen, TeX demonstriert das ja sehr schön.
Dinge, die sonst noch so passiert sind:
- Massive Beschleunigung von Funktionsaufrufen, merkt man gerade bei Diagrammen
- Binomialkoeffizient (n über k) und Anzahl geordneter Permutationen n Pk
- Einheitenhandling (das meines Wissens besser ist als alles was große CASse ab Werk bieten, Mathematica9 kommt über das WolframAlpha-Interface ran, aber das wars auch  )
- Timing: AbsoluteTime
- Trunc, Ceil, Floor
- Anfänge von symbolischer Manipulation: Subst
- Erweiterung der Selbsttests
- Fixes rund um fiese Eingeschaften von Extended
Als bessere Todo-Liste verwende ich jetzt die Github-Issues (Link auch im ersten Beitrag), wer mag, kann da gerne Dinge reinwerfen. Da kann man auch Pull-Requests anhängen
Der Hacking Guide ist noch nicht aktualisiert, der neue Code sollte sich allerdings wesentlich einfacher lesen lassen. Er ist jedenfalls kürzer - im Endeffekt ist sogar die Binary 40kb kleiner geworden, obwohl sie jetzt viel mehr kann. Mal sehen wann ich das mache - hat feedbackbedingt eher geringe Priorität.
Downloads im ersten Beitrag.
Oh und: There May Be Bugs 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: Do 17.10.13 16:31
Martok hat folgendes geschrieben : | Der Hacking Guide ist noch nicht aktualisiert, der neue Code sollte sich allerdings wesentlich einfacher lesen lassen. |
Bin grade dabei. Ist grade in einem etwas seltsamen Zustand des "nicht-ganz-richtig-seins", aber die Struktur stimmt schon wieder.
Ich wär euch sehr verbunden, wenn ihr mal so in den Raum werft, wo die größten Fragezeichen auf der Stirn erscheinen. Packages ist soweit klar, aber das ist jetzt auch etwas einfacher geworden.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: So 06.07.14 21:12
Es gibt mal wieder was Neues:
- diverse Bugfixes
- Neue Funktion: ND(), numerische Ableitung da/db auf Datentupeln {a,b)}
- Grundlagen symbolischer Manipulation: Match, Pattern, Rule, Replace (verhalten sich eher wie MuPAD, weniger wie Mathematica)
- Source() kann auch ganze Skripte laden; Ausdruckstrenner ist § (das sieht weniger komisch aus als es klingt
)
- Schon wieder Änderungen and Hold() und Eval(), jetzt machts wirklich Sinn
- Neue Funktion: Splice(), Zusammenführen von 2 Listen zu Tupeln
- Neue Funktion: Glob(), Dateilistings einsammeln
- UI-Änderung: Diagramme in Pi landen jetzt in Tabs, können aber undocked werden
- UI-Änderung: das Ausdrucks-Eingabecontrol ist jetzt (automatisch) mehrzeilig und hat eine bessere History-Ansicht
- Mehr Einheiten, u.a. dyn, lbf, Bits/Bytes und binäre Prefixe (ki-, Mi- etc.) und Angström
Außerdem ein massiver Rewrite des Ausdrucksbaums; Operatoren sind jetzt Aliase für Funktionen. Das macht sehr vieles intern einfacher. Wer sehen will, was das genau bedeutet bekommt von ?() und ??() jetzt dazu passende ExpressionTree-Infos.
Auch das Einheiten/Datentypen-Handling ist neu. Zahlen sind nicht mehr immer Extended sondern können auch Int64 sein (und bleiben das auch, wenn die Funktion das beachtet). Das macht bestimmte ganzzahlarithmetische Dinge wesentlich einfacher.
Neuer Download ist im ersten Beitrag. Neuer Screenshot auch, wer mir sagen kann was ich dort berechne kriegt einen Keks (Selbstabholer) 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1446
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: So 06.07.14 21:47
Hallo,
Martok hat folgendes geschrieben : | ... wer mir sagen kann was ich dort berechne kriegt einen Keks (Selbstabholer)  |
Zuerst den Umfang der Erdbahn (Astronomische Einheit * 2pi) und anschließend die mittlere Bahngeschwindigkeit der Erde auf Ihrer Umlaufbahn.
Wo ist mein Keks?
Beste Grüße
Mathematiker
Nachtrag: Diff funktioniert irgendwie nicht. Ich bekomme die Meldung
Zitat: | EFOpenError: Datei ...\rules_diff.pi kann nicht geöffnet werden. Das System kann die angegebene Datei nicht finden
|
Was mache ich falsch?
|
|
Martok 
      
Beiträge: 3658
Erhaltene Danke: 604
Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
|
Verfasst: So 06.07.14 23:25
Mathematiker hat folgendes geschrieben : | Zuerst den Umfang der Erdbahn (Astronomische Einheit * 2pi) und anschließend die mittlere Bahngeschwindigkeit der Erde auf Ihrer Umlaufbahn. |
Korrekt
Wobei ich mir nicht sicher bin, ob da ein julianisches Jahr richtig war. War es?
Komm halt vorbei und hol ihn dir  Alternativ hätten wir hier auch einen Teekeks
Mathematiker hat folgendes geschrieben : | Nachtrag: Diff funktioniert irgendwie nicht. Was mache ich falsch? |
Nix, die Datei fehlt im Archiv. Das funktioniert eh nicht wirklich
Prinzipiell findest du die hier, aber der Patternmatcher kann noch keine Constraints (einer der Gründe warum dieses Release so lange rumlag; hatte es jetzt dach gemacht, da der Rest schon ganz nett ist), das wird also nicht laufen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
|