Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НУ”ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА АВТОМАТИКИ І ТЕЛЕМЕХАНІКИ
ЗВІТ
про виконання лабораторної роботи№1
з дисципліни „Алгоритмічні основи криптології”
на тему:
“Прямі методи розв’язування систем
лінійних алгебраїчних рівнянь”
Мета роботи: вивчити найпоширеніші прямі методи розв’язку систем лінійних алгебраїчних рівнянь, навчитись розв’язувати на ЕОМ системи алгебраїчних рівнянь, провести порівняльний аналіз розглянутих методів.
Завдання: написати програму на мові програмування Сі яка б розв’язувала систему лінійних алгебраїчних рівнянь методом LU – розкладу.
8.3*х(1) + (2.62+s)*x(2) + 4.1*x(3) + 1.9*x(4) = -10.65+B
3.92*x(1) + 8.45*x(2) + (7.78-s)*x(3) +2.46*x(4) = 12.21
3.77*x(1) + (7.21+s)*x(2) + 8.04*x(3) + 2.28*x(4) = 15.45 – B
2.21*x(1) + (3.65-s)*x(2) + 1.69*x(3) + 6.99*x(4) = -8.35
де s = 0.2*k , B = 0.2*p
k=0, p=0;
Повний текст програми.
#include<stdio.h>
#include<math.h>
#define n 4
main()
{ int k,i,j,m;
float l[n+1][n+1],u[n+1][n+1],y[n+1],x[n+1];
float s1=0,s2=0,s3=0, b[n+1], a[n+1][n+1];;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%f",&a[i][j]);
for(i=1;i<=n;i++)
scanf("%f", &b[i]);
for (i=1;i<=n;i++)
l[i][1]=a[i][1];
for (j=2;j<=n;j++)
u[1][j]=a[1][j]/a[1][1];
k=1;
do {k++;
for (i=k;i<=n;i++)
{for (m=1;m<=(k-1);m++)
s1+=(l[i][m]*u[m][k]);
l[i][k]=a[i][k]-s1;
s1=0;}
for (j=k+1;j<=n;j++)
{for (m=1;m<=(k-1);m++)
s2+=l[k][m]*u[m][j];
u[k][j]=(a[k][j]-s2)/l[k][k];
s2=0;}
} while (k!=n);
y[1]=b[1]/l[1][1];
for (i=2;i<=n;i++)
{for (m=1;m<=(i-1);m++)
s3+=(l[i][m]*y[m]);
y[i]=(b[i]-s3)/l[i][i];
s3=0; }
x[n]=y[n];
printf("%1.2f\n",x[n]);
for (i=n-1;i>=1;i--)
{for (m=i+1;m<=n;m++)
s3+=u[i][m]*x[m];
x[i]=y[i]-s3;s3=0;
printf("%1.2f\n", x[i]);}
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
s1+=a[i][j]*x[j];
printf("\ns=%f",s1);
s1=0;} }
Результати обчислень.
Введене рівняння:
8.3 2.62 4.1 1.9
3.92 8.45 7.78 2.46
3.77 7.21 8.04 2.28
2.21 3.65 1.69 6.99
-10.65 12.21 15.45 -8.35
Розв’язки та перевірка:
Х1=-0.74;
Х2=4.60;
Х3=-1.18;
Х4=-3.01;
S1=-10.650002
S2=12.209998
S3=15.450001
S4=-8.350000
Висновок:
Розв’язання систем лінійних алгебраїчних рівнянь методом Гауса або LU - розкладу можна досить легко реалізувати на ЕОМ за допомогою програми в середовищі Сі. Основна перевага методу LU – розкладу полягає в можливості простішого одержання розв’язку для різних векторів b системи лінійних рівнянь. Розв’язання таких систем на ЕОМ є дуже актуальним, оскільки цей процес є набагато легшим та короткотривалішим ніж розв’язання систем лінійних алгебраїчних рівнянь вручну.