Simplify checks in UE3 A.3 and A.4
This commit is contained in:
parent
2a36ed1de7
commit
57b468af75
@ -64,13 +64,15 @@ Solution:
|
||||
|
||||
Aufgabe A.3
|
||||
|
||||
Solution:
|
||||
* if one of the parameters is an empty matrix or an incorrect matrix, return undefined
|
||||
* otherwise, check the per-element equality in both martices
|
||||
|
||||
> instance Eq Matrix where
|
||||
> (==) (M m1) (M m2)
|
||||
> | m1 Prelude.== [] || m2 Prelude.== [] = error "Gleichheit undefiniert"
|
||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Gleichheit undefiniert"
|
||||
> | otherwise = (m1 Prelude.== m2)
|
||||
> (/=) (M m1) (M m2)
|
||||
> | m1 Prelude.== [] || m2 Prelude.== [] = error "Ungleichheit undefiniert"
|
||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Ungleichheit undefiniert"
|
||||
> | otherwise = (m1 Prelude./= m2)
|
||||
|
||||
@ -92,38 +94,42 @@ Aufgabe A.4
|
||||
|
||||
> add :: Matrix -> Matrix -> Matrix
|
||||
> add (M m1) (M m2)
|
||||
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
||||
> | otherwise = M (zipWith (zipWith (+)) m1 m2)
|
||||
|
||||
> diff :: Matrix -> Matrix -> Matrix
|
||||
> diff (M m1) (M m2)
|
||||
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
||||
> | otherwise = M (zipWith (zipWith (-)) m1 m2)
|
||||
|
||||
> mult :: Matrix -> Matrix -> Matrix
|
||||
> mult (M m1) (M m2)
|
||||
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||
> | otherwise = M ([[0]])
|
||||
|
||||
> negation :: Matrix -> Matrix
|
||||
> negation (M m1)
|
||||
> | isEmpty (M m1)= fehlerwert
|
||||
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||
> | otherwise = M (map (map ((-1)*)) m1)
|
||||
|
||||
> absolute :: Matrix -> Matrix
|
||||
> absolute (M m1)
|
||||
> | isEmpty (M m1)= fehlerwert
|
||||
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||
> | otherwise = M (map (map (abs)) m1)
|
||||
|
||||
> sign :: Matrix -> Matrix
|
||||
> sign (M m1)
|
||||
> | isEmpty (M m1)= error "Vorzeichenfunktion undefiniert"
|
||||
> | matrixtyp (M m1) == KeineMatrix = error "Vorzeichenfunktion undefiniert"
|
||||
> | otherwise = M ([[0]])
|
||||
> | [True] `elem` negative && [False] `elem` negative = error "Vorzeichenfunktion undefiniert"
|
||||
> | [True] `elem` positive && [False] `elem` positive = error "Vorzeichenfunktion undefiniert"
|
||||
> | [True] `elem` nulls && [False] `elem` nulls = error "Vorzeichenfunktion undefiniert"
|
||||
> | [True] `elem` nulls = M([[0]])
|
||||
> | [True] `elem` positive = M([[1]])
|
||||
> | [True] `elem` negative = M([[-1]])
|
||||
> | otherwise = error "Vorzeichenfunktion undefiniert"
|
||||
> where
|
||||
> negative = map (map (<0)) m1
|
||||
> nulls = map (map (==0)) m1
|
||||
> positive = map (map (>0)) m1
|
||||
|
Reference in New Issue
Block a user