0votos

resolver ecuaciones de primer grado con n incognitas en Haskell

por josejuan hace 2 años

Aplicando directamente el método que nos enseñan(ban?) en la escuela.

La idea es realizar un programa que encuntre el valor de las variables de n ecuaciones. el ingreso de datos puede ser por el teclado como desde un archivo, debera contar con catura de errores y ayuda para el ingreso de datos. Debe indicar cuando hay inconsistencia (no tine solución)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Data.Matrix (Matrix, detLU, nrows, ncols, mapCol) 
import Data.Vector 
 
solveLinearSystem :: (Ord a, Fractional a) ⇒ Matrix a → Vector a → 𝐌 (Vector a) 
solveLinearSystem m k = 
  if detLU m ≡ 0 ∨ nrows m ≢ ncols m  
   then 𝑁 
   else 𝐽 $ fromList [detLU w / detLU m 
                       | i ← [1 … ncols m] 
                       , let w = mapCol (λj _ → k!(j - 1)) i m] 
 
 
{- 
 
-- Como siempre, podemos usar cualquier tipo de escalar (reales, racionales, complejos, ...) 
 
> solveLinearSystem (M.fromList 2 2 [2, 3, 5, 6]) (V.fromList [5, 4])  
Just [-6.0000000000000036,5.66666666666667] 
 
> solveLinearSystem (M.fromList 2 2 [2, 3, 5, 6]) (V.fromList [5, 4]) :: Maybe (Vector Rational) 
Just [(-6) % 1,17 % 3] 
 
 
-} 
2 comentarios
0votos

Escrito por El_Profe hace 2 años

gracias por tu solución
Lo podrías resolver sin importar las funciones?
0votos

Escrito por josejuan hace 2 años

¿Para qué?, sólo es calcular el determinante

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.