Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная.docx
Скачиваний:
22
Добавлен:
03.03.2016
Размер:
1.13 Mб
Скачать

6. Текст программы

#include <cstdlib>

#include <iostream>

#include <math.h>

#include <fstream>

using namespace std;

int metod_LU(float **A,float*B,int n,float *x)

{

int i,j,k;

float **U,**L,*y;

y=new float[n];

// b=new float[n];

U=new float *[n];

L=new float *[n];

for(i=0;i<n;i++)

{

U[i]=new float [n];

L[i]=new float [n];

}

float S;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

{

U[0][i]=A[0][i];

L[i][0]=A[i][0]/U[0][0];

if(i<=j)

{

S=0;

for(k=0;k<i-1;k++)

S=S+L[i][k]*U[k][j];

U[i][j]=A[i][j]-S;

}

else

U[i][j]=0;

if (i>j)

{

S=0;

for(k=0;k<j-1;k++)

S=S+L[i][k]*U[k][j];

if(U[j][j]==0)

return 0;

else

L[i][j]=(A[i][j]-S)/U[j][j];

}

else L[i][j]=0;

}

cout<<"\n U";

for (i=0; i<n; cout<<endl,i++)

for (j=0; j<n; j++)

cout<<U[i][j]<<"\t";

cout<<"\n L";

for (i=0; i<n; cout<<endl,i++)

for (j=0; j<n; j++)

cout<<L[i][j]<<"\t";

y[0]=B[0];

for(i=1;i<n;i++)

{

S=0;

for(k=0;k<=i;k++)

S=S+L[i][k]*y[k];

y[i]=(B[i]-S);

}

if(U[n-1][n-1]==0)

return 0;

else

x[n-1]=y[n-1]/U[n-1][n-1];

for(i=n-2;i>=0;i--)

{

S=0;

for(k=i+1;k<n;k++)

S=S+U[i][k]*x[k];

if(U[i][i]==0)

return 0;

else

x[i]=(y[i]-S)/U[i][i];

}

return 1;

}

int main()

{

int i,j, m,n,k;

float **A,*B,*x,*I,Pi,Pn, R1,R2,R3,R4,R_4,R5,R6,R_6,E2,E3,Ik2,Ir2,rez,I1,I2,I3,I4,I5,I6;

ifstream f;

ofstream f1;

cout<<"Vvedite 1-esli vvod iz faila,2-esli s klaviaturi";

cin>>m;

if(m==1)

{

f.open("F:\\kurs\\1.txt",ios::in);

if(f)

{

f>>n;

I=new float [n];

f>>R1;

f>>R2;

f>>R3;

f>>R4;

f>>R_4;

f>>R5;

f>>R6;

f>>R_6;

f>>E2>>E3>>Ik2;

f.close();

}

else

{

cout<<"Not file";

return 0;

}

}

else

{

cout<<"Vvedite R \n";

n=7;

cout<<"R1";

cin>>R1;

cout<<"R2";

cin>>R2;

cout<<"R3";

cin>>R3;

cout<<"R4";

cin>>R4;

cout<<"R_4";

cin>>R_4;

cout<<"R5";

cin>>R5;

cout<<"R6";

cin>>R6;

cout<<"R_6";

cin>>R_6;

cout<<"E2=";cin>>E2;

cout<<"E3=";cin>>E3;

cout<<"Ik2=";cin>>Ik2;

}

A=new float*[n];

for(i=0;i<n;i++)

A[i]=new float[n];

A[0][0]=-1;

A[0][1]=1;

A[0][2]=0;

A[0][3]=0;

A[0][4]=1;

A[0][5]=0;

A[0][6]=0;

A[1][0]=0;

A[1][1]=0;

A[1][2]=1;

A[1][3]=1;

A[1][4]=-1;

A[1][5]=0;

A[1][6]=0;

A[2][0]=0;

A[2][1]=1;

A[2][2]=-1;

A[2][3]=0;

A[2][4]=0;

A[2][5]=1;

A[2][6]=0;

A[3][0]=0;

A[3][1]=1;

A[3][2]=0;

A[3][3]=0;

A[3][4]=0;

A[3][5]=0;

A[3][6]=-1;

A[4][0]=0;

A[4][1]=0;

A[4][2]=R3;

A[4][3]=-1*(R4+R_4);

A[4][4]=0;

A[4][5]=((R6*R_6)/(R4+R_4));

A[4][6]=0;

A[5][0]=R1;

A[5][1]=0;

A[5][2]=R3;

A[5][3]=0;

A[5][4]=R5;

A[5][5]= ((R6*R_6)/(R4+R_4));

A[5][6]=0;

A[6][0]=-R1;

A[6][1]=R2;

A[6][2]=0;

A[6][3]=0;

A[6][4]=0;

A[6][5]=-1*((R6*R_6)/(R4+R_4));

A[6][6]=0;

B=new float [n];

B[0]=0;

B[1]=0;

B[2]=0;

B[3]=Ik2;

B[4]=E3;

B[5]=E3;

B[6]=E2;

x=new float [n];

rez=metod_LU(A,B,n,x);

if(rez==1)

{

I1=x[0];

I2=x[1];

I3=x[2];

I4=x[3];

I5=x[4];

I6=x[5];

Ir2=I2-Ik2;

cout<<"\nI1="<<I1;

cout<<"\nI2="<<I2;

cout<<"\nI3="<<I3;

cout<<"\nI4="<<I4;

cout<<"\nI5="<<I5;

cout<<"\nI6="<<I6;

cout<<"\nIr2="<<Ir2;

Pi= E2*I2+E3*I3-R2*I2*Ik2;cout<<"\nPi="<<Pi;

Pn=R1*I1*I1+R2*I2*I2+R3*I3*I3+R4*I4*I4+ R5*I5*I5+R6*I6*I6;

cout<<"\nPn="<<Pn;

}

else

cout<<"\n metod eror";

f1.open("F:\\kurs\\2.txt",ios::out);

f1<<"\n Znachenie tokov \n";

for(i=0;i<n;f1<<endl,i++)

f1<<I[i]<<"\t";

f1<<"\n Moshnost istochnikov toka Pist="<<Pi;

f1<<"\n Moshnost nagruzok Pnagr="<<Pn;

system("PAUSE");

return EXIT_SUCCESS;

}