php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.03.2009, 16:24  
Neuer Benutzer
 
Registriert seit: 23.03.2009
Beiträge: 14
Cr4m0 befindet sich auf einem aufstrebenden Ast
Standard Singulärwertzerlegung in PHP programmieren

Hallo!

Ich habe eine Matrix A:
1 1
0 1
1 0
Diese Matrix stelle ich in PHP ja wohl am besten als zweidimensionales Array dar, oder?
Jetzt möchte ich die Singulärwertzerlegung (A=USV) daraus programmieren.
Könnt ihr mir dabei helfen? Das wäre super! Danke im Voraus!

Wer nicht weiß, was "Singulärwertzerlegung" ist, kann hier klicken.
Cr4m0 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.03.2009, 16:54  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Für Python gibt es die numpy Bibliothek und diese stellt eine Methode zur Berechnung der Matrizen bereit. Für PHP kenne ich nichts vergleichbares.
David ist offline   Mit Zitat antworten
Alt 23.03.2009, 17:24  
Neuer Benutzer
 
Registriert seit: 23.03.2009
Beiträge: 14
Cr4m0 befindet sich auf einem aufstrebenden Ast
Standard

Danke, sieht gut aus. Muss ich mir mal angucken.

Ich habe noch einige Links rausgesucht, auf denen die SVD erklärt wird:
http://fed.matheplanet.com/mprender....ringid=1080115
Singular Value Decomposition (SVD) tutorial
SVD and LSI Tutorial 4: Latent Semantic Indexing (LSI) How-to Calculations
Singulärwertzerlegung – Wikipedia
Und der QR-Algorithmus:
QR-Algorithmus – Wikipedia

Vielleicht kann mir damit noch jemand in PHP weiterhelfen?
Cr4m0 ist offline   Mit Zitat antworten
Alt 23.03.2009, 18:34  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dann leg doch mal vor.
Chriz ist gerade online   Mit Zitat antworten
Alt 23.03.2009, 21:09  
Neuer Benutzer
 
Registriert seit: 23.03.2009
Beiträge: 14
Cr4m0 befindet sich auf einem aufstrebenden Ast
Standard

OK, ich versuchs!

Also hier findet man auf jeden Fall schon mal eine JavaScript-Version. Da kann man sich vielleicht etwas abgucken oder es komplett in PHP umschreiben:
http://users.telenet.be/paul.larmuseau/SVD.htm

Mein Ansatz:
1) A = USV
2) Man muss die Eigenwerte und Eigenvektoren von AAT und ATA finden
3) Die Eigenvektoren von ATA bilden die Spalten von V
4) Die Eigenvektoren von AAT bilden die Spalten von U
5) Die Singulärwerte in S sind die Quadratwurzeln der Eigenwerte aus AAT oder ATA; die Singulärwerte sind die diagonalen Elemente von S

Zu 3, 4 und 5:
Man muss AAT zu einer nxn-Matrix machen: Von dieser Matrix kann man dann die Eigenwerte nehmen. Dasselbe gilt für ATA.

Das ist der Ansatz. Könnt ihr mir jetzt vielleicht helfen, das zu programmieren? Das wäre echt super, ich hab mir da jetzt so viel durchgelesen in den letzten Wochen (auch bevor ich hier gefragt habe), es wäre schade, wenn das umsonst war. Und einen Ansatz habe ich ja. Das oben ist eigentlich der komplette Lösungsweg. Den muss man "nur" noch programmieren.
Cr4m0 ist offline   Mit Zitat antworten
Alt 23.03.2009, 21:25  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Vorweg: Ich hab keine Ahnung von Matrizen.

Ich möchte dir empfehlen das mit OOP aufzuziehen, ist am Ende dann am verständlichsten und sehr gut wieder zu verwenden oder zu erweitern.

AAT und ATA sind Objekte mit einer Methode, die den Eigenverktor liefert.
Vielleicht benutzt du als Grundlage eine Matrizenklasse, das gibt es auch sicher schon im Netz. Für die Singulärwerte nimmst du entweder ein Überobjekt, oder eine weitere Methode für ein AAT Objekt, die zB ein ATA Objekt als Wert annimmt.
Das sollte nun etwas konkreter sein, damit kannst du schon einiges aufziehen. Wenn du zu einem Punkt kommst, wo du ein wirkliches Problem hast, dann melde dich nochmal. Vorerst musst du selbst was zu Datei bringen.
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 25.03.2009, 21:26  
Neuer Benutzer
 
Registriert seit: 23.03.2009
Beiträge: 14
Cr4m0 befindet sich auf einem aufstrebenden Ast
Standard

Also ich habs jetzt mal versucht. Ich habe bisher geschafft:
1) Matrix A wird in Array dargestellt und ausgegeben
2) Matrix A wird transponiert zu A' (AT) und ausgegeben
3) Produkt von AA' (AAT) wird berechnet und ausgegeben
4) Produkt von A'A (ATA) wird berechnet und ausgegeben
Hier kann man es sehen:
http://wp1080088.wp029.webpack.hosteurope.de/_svd.php

Als nächstes müsste ich die Eigenwerte berechnen. Ich habe aber keine Ahnung wie. Hab gelesen, man könnte den QR-Algorithmus verwenden. Der scheint auch ziemlich einfach zu sein, verwendet aber die QR-Zerlegung. Die verstehe ich kein bisschen. Könntet ihr mir an dieser Stelle noch einmal weiterhelfen? Das wäre super!
Cr4m0 ist offline   Mit Zitat antworten
Alt 28.03.2009, 13:02  
Neuer Benutzer
 
Registriert seit: 23.03.2009
Beiträge: 14
Cr4m0 befindet sich auf einem aufstrebenden Ast
Standard

Sorry wegen Doppelpost, aber ich bin jetzt schon ziemlich weit und brauche nur noch ein kleines bisschen Hilfe, dann bin ich fertig:

Meine Rechnung am Beispiel einer Matrix
Ich habe es jetzt geschafft, für eine Matrix und ihre transponierte Matrix einen Eigenwert zu finden (im Beispiel: 0.133). Ich löse die Gleichung ...
(5-x)*(25-x)-11*11 = 0
... mit der Bisektion auf. Als Ergebnis bekomme ich 0.133. Der andere Eigenwert (29.866) fehlt mir aber. Gibt es eine Möglichkeit, den auch noch irgendwie zu finden?
Cr4m0 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] PHP-Gästebuch selbst programmieren PHP Tipps 2005-2 10 30.05.2009 13:27
Lockeres Programmieren , mit freundlichem Team ! WM-PROJEKT Beitragsarchiv 6 06.01.2009 23:55
Problem mit foren suche programmieren! litterauspirna PHP Tipps 2008 4 17.08.2008 12:17
Suche nach Framework für schnelles programmieren BLACK PHP Tipps 2008 4 13.08.2008 04:54
Framework programmieren Kein Genie PHP-Fortgeschrittene 2 29.04.2008 16:57
Wie programmieren? dh1sbg Off-Topic Diskussionen 5 02.03.2007 15:59
Würfel programmieren Datenbanken 4 19.08.2005 17:43
internetauftritt in php programmieren PHP Tipps 2005-2 11 25.07.2005 20:55
Kommentarfunktion programmieren PHP Tipps 2005-2 15 22.07.2005 08:39
Wer kann mir ein Partyportal programmieren ? Beitragsarchiv 1 08.07.2005 16:43
Volltextsuche programmieren BigManu PHP Tipps 2005 6 02.06.2005 11:24
[Erledigt] php programmieren PHP Tipps 2005 7 02.05.2005 23:24
[Erledigt] PHP programmieren PHP Tipps 2004 7 18.09.2004 17:07
Anmeldeformular programmieren PHP Tipps 2004 2 30.06.2004 01:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
singulärwertzerlegung berechnen, singulärwertzerlegung, singulärwertzerlegung algorithmus, singulärwertzerlegung beispiel, singulärwertzerlegung python, python singulärwertzerlegung, singulärwerte berechnen, singulärwertzerlegung in python, singulärwertzerlegung matheplanet, singulärwertzerlegung php, svd programmierung, ajax algorithmus quadrieren, singulärwertzerlegung programmierung, singulärwertzerlegung mit python, python singulärwertzerlegung code, singulaerwertzerlegung python, python bild singulärwertzerlegung, singulärwert python, singulärwert zerlegung in python, programmierung svd

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum