Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
про виконання лабораторної роботи №1
з курсу “Алгоритмічні основи криптології”
на тему: “Прямі методи розв’язування систем
лінійних алгебраїчних рівнянь”
Мета роботи: вивчити найпоширеніші прямі методи розв’язку систем лінійних алгебраїчних рівнянь, навчитись розв’язувати на ЕОМ системи алгебраїчних рівнянь, провести порівняльний аналіз розглянутих методів.
Завдання: написати програму на мові програмування Сі яка б розв’язувала систему лінійних алгебраїчних рівнянь методом Гауса.
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=2, p=2.
Блок – схема алгоритму роботи програми
Текст програми:
#include <stdio.h>
#include <math.h>
const int n=4;
const int m=5;
void main(void)
{
int i,k,l;
double a[4][5],z[4][5],x[4];
double h,c,s,mm;
for(i=0;i<n;i++)
{
for(k=0;k<m;k++)
{
printf("a[%i%i]= ",i+1,k+1);
scanf("%lf",&a[i][k]);
z[i][k]=a[i][k];
}
}
for(l=0;l<(n-1);l++){
c=a[l][l];
for(i=l+1;i<n;i++){
mm=-a[i][l]/c;
for(k=l+1;k<=n;k++)
a[i][k]=a[i][k]+mm*a[l][k];
}
}
x[n-1]=-a[n-1][n]/a[n-1][n-1];
for(i=n-2;i>=0;i--){
s=a[i][n];
for(k=i;k<n;k++)
s+=a[i][k]*x[k];
x[i]=-s/a[i][i];
}
for(i=0;i<n;i++)
printf("\nx[%i]=%lf ",i+1,x[i]);
h=0;
for(i=0;i<n;i++){
for(k=0;k<(m-1);k++)
h+=z[i][k]*x[k];
h+=z[i][n];
printf("h ");
h=0.0;
}
}
Результат виконання програми:
Висновок: Розв’язання систем лінійних алгебраїчних рівнянь методом Гауса або LU - розкладу можна досить легко реалізувати на ЕОМ за допомогою програми в середовищі Сі. Розв’язання таких систем на ЕОМ є дуже актуальним, оскільки цей процес є набагато легшим та короткотривалішим ніж розв’язання систем лінійних алгебраїчних рівнянь вручну.