5.3 KiB
5.3 KiB
None
<html>
<head>
</head>
</html>
In [ ]:
#use "topfind";;
#require "jupyter.notebook";;
#require "lacaml.top";;
#require "alcotest";;
#require "str";;
#require "bigarray";;
#require "zarith";;
#require "getopt";;
open Lacaml.D
In [ ]:
let n_ao = 8;;
let n_mo = 6;;
let ran=
Mat.random ~range:1. ~from:0. n_ao n_mo;;
In [ ]:
(* Extraction des colonnes i,j,k,... d'une matrice à partir d'une liste [i,j,k,...] *)
let toto = [1;2;3];;
(*
ran;;
let new_ran = Mat.transpose_copy ran ;;
let vec = Mat.to_col_vecs ran;;
vec.(0);;
let f a = vec.(a);;
let n = List.map f toto;;
let vec_list = [vec.(0);vec.(1)];;
let mat_n = Mat.of_col_vecs_list vec_list;;
let occ ran toto =
let new_ran = Mat.transpose_copy ran
in
let vec = Mat.to_col_vecs new_ran
in
let f a = vec.(a+1)
in
let vec_list = List.map f toto
in Mat.of_col_vecs_list vec_list;;
occ ran toto;;
let list_a = [0;0;2;0;5];;
let new_list list= List.filter (fun x -> x > 0.) list;;
let vecto = Vec.init 8 (fun i -> if List.mem i toto
then 0.
else float_of_int(i) );;
let vecto_list = Vec.to_list vecto;;
new_list vecto_list;;
*)
(******************)
(*
ran;;
let vec_of_mat = Mat.to_col_vecs ran;;
let f a = vec_of_mat.(a-1);;
vec_of_mat.(5);;
let vec_list = List.map f toto;;
let new_m = Mat.of_col_vecs_list vec_list;;
*)
(* Fp *)
let miss_elem mat list =
let n_mo = Mat.dim2 mat
in
let vec = Vec.init (n_mo) (fun i ->
if List.mem i list
then 0.
else float_of_int(i))
in
let vec_list = Vec.to_list vec
in
let g a = int_of_float(a)
in
let vec_list_int = List.map g vec_list
in
List.filter (fun x -> x > 0) vec_list_int;;
let split_mat mat list =
let vec_of_mat = Mat.to_col_vecs mat
in
let f a = vec_of_mat.(a-1)
in
let vec_list_1 = List.map f list
in
let list_2 = miss_elem mat list
in
let vec_list_2 = List.map f list_2
in (Mat.of_col_vecs_list vec_list_1,Mat.of_col_vecs_list vec_list_2);;
let m_occ , m_vir = split_mat ran toto;;
(*
let miss_elem mat list =
let n_mo = Mat.dim2 mat
in
let vec = Vec.init (n_mo) (fun i ->
if List.mem i list
then 0.
else float_of_int(i))
in
let vec_list = Vec.to_list vec
in
let g a = int_of_float(a)
in
let vec_list_int = List.map g vec_list
in
List.filter (fun x -> x > 0) vec_list_int;;
*)
(*let tata = miss_elem toto;;
let titi = [1.;2.]
let f a = int_of_float(a);;
let test list = List.map f list;;
test titi;;
*)
In [ ]:
let m_occ , m_vir = split_mat ran toto;;
In [ ]:
let nocc = n_mo / 2;;
(* Fonction de rassemblement de 2 matrices *)
let assemble = Mat.init_cols n_ao n_mo ( fun i j ->
if j > nocc
then m_vir.{i,j-nocc}
else m_occ.{i,j})
In [ ]:
let tutu = List.init nocc (fun i -> i)
In [ ]:
In [ ]: