3 ПРОГРАМНА РЕАЛІЗАЦІЯ
3.1 Блок схема прогами
3.2.Програма
#include <iostream.h>
#include <math.h>
double funk1( int z);
double ma_x[100][100];
double vol_ch[100];
double matrix1[100][100];
double ma_666x[100][100];
double GL_V_viz;
double Viz_d;
double otveti[100];
double X;
int g,j;
double Deter;
void main (void)
{
cout <<" vvedi ckolko y tebia yravneniy v cicteme ";
int n;
cin >> n;
while ( n > 4 ||n < 1)
{
cout<<"Vu ne mogete vvesti bolshe 4 ili menshe 2 uravneniya, vvedite esche raz ";
cin>>n;
}
//ведення кофіцієнтів при невідомих
int k,m;
for ( k =1; k <=n;k++){
for( m=1; m <=n; m++){
cout << "Vvedite koficient a [ "<<k<<","<<m<<" ]";
cin >> ma_666x[k-1][m-1];}}
//ведення вільного члена
for (k=1;k<=n;k++){
cout<<"Vedite volniy chlen [ "<<k<<" ]";
cin >>vol_ch[k-1];}
//якщо 4 рівнянь системи з 4 невідомими
if(n==4){
cout<<"MATRICA GOLOV-GO VIZ-KA"<<endl;
for(int m=0;m<=3;m++){
cout<<" "<<ma_666x[m][0]<<" "<<ma_666x[m][1]<<" "<<ma_666x[m][2]<<" "<<ma_666x[m][3]<<endl;}
//знаходимо визначник склавши усі добутки коефіцієнтів на їх алгебраїчне доповнення
for (k=0;k<=n-1;k++){
for(int e6=0;e6<=3;e6++){
for( g=0;g<=3;g++){
ma_x[e6][g]=ma_666x[e6][g];}}
GL_V_viz +=ma_x[1][k] *pow(-1,k+1) * funk1(k); }
cout<<"GOLOVNIY VIZNACHNIC ="<<GL_V_viz<<endl;
cout<<"................................................"<<endl;
if(GL_V_viz==0){cout<<"Net resheniy! ";}
//далі знаходимо додаткові визначники і одразу ж невідомі системи
if(GL_V_viz!=0){
k=0;//k - e ctovpci
do
{
for(m=0;m<=3;m++){
for( g=0;g<=3;g++){
ma_x[m][g]=ma_666x[m][g];}}
//підставим у Кий стовпець основої матриці стовпець із вольних членів, утворивши додаткові визначники.
for (m=0;m<=3;m++ ){
ma_x[m][k]=vol_ch[m];}
Viz_d=0;
/* dali cherez rozkladennia
po 2 riadky znaidem dodatkov viz-k*/
for ( m=0;m<=n-1;m++ ){
Viz_d+= ma_x[1][m]*pow(-1,m+1)*funk1(m);
}
cout<<"VIZNACHNIC DODATKOVIY"<<k+1<<"="<< Viz_d<<endl;
X=Viz_d/GL_V_viz;
otveti[k]=X;
cout<<"................................................."<<endl;
k++;
}
while (k<=3);}
}
else
{
//при 3 ьох рівнянь з 3 невідомими
if(n==3)
{
//головний визначник
for(int e6=0;e6<=2;e6++){
for( g=0;g<=2;g++){
matrix1[e6][g]=ma_666x[e6][g];}}
int u;
u=666;
GL_V_viz=funk1(u);
cout<<"GOLOVNIY VIZNACHNIC ="<<GL_V_viz<<endl;
if(GL_V_viz==0){cout<<"Net resheniy! ";}
// додаткові визначники та одразу ж невідомі системи
if(GL_V_viz!=0){
k=0;
do
{
for(int e6=0;e6<=2;e6++){
for( g=0;g<=2;g++){
matrix1[e6][g]=ma_666x[e6][g];}}
for (m=0;m<=2;m++ ){
matrix1[m][k]=vol_ch[m];}
Viz_d=funk1(u);
X=Viz_d/GL_V_viz;
otveti[k]=X;
k++;
}
while(k<=2);}
}
else{
//при 2 рівнянь з 2 невідомими
// головний визначник
if(n==2)
GL_V_viz= ma_666x[0][0]*ma_666x[1][1]-ma_666x[0][1]*ma_666x[1][0];
cout<<"GOLOVNIY VIZNACHNIC ="<<GL_V_viz<<endl;
if(GL_V_viz==0){cout<<"Net resheniy! ";}
// додаткові визначники та одразу ж невідомі системи
if(GL_V_viz!=0){
k=0;
do
{
for(int e6=0;e6<=1;e6++){
for( g=0;g<=1;g++){
matrix1[e6][g]=ma_666x[e6][g];}}
for (m=0;m<=1;m++ ){
matrix1[m][k]=vol_ch[m];}
Viz_d=matrix1[0][0]*matrix1[1][1]-matrix1[0][1]*matrix1[1][0];;
X=Viz_d/GL_V_viz;
otveti[k]=X;
k++;
}
while(k<=1);}
}
}
// для виведення відповіді на екран
if(GL_V_viz!=0){
cout<<"OTVET: ";
for ( m=0;m<=n-2;m++ ){
cout<<"X"<<m+1<<"= "<<otveti[m]<<", ";
}
cout<<"X"<<n<<"= "<<otveti[n-1]<<"."<<endl;}
}
//функція що утримує нову матрицю, викреслюючи деякий z-ий стовпець та 2 рядок. А потім підраховує визначник нової матриці уже 3 порядку
double funk1( int z)
{
// тут функція отримує нову матрицю 3 порядку з матриці 4 го
if(z!=666) {
for(int e=0;e<1;e++){
for( g=0;g<z;g++){
matrix1[e][g]=ma_x[e][g];
}}
for(e=0;e<1;e++){
for(g=z+1;g<=3;g++){
matrix1[e][g-1]=ma_x[e][g];
}}
for(e=2;e<=3;e++){
for(g=0;g<z;g++){
matrix1[e-1][g]=ma_x[e][g];
}}
for (e=2;e<=3;e++){
for(g=z+1;g<=3;g++){
matrix1[e-1][g-1]=ma_x[e][g];
}}
}
//тут рахує визначник отриманої 3 порядку
//a11a22a33 +a12a23a31 +a13a21a32 -a13a22a31 -a11a23a32 -a12a21a33
Deter=matrix1[0][0]*matrix1[1][1]*matrix1[2][2]+matrix1[0][1]*matrix1[1][2]*matrix1[2][0]
+matrix1[0][2]*matrix1[1][0]*matrix1[2][1]-matrix1[0][2]*matrix1[1][1]*matrix1[2][0]
-matrix1[0][0]*matrix1[1][2]*matrix1[2][1]-matrix1[0][1]*matrix1[1][0]*matrix1[2][2];
return Deter;
}
- ВСТУП
- 1. ВИЗНАЧНИК ТА ЙОГО ВЛАСТИВОСТІ
- 1.1.Визначники другого та третього порядку
- 1.2 Властивості визначників, теорема розкладання
- 2.МЕТОД КРАМЕРА
- 2.1 Теорема Крамера для системи 2 рівнянь із 2 невідомими
- 2.2 Теорема Крамера для системи 3 рівнянь із 3 невідомими
- 2.3 Теорема Крамера для системи n рівнянь із n невідомими
- 3 ПРОГРАМНА РЕАЛІЗАЦІЯ
- 3.2 Приклад роботи програми
- О. О. Абакумова «Обчислювальна математика-2»
- 2. Математика в знз як навчальний предмет. Цілі навчання математики в знз.
- Кафедра методів обчислювального експерименту (мое).
- Електронна обчислювальна машина
- 14. Економіст обчислювального (інформаційно-обчислювального) центру
- 30. Технік обчислювального (інформаційно-обчислювального) центру
- 71. Начальник обчислювального (інформаційно-обчислювального) центру