Ҕ
()
1
1
: 1.1
..
: ..
, 2012.
.
1. ( ).
2. .
3. .
( ).
.
1. . ,
Ax=f (1)
, - . , .
, , , . , , .. . , , .
(2)
, . . , (2)
(3)
(3) . . , .
. , . (2)
. , , .
, .
2. . ,
- . , .
1. , .
|
|
2. , - l - .
,
, .
1) ( , ) ( ).
2) - l -é ñòðîê.
3) - l - .
:
(4)
(1),
(5)
.
(6)
(6)
(7)
.. (4)
, (6) . (7)
(7)
(8)
(9)
(9) .
(10)
, (10) (9)
(11)
. (12)
(12) (8) -
(11) . (11)
(13)
(14)
(14)
(13)
,
(15)
(16)
.
, (16) .
, (16)
PA=LU, (17)
L - , , P - .
(18)
2) ,
3)
.. - , .
(18), ,
(19)
(16) ,
|
|
. - L - , (17) . , , , .. , .
3. . , , (1).
,
(20)
- ,
- .
, , (19), , ,
PAx=Pf, (21)
- .
.
1. -
, -
.
.4.
. -
,
=LU, (22)
L- U- . (1) .
4. 1. m - .
m=2, ..
=, - . , , ..
.
m -1. , . m. m
: . m-1 , .
. . , . .. , m-1 , - . , ,
.
l m, , m-1
(23) . , .
.
.
a) ( ).
b) .
.
.
#include<iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
float det(float [20][20], int);
void iskl(float a[20][20], int k, int n)
{
int i, j;
float r, b[40];
r=a[k][k];
for (j=k; j<n+1; j++) a[k][j]/=r;
for (i=k+1; i<n; i++)
{
r=a[i][k];
for(j=k; j<n+1; j++) a[i][j]-=a[k][j]*r;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int i, j, n, k;
float a[20][20], d[20][20], b[40], temp[20][20], t, intDet;
char anyKey;
//____sozdanie____
ofstream outfile("matr1.txt");
cout<<"VVedite razmernost yravneniya: ";
cin >> n;
cout<<endl;
cout<<"Vvedite postro4no matricy:"<<endl;
for (i=0; i<(n*n+n); i++)
{
cin >> t;
outfile << t <<" ";
}
outfile.close();
cout<<"Poly4ennaya matrica:"<<endl;
|
|
//_____4tinie i pe4at_____
fstream infile("matr1.txt");
for (i=0; i<n; i++) //bilo n+1
{
cout<<endl;
for (j=0; j<n+1; j++)
{
infile >> t;
temp[i][j]=t;
cout<<t<<" ";
}
}
for (i=0; i<n; i++)
for (j=0; j<n; j++)
a[i][j]=temp[i][j];
//vector
// for (i=0; i<n; i++)
// b[i]=temp[i][n+1];
intDet=det(a, n);
if (intDet==0)
{
cout<<"Reweniya net. ";
goto net;
}
else
{
cout<<"Sistema rewaema)) YRA))"<<endl;
cout<<"det= "<<intDet;
}
cout<<"Treygolnii vid:"<<endl;
for (i=0; i<n; i++) iskl(temp, i, n);
for (i=0; i<n; i++)
{
cout<<endl;
for (j=0; j<n+1; j++) cout<<temp[i][j]<<' ';
}
cout<<"\n";
for (i=0; i<n+1; i++){b[i]=temp[i][n]; cout<<b[i]<<" ";}
cout<<"\n"<<"Rewenie SLAY:"<<endl;
for (i=n; i>-1; i--)
{
b[i]/=temp[i][i];
for (j=i+1; j<n; j++) b[i]-=b[j]*temp[i][j];
}
for (i=0; i<n; i++) cout<<b[i]<<" ";
net:
cout<<"\nPress anykey to exit.";
cin>>anyKey;
return 0;
}
float det(float b[20][20], int n)
{
float x,s;
int i,j,k;
for (i=0; i<n-1; i++)
for (k=i+1; k<n; k++)
{
x=b[k][i]/b[i][i];
for (j=i; j<n; j++) b[k][j]=b[k][j]-b[i][j]*x;
}
s=1;
for (i=0; i<n; i++) s=s*b[i][i];
return s;
}
.
#include<iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
static int n;
void obrat(double **a)
{double **d,vrem,max,tryam;
int i,j,*p,jmax,temp;
d=new double *[2*n];
for (i=0;i<n;i++) d[i]=new double[n];
for(i=0;i<n;i++)
{for(j=0;j<n;j++)d[i][j]=a[i][j];
for(j=n;j<2*n;j++)
{if(j==n+i)d[i][j]=1;
else d[i][j]=0;
}
}
p=new int[n];
for(j=0;j<n;j++)p[j]=j;
//k-nomer pervogo uravn
for(int k=0;k<n-1;k++)
{max=fabs(d[k][k]);
jmax=j;
for(j=k;j<n;j++)
if(fabs(d[k][j])>max)
{max=fabs(d[k][j]);
jmax=j;
temp=p[k];
p[k]=p[jmax];
p[jmax]=temp;
}
for(i=k;i<n;i++)
{tryam=d[i][k];
d[i][k]=d[i][jmax];
d[i][jmax]=tryam;
}
for(i=k+1;i<n;i++)
{vrem=d[i][k]/d[k][k];
for(j=k;j<2*n;j++) d[i][j]-=vrem*d[i][j];
}
}
for(int k=n-1;k>0;k--)
{for(i=k-1;i>=0;i--)
vrem=d[i][k]/d[k][k];
for(j=k;j<2*n;j++)d[i][j]-=vrem*d[i][j];
}
for(i=0;i<n;i++)
{for(j=n;j<2*n;j++)
d[i][j]=d[i][j]/d[i][i];
d[i][i]=1;
}
for(i=0;i<n;i++)
{for(j=n;j<2*n;j++)
cout<<d[p[i]][j]<<" ";
cout<<endl;
}
}
int main ()
{int i,j;
cout<<"vvedite razmer matrici"<<endl;
cin>>n;
double **a;
a=new double*[n];
for (i=0;i<n;i++) a[i]=new double[n];//i-stroki,j-stolbci
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{cout<<" vvedite elementi matrici a["<<i<<"]["<<j<<"]"<<endl;
cin>>a[i][j];
}
}
for (i=0;i<n;i++)//vivod matrici
{
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
}
obrat(a);
getchar ();
getchar ();
return 0;
}
: