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
|
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
|
> instance Eq Matrix where
|
||||||
> (==) (M m1) (M m2)
|
> (==) (M m1) (M m2)
|
||||||
> | m1 Prelude.== [] || m2 Prelude.== [] = error "Gleichheit undefiniert"
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Gleichheit undefiniert"
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Gleichheit undefiniert"
|
||||||
> | otherwise = (m1 Prelude.== m2)
|
> | otherwise = (m1 Prelude.== m2)
|
||||||
> (/=) (M m1) (M m2)
|
> (/=) (M m1) (M m2)
|
||||||
> | m1 Prelude.== [] || m2 Prelude.== [] = error "Ungleichheit undefiniert"
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Ungleichheit undefiniert"
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = error "Ungleichheit undefiniert"
|
||||||
> | otherwise = (m1 Prelude./= m2)
|
> | otherwise = (m1 Prelude./= m2)
|
||||||
|
|
||||||
@ -92,38 +94,42 @@ Aufgabe A.4
|
|||||||
|
|
||||||
> add :: Matrix -> Matrix -> Matrix
|
> add :: Matrix -> Matrix -> Matrix
|
||||||
> add (M m1) (M m2)
|
> add (M m1) (M m2)
|
||||||
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||||
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
||||||
> | otherwise = M (zipWith (zipWith (+)) m1 m2)
|
> | otherwise = M (zipWith (zipWith (+)) m1 m2)
|
||||||
|
|
||||||
> diff :: Matrix -> Matrix -> Matrix
|
> diff :: Matrix -> Matrix -> Matrix
|
||||||
> diff (M m1) (M m2)
|
> diff (M m1) (M m2)
|
||||||
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||||
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
> | matrixtyp (M m1) /= matrixtyp (M m2) = fehlerwert
|
||||||
> | otherwise = M (zipWith (zipWith (-)) m1 m2)
|
> | otherwise = M (zipWith (zipWith (-)) m1 m2)
|
||||||
|
|
||||||
> mult :: Matrix -> Matrix -> Matrix
|
> mult :: Matrix -> Matrix -> Matrix
|
||||||
> mult (M m1) (M m2)
|
> mult (M m1) (M m2)
|
||||||
> | isEmpty (M m1) || isEmpty (M m2) = fehlerwert
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
> | matrixtyp (M m1) == KeineMatrix || matrixtyp (M m2) == KeineMatrix = fehlerwert
|
||||||
> | otherwise = M ([[0]])
|
> | otherwise = M ([[0]])
|
||||||
|
|
||||||
> negation :: Matrix -> Matrix
|
> negation :: Matrix -> Matrix
|
||||||
> negation (M m1)
|
> negation (M m1)
|
||||||
> | isEmpty (M m1)= fehlerwert
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||||
> | otherwise = M (map (map ((-1)*)) m1)
|
> | otherwise = M (map (map ((-1)*)) m1)
|
||||||
|
|
||||||
> absolute :: Matrix -> Matrix
|
> absolute :: Matrix -> Matrix
|
||||||
> absolute (M m1)
|
> absolute (M m1)
|
||||||
> | isEmpty (M m1)= fehlerwert
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
> | matrixtyp (M m1) == KeineMatrix = fehlerwert
|
||||||
> | otherwise = M (map (map (abs)) m1)
|
> | otherwise = M (map (map (abs)) m1)
|
||||||
|
|
||||||
> sign :: Matrix -> Matrix
|
> sign :: Matrix -> Matrix
|
||||||
> sign (M m1)
|
> sign (M m1)
|
||||||
> | isEmpty (M m1)= error "Vorzeichenfunktion undefiniert"
|
|
||||||
> | matrixtyp (M m1) == KeineMatrix = 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