quote:Op vrijdag 10 juli 2009 19:35 schreef GlowMouse het volgende:
Ik wil met de pc controleren of M in span{I,A,A^2,...,A^k} zit. I is de identiteit, alle matrices zijn nxn en n>=k.
Eerste aanpak: alle matrices vectoriseren en vervolgens controleren mbv loodrechte projectie of M in de kolomruimte van X = [vec(I) vec(A) ... vec(A^k)] zit. Dat lukt niet: de elementen van de matrix X zijn te groot voor de pc om nauwkeurig mee te rekenen (je krijgt bv. rank(X'X) < rank(X)).
Tweede aanpak: kijk of M en A dezelfde eigenvectoren hebben, en zoja, of de vector met eigenwaarden van M (in de juiste volgorde gezet) in de kolomruimte X zit, met X_ij = (λ_i)^(j-1) (i=1..n, j =1..k+1). Maar daarbij loop ik tegen hetzelfde probleem aan.
Wat verwacht je nog meer dan de afleiding op http://en.wikipedia.org/wiki/Triple_product_rule ?quote:Op vrijdag 10 juli 2009 20:28 schreef ErictheSwift het volgende:
gegeven:
F(x,y,z) = 0
bewijs: [ afbeelding ]
als als voorwaarde geldt in elke factor 1 variabele als impliciete functie de andere 2 gegeven is.
Die gaat uit van een heleboel aannames, en ik probeer het op een wat fundamentelere manier voor elkaar te krijgen. Ik had al even gespiekt bij het artikel Implicit Function en geprobeerd of ik daar iets zinnigs mee kon.quote:Op vrijdag 10 juli 2009 20:31 schreef GlowMouse het volgende:
tip: dx/dy =
Wat verwacht je nog meer dan de afleiding op http://en.wikipedia.org/wiki/Triple_product_rule ?
Je probeert daar een computationeel probleem op te lossen? Wat voor matrices zijn het precies? I.e. hoe groot zijn ze, over welke ring zijn ze gedefinieerd, etc?quote:
A is de adjacency matrix van een reguliere graaf, alle elementen van machten van A zijn dus niet-negatieve gehele getallen. Uiteindelijk moet het zeker werken voor grafen tot op 15 knopen maar liefst voor meer, en binnen enkele dagen moeten 50M grafen te controleren zijn.quote:Op vrijdag 10 juli 2009 21:00 schreef thabit het volgende:
[..]
Je probeert daar een computationeel probleem op te lossen? Wat voor matrices zijn het precies? I.e. hoe groot zijn ze, over welke ring zijn ze gedefinieerd, etc?
rank(X'X) < rank(X), en de x die ||Xx-b|| minimaliseert is inv(X'X)X'b dus X'X is wel cruciaal. Een double zal wel niet precies genoeg zijn (int32/int64 gebruiken lukt niet; Matlab kan daar niet mee rekenen als het matrices betreft).quote:Op vrijdag 10 juli 2009 21:34 schreef thabit het volgende:
Waarom kon de computer die berekening niet aan waarbij je de matrices in vectoren omzet?
M zijn de afstandsmatrices (M_{xy} = 1 iff d(x,y) = c, en dan c variëren van 2 t/m de diameter totdat het fout gaat). Bij niet-afstandsreguliere grafen is er grote kans dat c de diameter niet haalt, en waar het fout gaat is van belang om precies te weten.quote:Op vrijdag 10 juli 2009 21:34 schreef thabit het volgende:
Waarom kon de computer die berekening niet aan waarbij je de matrices in vectoren omzet? Verwacht je eigenlijk dat de matrix M vaak wel of vaak niet in het opspansel van die anderen zit?
A = [[0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0],[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1],[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1],[1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0]]quote:Kun je misschien een voorbeeld geven van een typisch geval van A, M en k waarvoor je het wil oplossen? (matrices graag als rij van rijen dus bijv. [[1, 2], [3, 4]])
1 2 3 4 5 6 7 | powers = [A^j for j in range(k+1)] vectors = [vector(reduce(operator.add, map(list, x))) for x in powers] V = VectorSpace(QQ, len(vectors[0])) W = V.subspace(vectors) v = vector(reduce(operator.add, map(list, M))) return v in W |
1 2 | True |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |