Quadratische NxN Matrix - Determinate
Übersicht

![]() |
ToeBBetreff: Quadratische NxN Matrix - Determinate |
![]() Antworten mit Zitat ![]() |
---|---|---|
So heute haben wir in dem schönen Fach Mathe-Info ein neues Thema angefangen : Matrizen. Ich fand das sehr spannend und da wir heute gelernt haben das man bei quadratischen Matrizen die auf den feldern (N)x(N) bestehen eine Determinate errechnen kann, habe ich mir gedacht, schreibst du schonmal ein programm dafür. Weil bei 3x3 Matrizen gehts schnell auf dem Papier, bei 4x4 ist es schonmal 4* soviel arbeit. Das Programm ist noch nicht Perfect, kann aber fehlerfrei 2x2 und 3x3 Matrizen ausrechen, bei 4x4 und höher hatte ich keine lust das nachzurechnen, wer also möglichkeiten oder lust dazu hat, kann es ja mal machen.
Hier der code : <leertaste> Determinante errechnen <Maus> felder auswählen und werte beim klicken verändern Gebt im Code bei der Function "CreateMatrix" mal einen anderen feldwert ein der größer als 1 ist ein, und könnt gucken wie sich die Determinate verändert etc. Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() SeedRnd MilliSecs() Global matrix = CreateBank(),matrixsize Global tmpbank = CreateBank() CreateMatrix(5) For yy = 1 To matrixsize For xx = 1 To matrixsize SetMatrixNum(xx,yy,Rand(10)) Next Next Global size = 64 Repeat For yy = 1 To matrixsize For xx = 1 To matrixsize Rect xx*size,yy*size,size,size,0 num = GetMatrixNum(xx,yy) Text xx*size+size/2,yy*size+size/2,num,1,1 If RectsOverlap(MouseX(),MouseY(),1,1,xx*size,yy*size,size,size) Then Color 255,0,0:Rect xx*size,yy*size,size,size,0 Color 255,255,255 If MouseDown(1) Then Cls:Flip num = Input("Zahl : ") setmatrixnum(xx,yy,num) EndIf EndIf Next Next If KeyHit(57) Then ms = MilliSecs() det = Determinante(matrix,matrixsize) time = MilliSecs() - ms EndIf Text 0,0,"Determinate : "+det Text 0,13,"(Leertaste zum Ausrechnen)" Text 0,26,"Zeit : "+time+"ms" Flip Cls Until KeyHit(1) End Function CreateMatrix(felder) ResizeBank(matrix,felder*felder*4) matrixsize = felder End Function Function GetMatrixNum(x,y) x = x -1 y = y -1 get = (y*matrixsize+x)*4 get = PeekInt(matrix,get) Return get End Function Function SetMatrixNum(x,y,num) x = x -1 y = y -1 put = (y*matrixsize+x)*4 PokeInt(matrix,put,num) End Function Function Determinante(bank,felder=2) If felder = 2 a = PeekInt(bank,(0*felder+0)*4) b = PeekInt(bank,(0*felder+1)*4) c = PeekInt(bank,(1*felder+0)*4) d = PeekInt(bank,(1*felder+1)*4) det = a*d - b*c Return det Else det = 0 For i = 1 To felder num = PeekInt(bank,(i-1)*4) nsize = felder-1 nsize1 = nsize*nsize*4 tmpbank = CreateBank(nsize1) aktfeld = 0 For yy = 2 To felder For xx = 1 To felder If xx <> i Then nx = xx-1 ny = yy-1 im = PeekInt(bank,(ny*felder+nx)*4) PokeInt(tmpbank,aktfeld,im) aktfeld = aktfeld + 4 EndIf Next Next det_tmp = Determinante(tmpbank,nsize) wert = num * det_tmp DebugLog wert If Floor(i/2.0) <> i/2.0 Then det = det + wert Else det = det - wert EndIf Next Return det EndIf End Function mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group