michaeidietrich / numerik-project Goto Github PK
View Code? Open in Web Editor NEWNumerik
Numerik
Man sollte Tests implementieren, die bei fehlerhaften Input Exceptions abfangen, und wenn es geht so speziell wie möglich!
Es soll möglich sein, dass man eine Matrix normalisieren kann.
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.
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.
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.
Siehe Überschrift.
Siehe Titel.
Siehe Titel
siehe Name
Bitte Tests hinzufügen, die das Transponieren der Matrix abdeckt.
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.
Füge zu den Konstruktoren für Matrizen Tests hinzu!
Bitte Tests hinzufügen zur Substitution einer Matrix.
siehe Name
Es sollen die Expressions in den Tabs nutzbar gemacht werden, um Funktionen zu definieren.
Damit muss man dann nicht mehr direkt die Funktion im Quellcode speichern.
Es soll nachgeforscht werden, wie man am besten UnitTest für die jeweiligen Funktionen in Java baut.
Es sollte soetwas wie eine CheckBox geben, die einem die Wahl lässt, von einer Matrix A (Input) den Eigenwert von der Matrix M berechnen zu lassen oder nur von der Matrix A direkt den Eigenwert.
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
Beispielsweise bei der LU-Zerteilung wird eine Dreiecksmatrix erstellt. Es sollen Tests eingebaut werden, die Fälle abdecken, wenn eine Matrix mehrdeutig ist bzw. eine Dreiecksmatrix bereits Nullen in den Zellen hat.
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;
siehe Name
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?
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
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.
siehe Name
Es soll eine Logarithmusfunktion gebaut werden, bei der man die Präzision des Ergebnisses festlegen kann.
Um nicht mehr eingabestreams benutzung zu müssen, sollte in erwägung gezogen werden, nur noch das mega-graphische steuerelement zu benutzen, um eingaben direkt im programm zu machen.
Siehe Titel
damit ist eben gemeint LaTeX komplett zu kapseln in einer eigenen Klasse, so dass man eigtl. keine Ahnung von LaTeX haben muss, um Formeln auszugeben
Bitte noch Tests zu Inversen Matrizen schreiben!
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.
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.
So, wie es das NewMatrixControl gibt, sollte auch eins fürs Vektor existieren.
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.
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
siehe Name
Es soll geprüft werden, ob man mit dem verfahren auch 3x3 matrizen mit einem 3x1 vektor iterieren kann.
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.
Bitte für die Skalarmultiplikation, Addition, Subtraktion und Multiplikation von Matrizen tests schreiben!
Es soll ein Konstruktor für die Matrix hergestellt werden, bei der ein Parameter übergeben wird, die die Dimension der Matrix für Spalten und Zeilen ausdrückt.
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 ;)
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
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?)
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.
Es müssen UnitTest zu der Rundungsfunktion erstellt werden, um zu überprüfen, an welchen Stellen die Funktion fehlerhafte Ergebnisse liefert. Notfalls kann auch die Methode neugeschrieben werden.
siehe Name
siehe Name
Es wurden bei Addition und Multiplikation die Rundungsfunktionen nicht eingeführt. Bitte nachtragen!!!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.