Sida 36 av 70

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 14:09:31
av Al_Bundy
Jag tror det har med avrundningar att göra samt att GNU Octave kanske har specialfunktioner som verkligen kan hantera små små tal. Vi får inte glömma att Armadillo är rent C++ och Octave använder Fortran för SVD har jag för mig.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 14:30:24
av bearing
Jag har för mig att du rekurserade 50 gånger. Kan det vara så att Octave rekurserar längre?

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 14:33:52
av Shimonu
Hittade det här:
https://www.nsc.liu.se/~pla/blog/2013/1 ... precision/

Fortran verkar ha stöd för 128-bitars float men det går att lösa för C också. Läste inte igenom det men det borde gå att testa. Påstår du efter det att precisionen inte räcker så kommer jag skratta.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 15:03:05
av Al_Bundy
bearing skrev:Jag har för mig att du rekurserade 50 gånger. Kan det vara så att Octave rekurserar längre?
Nu var det Armadillos bibliotek jag körde. Det gav samma resultat som mitt simpla bibliotek också.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 15:19:19
av bearing
Det behövs någon matematiker med lite programmeringskunskaper här tror jag.

Studerar du på något universitet eller högskola? Kan du inte höra med någon professor eller doktorand där ifall du kan få visa problemet och se om du får någon förklaring? Vore intressant att få höra vad det kan vara.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 16:14:14
av Al_Bundy
Professorerna har inte tid att titta på sådant. Sedan tror jag också att dem kan inte heller lösa dessa problem. Bara för att man är doktor eller professor betyder inte att man är kunnig inom matematik.

För att bli doktor så krävs det 9 år på universitet om man tog en master, eller 8 år om man tog en magister. Där efter är det 5 år full tid, där av 4 år är det studerande. Så i praktiken blir det 10 år om det är 9 år man studerar och 9 år om det är 8 år när man studerar. Det har med att man jobbar som lärarslav också.

Sedan för att bli professor så räcker det att man skickar in sitt CV till en faktulitet och söker om en sådan anställning. Men jag antar att du menar docent. Det är 2 års full tids forskning och dokumenterande utan lärande av dumma studenter. Vilket är svårt att undvika. De flesta professorer har docentexamen.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 16:44:38
av bearing
Jo jag menade inte att alla med doktorshatt eller professorer är lämpade för detta. Utan jag menade att du kanske kan kolla runt, och hitta någon som skulle kunna hjälpa dig. Docent, doktorand, klasskamrat kanske inte spelar så stor roll, utan mer bakgrund och intresse. Jag har bara läst den första kursen i linjär algebra som jag tror att alla studenter på KTH läser (och kanske alla tekniska universitet?). Andra, som läst t.ex. mycket reglerteknik där den här matten används dagligen, borde ju iaf ha bättre förutsättningar än mig.

Så C-algoritmen med vanliga 32-bit float ger alltså samma resultat som Octave för små matriser? Men inte med stora?
Vad beror det på då?

Går det inte att stega sig genom QR/SVD i Octave, och se var resultaten börjar skilja?

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 17:16:11
av Al_Bundy
Jag skulle nog säga att för små små små små små tal så klarar C inte riktigt av detta. GNU Octave klarar av det.

Jag har testat att stega igenom resultatet i Octave och det är helt omöjligt att avgöra. Så jag fort nog acceptera att GNU Octave kanske löser detta på andra sätt.

Men så länge de två första värderna i S-matrisen är korrekta så kan jag lösa min uppgift. Varför just dessa två? Jo, det är ett 2:a grads system jag estimerar :wink:

Men nu är det så att jag håller på med machine learning och jag ska inte veta vilket system jag estimerar. Jag ska bara trycka på en knapp och då ska allt se bra ut.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 17:21:29
av AndLi
Men GNU Octave är väl skrivet i C(C++)

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 17:32:16
av bearing
Hur mycket skiljer de två första värdena då?

Det har ju inte med C att göra. Möjligtvis har det med standarden för flyttal, IEEE 754 att göra. Men med tanke på att Octave också använder samma standard för flyttal är väl det mindre sannolikt.

Och hade du testat att köra ditt bibliotek med double, för att jämföra?

Det måste väl ändå vara implementationen av algoritmen som skiljer på något vis?

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 18:01:50
av Shimonu
bearing, vi har försökt förklara det men det fastnar inte riktigt.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 18:14:22
av Rick81
Du sa väl själv att du implementerat "den lättast algoritmen" för svd? Då är det ju också troligt att det finns mer avancerade med bättre noggrannhet.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 18:27:49
av Al_Bundy
AndLi skrev:Men GNU Octave är väl skrivet i C(C++)
Och Fortran.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 18:28:55
av Al_Bundy
Shimonu skrev:bearing, vi har försökt förklara det men det fastnar inte riktigt.
Det är nog jag som ska säga detta till er övriga.

Jag har kört med double och float. Bättre resultat med double, men inte nära som Octave.

Re: Matrisberäkningar med för STM32?

Postat: 1 februari 2019, 18:29:56
av Al_Bundy
Rick81 skrev:Du sa väl själv att du implementerat "den lättast algoritmen" för svd? Då är det ju också troligt att det finns mer avancerade med bättre noggrannhet.
Jag använde Armadillos C++ SVD och den gav samma resultat som mitt C-bibliotek. Alltså en skillnad från GNU Octave. Tror jag har sagt detta 4 gånger nu.