- •Пояснительная записка
- •Задание
- •Тема курсовой работы
- •Аннотация
- •Оглавление
- •Введение
- •Постановка задачи
- •Описание математической модели решения задачи
- •3. Блок-схема алгоритма задачи
- •3.1Блок-схема метода lu-разложения
- •3.2Блок-схема функции main
- •4.Описание алгоритма
- •5. Характеристика данных и их условные обозначения
- •6. Текст программы
- •7. Контрольный расчёт с помощью Scilab
- •8. Анализ результатов
- •Заключение
- •Список используемой литературы
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;
}