34 printf(
"\nCHYBA - spatny rozmer matice pro pouziti funkce inverze_3x3\n");
41 fflush(stdin);scanf(
"%*c");
47 printf(
"\n%d",i);fflush(stdin);scanf(
"%*c");printf(
"\n");
54 if (mat.
s != vek.
p)
return 0;
57 for(u=0;u<mat.
r;u++)
for(r=0;r<mat.
s;r++)res.
v[u]+=mat.
g(u,r)*vek.
v[r];
65 if(a.
p==b.
p && b.
p==c.
p){
66 for(i=0;i<a.
p;i++)c.
v[i]=a.
v[i]-b.
v[i];
76 for(u=0;u<vekt.
p;u++){
77 printf(
"%d) %4.4f\n",u,vekt.
v[u]);
87 for(v=0;v<mat.
s;v++){fprintf(soubor,
"%5.4f ",mat.
g(u,v));}
103 A.
g(0,0)=A.
g(1,1)=c*c;
104 A.
g(1,0)=A.
g(0,1)=s*s;
125 if (m.
r != m.
s || right.
p != m.
r) { printf(
"Matice a vektor pro Gaussovu eliminaci nemaji odpovidajici rozmery."); }
126 int i, j, k, radku = m.
r;
127 long double nasobitel, delitel;
131 radek =
new vektor[radku];
132 for (i = 0; i < radku; i++)radek[i].
define(radku + 1);
133 for (i = 0; i < radku; i++)
for (j = 0; j < radku; j++)radek[i].
g(j) = 1.0*m.
g(i, j);
134 for (i = 0; i < radku; i++)radek[i].
g(radku) = 1.0*right.
g(i);
135 for (i = 0; i < radku - 1; i++) {
136 if (radek[i].
g(i) == 0.0) {
139 while (found ==
false && k < radku) {
140 if (radek[k].
g(i) != 0.0) {
146 if (k == radku && found ==
false) { printf(
"Error pri hledani nenuloveho prvku na diagonale.");
enter();}
148 for (j = i + 1; j < radku; j++) {
149 if (radek[j].
g(i) != 0.0) {
150 nasobitel = 1.0*radek[i].
g(i);
151 delitel = 1.0*radek[j].
g(i);
152 radek[j].
krat(1.0*nasobitel);
153 radek[j].
deleno(1.0*delitel);
159 for (i = 0; i < radku; i++) {
160 delitel = 1.0*radek[i].
g(i);
161 radek[i].
deleno(1.0*delitel);
164 for (i = radku - 2; i > -1; i--) {
165 for (j = i + 1; j < radku; j++)radek[i].
g(radku) -= radek[j].
g(radku)*radek[i].
g(j);
166 for (j = i + 1; j < radku; j++)radek[i].
g(j) = 0.0;
178 for (i = 0; i < radku; i++)right.
g(i) = radek[i].
g(radku);
void rovna_se(vektor &co)
void rotate_vector(vektor &V, double angle)
double & g(int radek, int sloupec)
void inverze_3x3(matice &d)
int MaticexVektor(vektor &res, matice &mat, vektor &vek)
void PrintMatrix(matice &mat, FILE *&soubor)
double Determinant_3x3_doplnek(int i, int j)
void change_radky(vektor &a, vektor &b)
int RozdilVektoru(vektor &a, vektor &b, vektor &c)
void PrintVektor(vektor &vekt)
void gaussovaEliminace(matice &m, vektor &right)
void deleno(long double cislo)