mikrocontroller.net

Forum: PC-Programmierung Mathefunktion einscannen und in Code konvertieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mad Max (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die App Microsoft Math kann mathematische Formeln mit OCR einscannen und 
korrekt darstellen und auch ausrechnen. Mein Wunsch ist aber dass man 
die mathematische Formeln aus Büchern oder PDF in C++ oder in 
Python-Code automatisch umwandeln kann. Gibt es diese Möglichkeit?

Es muss keine App sein, kann auch eine PC-Software sein.

von cppbert3 (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Ich kenne leider keine, kann mir aber auch nicht vorstellen das so was 
sinnvoll ist - es gibt x (hundert) Wege (iterative,recursiv,...) einen 
mathematischen Algoritmus in Code aus zu druecken, was bringt mir der 
Code wenn die Software andere Preferenzen hat als meine Anforderung 
bedingt? Mit wie viel Parametern sollte die Codegenerierung 
beeinflussbar sein?

Bei der reinen Lösung eines mathematischen Problems gibt es eher selten 
eine unüberschaubare Anzahl an technischen Umsetzungen des wegen ist 
dein Eingangsbeispiel "einfacher"

Ausserdem: für Trivialalgorithmen braucht man meistens keinen Generator 
und die komplexen haben einfach zu viel Umsezungsvarianten als das es 
sinn machen würde

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten:
Darstellen         Am Bildschirm darstellen
Ausschneiden       Mit Alt+Druck ins Clip Board verfrachten
Mit Paint putzen   Neu + Ctrl+V einfügen und alles was stört abschneiden
Math               Das Bild zum Futter vorwerfen

Alles mit Bordmitteln und schrecklich kompliziert;-)

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
@Mad Max

Ich Vergaß:
Wenn Du den Kram nicht Darstellen kannst: Ein/Dein Handy ersetzt einen 
Scanner.

von A. S. (rava)


Bewertung
1 lesenswert
nicht lesenswert
warum möchtest du die Formel nicht selbst coden? das scheint mir noch 
das spannendste am Programmieren zu sein...

stimme mit cppbert3 überein. Viele randbedingungen stehen nicht in der 
Gleichung, wenn ich da schon an die stabilität von Matrixinversion oder 
ähnlichen Späßen denke - da wählt man dann den Algorithmus abhängig von 
den Eigenschaften der Matrix.
Stichwort: Numerical Recipes

Wie oft brauchst du das? Wenn du keine Lust hast, frag einfach hier. Das 
sind Fragen, die gerne beantwortet werden.

von Zeno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Da fragt man sich, was wohl so schwer daran ist eine mathematische 
Formel in Code umzusetzen.

von Wilhelm M. (wimalopaan)


Bewertung
1 lesenswert
nicht lesenswert
Gib doch mal ein Beispiel?

Geht es in die Richtung lineares Gleichungssystem lösen oder eher 
Anwendung des Stoke'schen Integralsatzes?

von Hannes J. (pnuebergang)


Bewertung
0 lesenswert
nicht lesenswert
Mad Max schrieb:
> in C++ oder in
> Python-Code automatisch umwandeln kann.

Nicht alles was man als mathematische Formel schreiben kann lässt sich 
mit einem Computer rechnen. Das ist halt der Unterschied zwischen 
Mathematik und Rechnen.

Neben dem Rechnen kann man es noch mit einem Computeralgebrasystem 
versuchen um die Formel symbolisch zu manipulieren. Je nach der zu 
manipulierenden Formel, den Funktionen des CAS und dem Geschick des 
Anwenders erhält man vielleicht eine Lösung die sich zum Schluss mit 
Zahlen ausrechnen lässt.

> Gibt es diese Möglichkeit?

Es gibt keine universelle Möglichkeit.

von Mark B. (markbrandis)


Bewertung
1 lesenswert
nicht lesenswert
Mad Max schrieb:
> Die App Microsoft Math kann mathematische Formeln mit OCR einscannen und
> korrekt darstellen und auch ausrechnen. Mein Wunsch ist aber dass man
> die mathematische Formeln aus Büchern oder PDF in C++ oder in
> Python-Code automatisch umwandeln kann. Gibt es diese Möglichkeit?
>
> Es muss keine App sein, kann auch eine PC-Software sein.

Wie oft kommt denn dieser Anwendungsfall vor, als dass eine 
automatisierte Lösung hierbei hilfreich wäre?

Ich stimme den anderen zu, dass hier sehr viel von den Randbedingungen 
abhängt. Bedenke auch, dass man als Programmierer zum Beispiel die 
Entscheidung treffen muss welche Datentypen man verwendet. Das mag auch 
wiederum davon abhängen, welchen Zahlenbereich man denn bei den 
Eingangsgrößen und beim Ergebnis erwartet etc.

Für diverse Formeln gibt es ja schon fertige Bibliotheken, in denen 
diese umgesetzt sind. Da würde ich mich umschauen. Zum Beispiel bei der 
GNU Scientific Library:

https://www.gnu.org/software/gsl/

: Bearbeitet durch User
von DPA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Computerprogramme arbeiten schritt für schritt die Anweisungen ab, die 
man ihnen gibt. Das wiederspiegelt sich auch in den meisten 
Computerprogrammen & Programmiersprachen.

Aber Mathe, besonders die Algebra, ist ein komplett anderes Konzept. Ob 
man nun eine Gleichung, eine Ungleichung oder ein Gleichungssystem hat, 
es geht selten darum, nur ein Resultat auszurechnen. Stattdessen hat man 
damit komplexe Aussagen darüber, wie gewisse dinge zusammenhängen. Es 
ist egal wann und in welcher Reihenfolge etwas passiert. Und welche 
Parameter man hat, und welche man wissen will, kann sich auch mal 
ändern, und wie man die raus bekommt, ist oft anhand der ursprünglichen 
Formel Herleitbar. Es gibt keine Anweisungen, keine Zuweisungen, keine 
Reihenfolge, am ende sind da nur die Zusammenhänge, die beachtet worden 
sein müssen, und man bekommt vielleicht ein Resultat.

Computer sind schlecht in Mathe, besonders der Algebra. Zudem ist oft 
noch gar kein weg bekannt, gewisse Funktionen umzuformen/umzukehren. Und 
selbst wenn man die Formeln aufgelöst für die gewünschten Parameter 
kennt, muss es nicht zwangsläufig genau oder schnell berechenbar sein.

z.B. Ich hab mal eine Ungleichung geschrieben, die eine Fell-artige 3D 
Struktur beschreibt. Das Notitzblatt mit der Formel hab ich mitlerweile 
verlegt, aber ich hab noch ne interaktive (XY und Pfeiltasten) 
implementation davon in glsl:
https://gistpreview.github.io/?873253bdedb0a9fbcb91c6744a96c623
https://gist.github.com/Daniel-Abrecht/873253bdedb0a9fbcb91c6744a96c623#file-faster-webgl-rendering-rotate-camera-with-arrow-keys-move-with-xy-L48

Das Prinzip ist Simpel, ich hab ne Funktion, der geb ich nen Punkt mit, 
und das Ergebnis ist innerhalb (<0) ausserhalb (>0) Oberfläche (=0). Zur 
Visualisierung muss ich momentan so ziemlich alle Punkte durchprobieren, 
und hab dann nur eine sehr ineffiziente und ungenaue Approximation.
Theoretisch müsste ich nur ne Liniengleichung mit dem Funktionsparameter 
gleichsetzen, die Funktion mit 0 gleichsetzen, und das nach der Distanz 
zum Betrachtungspunkt auflösen, und schon hätte ich einen sehr 
effizienten Raytracer für diese Geometrie. Die Formel hinschreiben ist 
simpel, aber leider ist die Mathematik noch nicht so weit, dass man die 
Auflösen könnte.  Und selbst wenn man es könnte, automatisch mit einem 
Algorithmus in endlicher Zeit auflösen ist dann nochmal ein ein par 
Nummern grösseres Problem.

Die Mathematik hat hier ein enormes Potential. Würden die paar 
grundlegenden Algebraprobleme gelöst, und die Mathematik mal in einen 
brauchbaren Zustand gebracht, es wäre unglaublich, was da plötzlich 
alles möglich und berechenbar würde. Aber leider ist die Mathematik halt 
noch nicht so weit, und wird es vermutlich auch nie sein. Schon 
unglaublich, da hat man ne Sprache, um alles zu Beschreiben, und dann 
ist sie weder für Menschen noch für Maschinen geeignet. Ich glaub ja 
langsam, das Problem ist die Sprache der Mathematik selbst. Dieses 
Logiksystem mit seiner absurden Syntax, unzähligen Erweiterungen, 
unzähligen Umformungsregeln, Unterbereichen, und verlustbehafteten 
Operationen ist vermutlich schon so verbastelt, das es sich hier selbst 
im weg steht. Ich glaube, wir brauchen ne neue Sprache/Formalismus, die 
all die Umformbarkeitsprobleme mal angeht. Etwas brauchbares halt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.