Giter VIP home page Giter VIP logo

numerik-project's People

Contributors

76filou avatar falcopr avatar geckoxx avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

numerik-project's Issues

SolveNonLinearEquation mit manueller Ableitung

Wäre es möglich, dass man das eintragen der ableitungen wieder manuell eintragen kann bei dem tab solve nonlinear equation?

Im moment wurde das ja gelöscht und durch eine iterative funktion ersetzt.
Ich bin da nämlich etwas misstrauisch in hinblick auf mögliche fehler.

Hinzufügen von Tests zur LU-Zerteilung

Es sollen Tests für die LU-Zerteilung gebaut werden, und dabei L, U, und x getestet werden.
Dabei können die Aufgaben und Lösungen, die der Prof. geschickt hat behilflich sein.

Rundungsfunktion für doubles + Rechenungenauigkeit von doubles

Wie man beispielsweise im Tab von Runge Kutta 4 sehen kann, wird in der Tabelle für eine Schrittgröße h = 0.2 folgendes iterriert --> xi = 0, 0.2, 0.4, 0.600000000000001.

Außerdem fehlt uns eine Rundungsfunktion für doubles?
Wie habt ihr das gemacht --> Umwandlung in ein BigDecimal und dann die BigDecimal-Rundung genutzt?
Beim Newton-Verfahren ist es beispiel auch nicht drin mit dem Runden.

Es ist wichtig zu wissen, wo Rundung notwendig ist und wo nicht.

Vector sollte keine Unterklasse von Matrix sein

Es bringt einfach keine Punkte, Beispiel: Vector * Scalar, dabei greift die Vector-Klasse auf die von Matrix geerbte Funktion dafür zu, funktioniert auch soweit, nur dass das Resultat dann eine Matrix ist, das heißt man müsste sowieso alle Grundrechenarten überschreiben, um Vectoren zurückzubekommen und dann kann man auch gleich beide Klassen getrennt betrachten und final machen, was die Performance (spürbar?) steigern sollte. Einzig Funktionen zum ineinander casten sollten dann noch implementiert werden.

MathLib.round-Funktion

hierfür sollten hinreichend Testfälle angelegt
ich habe die Funktion erstmal von Carstens Projekt weitesgehend übernommen
es gibt noch ungenutzt Variablen und auskommentierten Code, deswegen denke ich, dass die Funktion noch nicht alle Fälle der Rundung abdeckt

Funktionen sollen nicht null zurückgeben

Es wäre meiner Meinung nach besser, wenn Funktionen nicht null zurückgeben, falls sie ihre Funktion nicht normal ausführen können.
Beispiel: Die Inverse einer Matrix lässt sich nur berechnen, wenn die Matrix quadratisch ist, wenn sie es nicht ist, wird aktuell null zurückgegeben, besser wäre eine Exception zu werfen.
ArithmeticException's wären dafür am besten geeignet, weil diese nicht mit einem try-catch abgefangen werden müssen, aber können.

throw new ArithmeticException("Matrix nicht quadratisch.");
an Stelle von return null;

JavaDoc Kommentare zu allen Funktionen

Es sollte zu jeder Funktion die JavaDocs Kommentare hinzugefügt werden, damit man beim Benutzen der Intellisense funktion in Eclipse sich etwas zu den Funktionen belesen kann.

Wie siehts damit aus?

Einweisung in den grafischen/ Latex Teil des Numerik-Projects + weiteres Voranschreiten?

Ich würde gerne mal anfragen, wann ihr mal Zeit habt, damit wir uns mal dinge in dem Projekt anschauen, die für den einen oder anderen unklar sind.
Außerdem wäre es gut, wenn jemand auch soeine art schulung gibt, um mit dem umgang der Anwendung klar zu kommen.

Desweiten muss auch klargestellt werden, wie wir das in die GUI einbauen werden, da das mir bisher sehr unklar ist.
Teile der Implementierung ist in der numerik.task und Teile sind in dem numerik.calc Package. Für das "durcheinander" würde ich dann auch ne kurze erklärung haben wollen

Probleme bei der Benutzung von Trigonometrische Funktionen

Da die Math-Bibliothek von Java nur mit double bei den trigonometrischen funktionen umgehen kann, müssen wir uns erstmal im klaren werden, wie wir bei gleichungen mit solchen funktionen vorgehen werden.

Zu untersuchen sind rundungsfehler, konvertierungsfehler von double zu bigdecimal.
etc.

  • was euch noch dazu einfällt.

Status quo des Projektes schriftlich angeben und stetig aktualisieren

Es sollte schriftlich festgehalten werden, in wie weit das Projekt fertig ist im hinblick auf die Übungen.

Bsp.: Übung 3, sind die und die Funktionen, wie viel Prozent dort schon fertig implementiert wurde/ ob da noch was zu machen ist/ etc.

so sollte es dann aussehen
Übung 1: 2% (die und das fehlt, aber das und das ist implementiert)
Übung 2: 100% (die und das fehlt, aber das und das ist implementiert)
Übung 3: 23% (die und das fehlt, aber das und das ist implementiert)
Übung 4: 24% (die und das fehlt, aber das und das ist implementiert)
Übung 5: 99% (die und das fehlt, aber das und das ist implementiert)
Übung 6: 50% (die und das fehlt, aber das und das ist implementiert)

100% ist es dann nur wirklich, wenn man dann im nachhinein nichts mehr an dem teil verändert, der zu der jeweiligen Übung korrespondiert.

Hinzufügen eines Vektors, die die Permutation der LUZerlegung enthält

Wenn man bei der LU-Zerlegung eine Pivotstrategie benutzt, kann man die Reihenfolge der Vertauschung in ein Vektor speichern. Ohne Pivotstrategie ist es dann 1, 2, 3, 4, ...
Weil das auch so beim Kripfus implementiert ist für die Inverse Iteration, sollte versucht werden, diesen Vektor auch einzubeziehen, damit keine weiteren Komplikationen auftreten, wenn man ausversehen die Pivotstrategie bei der Inversen Iteration benutzt.

Ersetzen des BigDecimal mit der Klasse Decimal

Diese Decimal-Klasse dient als Wrapper und kann angegebene Prezisionen automatisch händeln. Damit wird der Quellcode übersichtlicher. Alle BigDecimals sollen mit der Decimal-Klasse ersetzt werden.

Logarithmusfunktionen sind fehlerhaft

Bitte das log10 richtig implementieren. Schaut euch dazu die Tests an in der Klasse
Außerdem muss die Implementierung nach den 6 Tests in der Klasse MathLib_TestFixture im Package numeric_calc_test erfolgen. Schaut demnach nach den "Assertions" --> Ergebnisannahmen.

Die Logarithmusfunktion gibt folgenden fehler:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(Unknown Source)
at numerik.calc.MathLib.log10(MathLib.java:144)
at numerik.calc_test.MathLib_TestFixture.log10__Logarithmus_Base_10_Test_One(MathLib_TestFixture.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Revision: f64af6d
Author: falcoprescher
Date: 26.04.2012 15:08:02
Message:
Einbauen von log10_Tests


Modified : Numerik Project/src/numerik/calc_test/MathLib_TestFixture.java

Funktionen als Übergabeparameter

Und zwar sollte es möglich sein, Funktionen als Übergabeparameter in andere Funktionen in eine Methode zu benutzen.

Folgendes Konzept würde ich da benutzen:

Es sollte ein Interface geben, dass eine Methode definiert, die die Funktionswerte der statischen Funktion liefert.
Außerdem sollte dann jede Funktion ihre eigene Klasse haben und diese Klasse sollte das Interface implementieren.

Die Methoden, die die Funktion als übergabeparameter benötigen, sollten dann den parameter mit dem typ des interfaces beinhalten, um dann eine instanz der Funktionsklasse entgegenzunehmen. Diese Methode kann dann die Methode des Interfaces aufrufen, um dann Funktionswerte der Funktion zu bekommen.

Das Design-Pattern nennt sich Observermuster.

double weg, nur noch BigDecimal

wie der Titel schon sagt, wollen wir am liebsten überall (wo es denn geht) auf double verzichten und dafür BigDecimal nehmen aus bekannten Gründen der Rechenungenauigkeit ;)

MathLib.RoundingMethod "EXACT" into "BINARY"

Bitte den Wert entsprechend Titel ändern. EXACT berechnet die Mantisse zur Berechnung binär. Das ist aus dem Wert nicht ersichtlich. Dementsprechend auch über die Änderung des analogen Wertes NORMAL in DEZIMAL überdenken.

Noch ein Vorschlag ist, den Wert anschließend standardmäßig von BINARY auf DEZIMAL zu stellen, da wir standardmäßig in Aufgaben dezimale Mantissen berechnen.

Gruß vom ille

Implementation der Grundrechenarten für Matrizen

Es sollen mindestens folgende Funktionen für Matrizen implementiert werden:

Addition,
Multiplikation,
Skalarmultiplikation.

Subtraktion ergibt sich aus der Addition, kann aber als Extramethode implementiert werden.

Bei Division weiß ich nicht so recht, ob das so einfach möglich ist. (War das nicht das Multiplizieren mit einer inversen Matrix?)

Bereinigen der Parameter der Substitutionsmethode für Matrizen

Beispielsweise weiß ein externer Programmierer überhaupt nichts anzufangen mit dem Parameter "String str" in der substitution-Methode --> bitte eindeutige Namen oder andersweitig Lösen.

Auch mal bitte draufschauen, ob man die Methode in kompaktere und menschenlesbare Weise verbessern kann.

Bsp.: Durch Zerteilung des Algorithmuses in kleinere Schritte, die vllt. wiederverwendbar sind.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.