www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

blizz

Gepostet:
29.06.2006 16:00

Polynome / Algorithmus von Karatsuba  
Kann mir hier jemand helfen?

Implementieren Sie den Algorithmus von Karatsuba zur Multiplikation zweier Polynome

a) Definieren Sie zunächst den Datentyp Polynom

b) Leiten Sie für Ihren Datentyp Instanzen der Klassen Num, Eq, Read, Show ab. Implementieren Sie dabei die Multiplikation als klassische Polynommultiplikation.

c) Implementieren Sie nun den Algorithmus von Karatsuba.

a und b hab ich schon, is aber bestimmt nicht richtig, funktioniert auch nicht :)
vielleicht kann mir jemand helfen


a)
data (Num a) => Polynomial a = Polynomial [a] deriving (Show,Eq)

b)
instance (Num a) => Num (Polynomial a) where
Polynomial x + Polynomial y = addFunktion x y

addFunktion :: [Int] -> [Int] -> [Int]
addFunktion x [] = x
addFunktion [] x = x
addFunktion (x : xs) (y:ys) = (x+y):(addFunktion xs ys)


Zum Seitenanfang    
 
blizz

Gepostet:
29.06.2006 16:07

Polynome / Algorithmus von Karatsuba  
upps Überschrift vergessen!
kann das noch jemand hinzufügen??

"Polynome / Algorithmus von Karatsuba"
Zum Seitenanfang    
 
Jammni

Gepostet:
29.06.2006 16:52

   
Erledigt ;-) Aber bei dem Haskell-Kram kann ich dir nicht helfen. Da wirst du wohl auf Jacke oder Siracusa warten müssen.
Zum Seitenanfang Homepage   ICQ    
 
Jacke

Gepostet:
29.06.2006 19:53

   
so ich hab erstmal deinen code verbessert :-) das dürfte gehen


data Polynomial a = Polynomial [a] deriving (Show,Eq,Read)

instance (Num a) => Num (Polynomial a) where
(Polynomial x) + (Polynomial y) = addFunktion x y


addFunktion x [] =Polynomial x

addFunktion [] x =Polynomial x
addFunktion (x) (y) = Polynomial (rechne x y)
where
rechne [] h=h
rechne z []=z
rechne (m:ms) (n:ns)=(m+n):(rechne ms ns)



ich helf dir gerne weiter wenn du wieder fragen hast

gruß jacke
Zum Seitenanfang    
 
blizz

Gepostet:
30.06.2006 10:22

   
danke,
aber bei mir kommen da ein paar fehlermeldungen wenn ich das ausführe
Zum Seitenanfang    
 
Jacke

Gepostet:
30.06.2006 10:41

   
du mußt es so aufrufen

addFunktion [1,2] [2,3]

dann hast du als ergebnis:

Polinomial [3,5]
Zum Seitenanfang