Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Gebruikersavatar
In physics I trust
Artikelen: 0
Berichten: 7.390
Lid geworden op: za 31 jan 2009, 08:09

singuliere sttijfheidsmatrix

In het kader van een projectje eindige elementen (Matlab), wordt er gemeld dat mijn globale stijfheidsmatrix K singulier is:
(warning matrix is singular to working precision)
naar aanleiding van het commando 
 U=K\P;
maar desondanks wordt er verder gerekend en komen er erg logische momenten, dwarskrachten, normaalkrachten en vervormingen uit.
 
Iemand een idee hoe ik de fout eruit kan krijgen?
Ik vermoed dat het een randvoorwaardenprobleem is? Hoe komt het dat ik ondanks de waarschuwing een schijnbaar correcte oplossing bekom?
 
Alvast bedankt,
"C++ : Where friends have access to your private members." Gavin Russell Baker.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: singuliere sttijfheidsmatrix

Het probleem komt door de eindige precisie in MATLAB. Ik weet ook niet precies hoe je dit moet oplossen, maar probeer eens andere technieken om je probleem op te lossen (MATLAB inv commando, LU decompositie, ...) of zoek eens naar preconditioning ofzo.
Gebruikersavatar
In physics I trust
Artikelen: 0
Berichten: 7.390
Lid geworden op: za 31 jan 2009, 08:09

Re: singuliere sttijfheidsmatrix

Bedankt voor je reactie!
 
De waarschuwing duidt volgens jou niet op een werkelijke fout? Ik dacht dat er werkelijk iets mis was met mijn randvoorwaarden.
 
Ter achtergrond: K is geïmplementeerd als een sparse matrix; en als ik de matrix omzet via full(K) om een beter zicht te hebben op hoe de matrix eruit ziet, merk ik dat de laatste 8 rijen/kolommen enkel nullen bevatten. Ook in de P en U vectoren zijn de laatste 8 elementen 0. Dat lijkt me de oorzaak te zijn van de opmerking over singulariteit?
 
Op dit ogenblik worden er doubles gebruikt voor de voorstelling. Is hier een andere format op zijn plaats?
 
Nogmaals bedankt,
"C++ : Where friends have access to your private members." Gavin Russell Baker.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: singuliere sttijfheidsmatrix

double precision is normaal gezien OK. Als je 8 rijen nullen hebt dan is je matrix inderdaad gewoon singulier en dan kan je geen inverse nemen. Misschien dat de pseudo-inverse (MATLAB: pinv) je verder kan helpen? Maar misschien dat je inderdaad beter kijkt naar wat die waarden in je matrix precies voorstellen en de randvoorwaarden eens nakijkt.
Gebruikersavatar
xansid
Artikelen: 0
Berichten: 246
Lid geworden op: do 19 dec 2013, 16:19

Re: singuliere sttijfheidsmatrix

Dan heb je eigenlijk 8 vrijheidsgraden 'te veel' dus?
Hoeveel vrijheidsgraden hebben de elementen die je gebruikt?
Help wetenschappers aan rekenkracht: Verbindt jouw PC binnen 10 minuten met de meest krachtige supercomputer op aarde!

Sluit je aan bij het Wetenschapsforum team (nr: 48658) en steun onderzoek naar alzheimer, kanker en andere ziektes. Meer info: folding.standford.edu
Gebruikersavatar
In physics I trust
Artikelen: 0
Berichten: 7.390
Lid geworden op: za 31 jan 2009, 08:09

Re: singuliere sttijfheidsmatrix

Er was inderdaad een fout ingeslopen: tussen truss elements (die geen moment kunnen doorgeven en dus rotatievrijheid hebben) waren er toch expliciet scharnieren toegekend; waardoor er eigenlijk voorwaarden dubbel inzaten, namelijk de rotatievrijheid in betreffende knopen. Deze redundantie kwam tot uiting in de stijfheidsmatrix.
 
Het probleem is opgelost, bedankt voor het meedenken!
"C++ : Where friends have access to your private members." Gavin Russell Baker.

Terug naar “Wiskunde”