1 |
// (c) 2006 Jean-Marc DROUET/OptiS ********************************** elig.h * > |
2 |
// |
3 |
// 22-06-2006 |
4 |
// |
5 |
//****************************************************************************** |
6 |
|
7 |
#ifndef eligh |
8 |
#define eligh |
9 |
|
10 |
#include<math.h> |
11 |
#include<stdlib.h> |
12 |
|
13 |
#include "bib_0000.h" |
14 |
#include "bib_m000.h" |
15 |
//#include "mae.h" |
16 |
|
17 |
//****************************************************************************** |
18 |
// types globaux du module elig |
19 |
|
20 |
//****************************************************************************** |
21 |
// constantes globales du module elig |
22 |
|
23 |
//****************************************************************************** |
24 |
// variables globales du module elig |
25 |
|
26 |
//****************************************************************************** |
27 |
// |
28 |
// conditionnement de la diagonale de la matrice des coefficients |
29 |
// |
30 |
// on échange les lignes A pour qu'aucun élément de la diagonale soit nul |
31 |
// h |
32 |
|
33 |
ty_RSLT condi_diag2_v1( vifl *_A , // matrice des coefficients [A] |
34 |
vifl *_b1 , // vecteur {b} no 1 |
35 |
vifl *_b2 , // vecteur {b} no 2 |
36 |
ulong _n ); // taille du système |
37 |
|
38 |
//****************************************************************************** |
39 |
// |
40 |
// conditionnement de la diagonale de la matrice des coefficients |
41 |
// |
42 |
// on élimine les lignes et les colonnes pour lesquelles lélément de la |
43 |
// diagonale est nul (on réduit la taille du système) |
44 |
// > |
45 |
|
46 |
ty_RSLT condi_diag2_v2( vifl *_A , // matrice des coefficients [A] |
47 |
vifl *_b1 , // vecteur {b} no 1 |
48 |
vifl *_b2 , // vecteur {b} no 2 |
49 |
ulong _n , // taille initiale du système |
50 |
ulong *_nf ); // taille finale du système |
51 |
|
52 |
//****************************************************************************** |
53 |
// |
54 |
// échange de colonnes |
55 |
// h |
56 |
|
57 |
ty_RSLT echC( vifl *_M , |
58 |
ulong _nbr_L , |
59 |
ulong _nbr_C , |
60 |
ulong _no_C1 , |
61 |
ulong _no_C2 ); |
62 |
|
63 |
//****************************************************************************** |
64 |
// |
65 |
// échange de lignes |
66 |
// h |
67 |
|
68 |
ty_RSLT ech_lignes( vifl *_M , // matrice concernée |
69 |
ulong _nbr_colonnes , // nbre de colonnes |
70 |
ulong _no_ligne_1 , // no de la 1ère ligne à échanger (base 1) |
71 |
ulong _no_ligne_2 ); // no de la 1e ligne à échanger (base 1) |
72 |
|
73 |
//****************************************************************************** |
74 |
// |
75 |
// élimination d'une colonne |
76 |
// h |
77 |
|
78 |
ty_RSLT elim_colonne( vifl *_M , // matrice concernée |
79 |
ulong _nbr_lignes , // nbre de lignes |
80 |
ulong _nbr_colonnes , // nbre de colonnes |
81 |
ulong _no_colonne ); // no de la colonne à éliminer (base 1) |
82 |
|
83 |
//****************************************************************************** |
84 |
// |
85 |
// élimination d'une ligne |
86 |
// h |
87 |
|
88 |
ty_RSLT elim_ligne( vifl *_M , // matrice concernée |
89 |
ulong _nbr_lignes , // nbre de lignes |
90 |
ulong _nbr_colonnes , // nbre de colonnes |
91 |
ulong _no_ligne ); // no de la ligne à éliminer (base 1) |
92 |
|
93 |
//****************************************************************************** |
94 |
// |
95 |
// résolution de Ax=b par l'élimination de Gauss (pas d'échanges) |
96 |
// h |
97 |
|
98 |
ty_RSLT elig( vifl *_A , // matrice des coefficients [A] |
99 |
vifl *_b , // vecteur {b} |
100 |
ulong _n , // taille du système |
101 |
vifl *_x ); // vecteur solution {x} |
102 |
|
103 |
//****************************************************************************** |
104 |
// |
105 |
// résolution de Ax=b par l'élimination de Gauss (pas d'échanges) |
106 |
// |
107 |
// donne 2 vecteurs solution {x} pour 2 vecteurs {b} |
108 |
// h |
109 |
|
110 |
ty_RSLT elig2( vifl *_A , // matrice des coefficients [A] |
111 |
vifl *_b1 , // vecteur {b} no 1 |
112 |
vifl *_b2 , // vecteur {b} no 2 |
113 |
ulong _n , // taille du système |
114 |
vifl *_x1 , // vecteur solution {x} no 1 |
115 |
vifl *_x2 ); // vecteur solution {x} no 2 |
116 |
|
117 |
//****************************************************************************** |
118 |
// |
119 |
// résolution de Ax=b par l'élimination de Gauss (avec échanges de lignes) |
120 |
// |
121 |
// donne 2 vecteurs solution {x} pour 2 vecteurs {b} |
122 |
// h |
123 |
|
124 |
ty_RSLT elig2_v2( vifl *_A , // matrice des coefficients [A] |
125 |
vifl *_b1 , // vecteur {b} no 1 |
126 |
vifl *_b2 , // vecteur {b} no 2 |
127 |
ulong _n , // taille du système |
128 |
vifl *_x1 , // vecteur solution {x} no 1 |
129 |
vifl *_x2 ); // vecteur solution {x} no 2 |
130 |
|
131 |
//****************************************************************************** |
132 |
// |
133 |
// résolution de Ax=b par l'élimination de Gauss (pas d'échanges) |
134 |
// h |
135 |
|
136 |
ty_RSLT elig_32x387( vifl *_A , // matrice des coefficients [A] |
137 |
vifl *_b , // vecteur {b} |
138 |
ulong _n , // taille du système |
139 |
vifl *_x ); // vecteur solution {x} |
140 |
|
141 |
ty_RSLT elig_32x387_v2( vifl *_A , // matrice des coefficients [A] |
142 |
vifl *_b , // vecteur {b} |
143 |
ulong _n , // taille du système |
144 |
vifl *_x ); // vecteur solution {x} |
145 |
|
146 |
ty_RSLT elig_32x387_v3( vifl *_A , // matrice des coefficients [A] |
147 |
vifl *_b , // vecteur {b} |
148 |
ulong _n , // taille du système |
149 |
vifl *_x ); // vecteur solution {x} |
150 |
|
151 |
//****************************************************************************** |
152 |
// |
153 |
// résolution de Ax=b (linéaire) par l'éli. de Gauss (pivot total) |
154 |
// h |
155 |
|
156 |
//ty_RSLT elig_PT(vifl *_A, vifl *_b, ulong _n, vifl *_x); |
157 |
|
158 |
// (c) 2006 Jean-Marc DROUET/OptiS ********************************** elig.h * < |
159 |
|
160 |
#endif |