Springen naar inhoud

Determinant


  • Log in om te kunnen reageren

#1

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 05 juni 2007 - 08:53

Mijn algoritme om een determinant te berekenen:

Function det(ByVal matrix(,) As Integer) As Double
		 Dim n As Integer
		 n = UBound(matrix, 1)
		 Dim c As Integer = 1 'correctie voor rij x getal
		 Dim i, j, e As Integer
		 Dim a, b As Integer
		 Dim d As Integer = 1
		 For i = 0 To n - 1
			 For j = i + 1 To n
				 'rij j reduceren via rij i
				 a = matrix(i, i)
				 b = matrix(j, i)
				 c *= a
 
				 If matrix(i, j) <> 0 Then
					 For e = i To n
						 matrix(j, e) = matrix(j, e) * a - matrix(i, e) * b
					 Next
				 End If
			 Next
		 Next
		 For i = 0 To n
			 d *= matrix(i, i)
		 Next
		 Return d / c
	 End Function

(maakt onder de hoofddiagonaal allemaal nullen, om dan keer op keer naar de 1e kolom te ontwikkelen)
nu duikt hetvolgende probleem op bij orde > 4: OverFlow error bij de variable c

hoe kan ik dit vermijden?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 06 juni 2007 - 08:12

int64 verhelpt het probleem ook niet helaas
(getal c is blijkbaar groter dan 18446744073709551615)
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

#3

Mark1

    Mark1


  • 0 - 25 berichten
  • 20 berichten
  • Gebruiker

Geplaatst op 06 juni 2007 - 15:13

Ik heb ook regelmatig het probleem in vb dat een getal te groot word (vooral bij het oplossen van problemen op projecteuler.net) en ben daarom ook opzoek naar een (makkelijke) manier om toch grote getallen te gebruiken in vb. Tot nu toe heb ik de programma's die niet in vb lukte, omdat de getallen te groot werden, geprobeerd in ruby te maken (ruby kan namelijk met veel grotere getallen omgaan). Mischien dat ruby ook voor jou een oplossing is? Mocht je een manier vinden om in vb toch makkelijk met dit soort getallen om te gaan dan hoor ik het graag. :D

#4

jhnbk

    jhnbk


  • >5k berichten
  • 6905 berichten
  • VIP

Geplaatst op 06 juni 2007 - 15:46

leuk te horen dat hier nog iemand op projecteuler.net zit.
Ik gebruik meestal Python, maar voor mijn vak informatica moet ik helaas vb kunnen (gaat wel vanzelf hoor)

Voor de determinant had ik gedacht om al delen afzonderlijk weg te delen bij dit, maar ik kom er niet uit.

Wat VB en grote getallen betreft: mss moet er wel iets te vinden zijn op 't net daarvoor
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures