for k := 1 to n do
for i := 1 to n do
begin
if k=i then r[k,i] := 1
else r[k,i] := 0;
t[k,i] := 0;
end;
for m1 := 1 to n do
begin
if m1 = 1 then
begin
for i := 1 to n do
t[i,1] := m[i,1];
for i := 2 to n do
r[1,i] := m[1,i]/t[1,1];
end
else
begin
k := m1;
for i := m1 to n do
begin
t[i,k] := m[i,k];
for l := 1 to k-1 do
t[i,k] := t[i,k] - t[i,l]*r[l,k];
end;
i := m1;
for k := i+1 to n do
begin
r[i,k] := m[i,k];
for l := 1 to i-1 do
r[i,k] := r[i,k] - t[i,l]*r[l,k];
r[i,k] := r[i,k] / t[i,i];
end;
end;
end; end;
{ процедура обращения нижней треугольной матрицы } procedure BackMat (var t : mattype; n : byte); var i,k,l : byte;
x : mattype; begin
for i := 1 to n do
x[i,i] := 1/t[i,i];
for k := 1 to n-1 do
for i := k+1 to n do
begin
x[i,k] := 0;
for l := k to i-1 do
x[i,k] := x[i,k] - t[i,l]*x[l,k];
x[i,k] := x[i,k]/t[i,i];
end;
t := x end;
var m,m1,r,t : mattype;
n : byte; { ------------- основная программа ---------------- } begin
writeln ('Лабораторная работа N 2 ');
InputMat(m,n); { ввод матрицы m }
GetRnT(m,r,t,n);{получение треугольных матриц t и r}
Writeln('Матрица T: ');
WriteMat(t,n,n);
readln;
Writeln('Матрица R: ');
WriteMat(r,n,n);
readln;
BackMat(t,n); { обращение матрицы t }
Transpose(r,n); { транспонирование матрицы r }
BackMat(r,n); {обращение матрицы r (транcпонир.)}
Transpose(r,n);{транспонирование обращенной м-цы r }
MulMat(r,n,n,t,n,n,m1,n,n);
{получение матрицы,обратной матрице m}
WriteMat (m1,n,n);{ печать обратной матрицы }
readln;
MulMat(m,n,n,m1,n,n,m,n,n); { Проверка вычислений }
WriteMat(m,n,n);
readln; end.
ЛАБОРАТОРНАЯ РАБОТА №4 «Методы решения систем линейных уравнений ». Студента группы ПВ-22 Малютина Максима.
Задание. Решить систему по схеме Халецкого с точностью до 0,0001.
В
ариант 8.При разбиении матрицы А на две треугольные, используются следующие формулы:
Получены следующие результаты: М
атрица T: Матрица R:program lab_3; { Лабораторная работа по вычмслительной математике N 3 Нахождение матрицы, обратной данной }
const Sizem = 10; { максимальная размерность матрицы }
type mattype = array [1..Sizem,1..Sizem] of double;
{ процедура для вывода матрицы на экран } procedure WriteMat (var m : mattype;n,n1 : byte); var k,i : byte; begin
writeln;
for k := 1 to n do
begin
for i := 1 to n1 do
write(m[k,i] : 7:3,' ');
writeln
end; end;
{ процедура ввода значений элементов матрицы } procedure inputmat (var m : mattype; var n : byte); var k,i : byte; begin
writeln;
write ('Размер матрицы = ');
readln(n);
for k := 1 to n do
for i := 1 to n do
read (m[k,i]); end;
{ процедура транспонирования матрицы } procedure Transpose (var m : mattype;n : byte); var k,i : byte;
ttt : double; begin
for k := 1 to n do
for i := k+1 to n do
begin
ttt := m[k,i];
m[k,i] := m[i,k];
m[i,k] := ttt;
end; end;
{ процедура умножения двух матриц (a*b=c) } procedure MulMat (a : mattype; ma,na : byte;
b : mattype; mb,nb : byte;
var c : mattype; var mc,nc : byte); var k,i,j : byte;
s : double; begin
if na = nb then
begin
mc := ma;
nc := nb;
for k := 1 to mc do
for j := 1 to nc do
begin
s := 0;
for i := 1 to nc do
s := s+a[k,i]*b[i,j];
c[k,j] := s;
end;
end
else
begin
writeln('Неправильный размер матрицы !');
halt
end; end;
{ процедура получения двух треугольных матриц произведение которых равно матрице m } procedure GetRnT (var m,r,t : mattype; n : byte); var k,i,m1,l : byte; begin
for k := 1 to n do
for i := 1 to n do
begin
if k=i then r[k,i] := 1
else r[k,i] := 0;
t[k,i] := 0;
end;
for m1 := 1 to n do
begin
if m1 = 1 then
begin
for i := 1 to n do
t[i,1] := m[i,1];
for i := 2 to n do
r[1,i] := m[1,i]/t[1,1];
end
else
begin
k := m1;
for i := m1 to n do
begin
t[i,k] := m[i,k];
for l := 1 to k-1 do
t[i,k] := t[i,k] - t[i,l]*r[l,k];
end;
i := m1;
for k := i+1 to n do
begin
r[i,k] := m[i,k];
for l := 1 to i-1 do
r[i,k] := r[i,k] - t[i,l]*r[l,k];
r[i,k] := r[i,k] / t[i,i];
end;
end;
end; end;
{ процедура обращения нижней треугольной матрицы } procedure BackMat (var t : mattype; n : byte); var i,k,l : byte;
x : mattype; begin
for i := 1 to n do
x[i,i] := 1/t[i,i];
for k := 1 to n-1 do
for i := k+1 to n do
begin
x[i,k] := 0;
for l := k to i-1 do
x[i,k] := x[i,k] - t[i,l]*x[l,k];
x[i,k] := x[i,k]/t[i,i];
end;
t := x end;
var m,m1,r,t : mattype;
n : byte; { ------------- основная программа ---------------- } begin
writeln ('Лабораторная работа N 2 ');
InputMat(m,n); { ввод матрицы m }
GetRnT(m,r,t,n);{получение треугольных матриц t и r}
Writeln('Матрица T: ');
WriteMat(t,n,n);
readln;
Writeln('Матрица R: ');
WriteMat(r,n,n);
readln;
BackMat(t,n); { обращение матрицы t }
Transpose(r,n); { транспонирование матрицы r }
BackMat(r,n); {обращение матрицы r (транcпонир.)}
Transpose(r,n);{транспонирование обращенной м-цы r }
MulMat(r,n,n,t,n,n,m1,n,n);
{получение матрицы,обратной матрице m}
WriteMat (m1,n,n);{ печать обратной матрицы }
readln;
MulMat(m,n,n,m1,n,n,m,n,n); { Проверка вычислений }
WriteMat(m,n,n);
readln; end.
ЛАБОРАТОРНАЯ РАБОТА №5 «Методы решения систем линейных уравнений ».
Студента группы ПВ-22 Малютина Максима.
Задание. Решить систему линейных уравнений методом квадратных корней с точностью до 0,001.
В
ариант 8.При разбиении матрицы А на треугольную используются следующая формулы:
j
=1..n.const size=10;
type vector=array[1..size] of real;
matrix=array[1..size] of vector;
Procedure InputVector(var a:vector;n:byte);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ый элемент ');
readln(a[i]);
end;
end;
Procedure InputMatrix(var a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ую строку матрицы ');
InputVector(a[i],n)
end;
end;
Procedure OutputVector(var a:vector;n:byte);
var i:byte;
begin
for i:=1 to n do write(a[i]:10:5);
writeln
end;
Procedure OutputMatrix(var a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do outputvector(a[i],n)
end;
Procedure GetT(var t:matrix;a:matrix;n:byte);
var i,j,l:byte;
s:real;
begin
for i:=1 to n do
for j:=1 to n do t[i,j]:=0;
for j:=1 to n do
begin
s:=0;
for l:=1 to j-1 do s:=s+sqr(t[j,l]);
s:=a[j,j]-s;
t[j,j]:=sqrt(s);
for i:=j+1 to n do
begin
s:=0;
for l:=1 to j-1 do s:=s+t[i,l]*t[j,l];
t[i,j]:=(a[i,j]-s)/t[j,j]
end;
end;
end;
procedure MulMatrix(a:matrix;ma,na:byte;b:matrix;mb,nb:byte;var c:matrix;var mc,nc:byte);
var i,j,k:byte;
s:real;
begin
if na=nb then
begin
mc:=ma;
nc:=nb;
for k:=1 to mc do
for j:=1 to nc do
begin
s:=0;
for i:=1 to nc do
s:=s+a[k,i]*b[i,j];
c[k,j]:=s
end;
end
else
begin
writeln('Неверные размеры матриц !!! ');
halt
end;
end;
procedure MulVector(a:matrix;ma,na:byte;b:vector;nb:byte;var c:vector;var nc:byte);
var i,j:byte;
s:real;
begin
if na=nb then
begin
nc:=nb;
for i:=1 to nc do
begin
s:=0;
for j:=1 to nc do s:=s+a[i,j]*b[j];
c[i]:=s;
end;
end
else
begin
writeln('Неверные размеры матриц !!! ');
halt
end;
end;
Procedure TransposeMatrix(var a:matrix;n:byte);
var i,j:byte;
s:real;
begin
for i:=1 to n do
for j:=1 to n do
begin
s:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=s
end;
end;
procedure GetY(t:matrix;b:vector;var y:vector;n:byte);
var i,k:byte;
s:real;
begin
for i:=1 to n do
begin
s:=0;
for k:=1 to i-1 do s:=s+t[i,k]*y[k];
y[i]:=(b[i]-s)/t[i,i];
end;
end;
procedure GetX(t:matrix;y:vector;var x:vector;n:byte);
var j,k:byte;
s:real;
begin
for j:=n downto 1 do
begin
s:=0;
for k:=j+1 to n do s:=s+t[k,j]*x[k];
x[j]:=(y[j]-s)/t[j,j];
end;
end;
var a,at,at2,t:matrix;
b,b2,y,x:vector;
n:byte;
begin
writeln('Введите размерность матрицы коэффициентов ');readln(n);
writeln('Введите элементы матрицы коэффициентов ');
InputMatrix(a,n);
writeln('Введите вектор свободных членов ');
InputVector(b,n);
at:=a;
TransposeMatrix(at,n);
MulMatrix(a,n,n,at,n,n,at2,n,n);
MulVector(at,n,n,b,n,b2,n);
Writeln('Пребразованная матрица А: ');
at:=at2;
outputmatrix(at,n);
Writeln('Преобразованный вектор B: ');
b:=b2;
outputvector(b,n);
writeln;
GetT(t,at,n);
Writeln('Пребразованная матрица T: ');
outputmatrix(t,n);
GetY(t,b,y,n);
writeln('Вектор Y');
outputvector(y,n);
GetX(t,y,x,n);
writeln('Вектор X');
outputvector(x,n)
end.
Пребразованная матрица А:Преобразованный вектор B:
4.97540 1.82880 1.26010 -0.14480 4.23870 -4.67000
1.82880 3.64830 -1.77800
1.26010 -1.77800 3.78260
Пребразованная матрицаT:Вектор Y
2.23056 0.00000 0.00000 -0.06492 2.48788 -1.05155
0.81988 1.72514 0.00000 Вектор X
0.56493 -1.29913 1.33256 -0.14090 0.84788 -0.78912
ЛАБОРАТОРНАЯ РАБОТА №6 «Методы решения систем линейных уравнений ».
Студента группы ПВ-22 Малютина Максима.
Задание. Решить систему линейных уравнений методом Гаусса с выбором максимального элемента по столбцу с точностью до 0,001.
В
ариант 8.При решении системы уравнений методом Гаусса используются следующие формулы:
Шаг № I: (i:=1, n-1)
Среди элементов i столбца (начиная с i-ой строки до n-ой) выбираем max по модулю элемент. Если их несколько, выбираем первый. Меняем местами i-ое уравнение и отмеченное.
Далее проводим i-ый шаг метода Гаусса:
j:=i+1,n mj = aji / aii; Вычисляем mj
Далее исключаем xi:
Вычитаем из строк i+1..n i-ую строку, помноженную на m:
k:=i+1,n
j:=1,n akj = akj - aij * mk
bk = bk – bi * mk
Д
program gauss_max;
const size=10;
type vector=array[1..size] of real;
matrix=array[1..size] of vector;
Procedure InputVector(var a:vector;n:byte);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ый элемент ');
readln(a[i]);
end;
end;
Procedure InputMatrix(var a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ую строку матрицы ');
InputVector(a[i],n)
end;
end;
Procedure OutputVector(var a:vector;n:byte);
var i:byte;
begin
for i:=1 to n do write(a[i]:10:5);
writeln
end;
Procedure OutputMatrix(var a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do outputvector(a[i],n)
end;
Procedure MulVector(a:matrix;ma,na:byte;b:vector;nb:byte;var c:vector;var nc:byte);
var i,j:byte;
s:real;
begin
if na=nb then
begin
nc:=nb;
for i:=1 to nc do
begin
s:=0;
for j:=1 to nc do s:=s+a[i,j]*b[j];
c[i]:=s
end;
end
else
begin
writeln('Неверные размеры матриц !!! ');
halt
end;
end;
Procedure SwapVector(var a,b:vector);
var n:vector;
begin
n:=a;
a:=b;
b:=n
end;
Procedure Swap(var a,b:real);
var n:real;
begin
n:=a;
a:=b;
b:=n
end;
Procedure GetMaxEl(a:matrix;n,i:byte;var l:byte);
var k:byte;
max:real;
begin
max:=abs(a[i,i]);l:=i;
for k:=i to n do
if abs(a[k,i])>max then
begin
max:=abs(a[k,i]);
l:=k
end;
end;
Procedure GetAm(var a:matrix;var b:vector;n:byte);
var i,j,k,l:byte;
m:vector;
begin
for i:=1 to n-1 do
begin
GetMaxEl(a,n,i,l);
SwapVector(a[i],a[l]);
Swap(b[i],b[l]);
for j:=i+1 to n do m[j]:=a[j,i]/a[i,i];
for k:=i+1 to n do
begin
for j:=1 to n do a[k,j]:=a[k,j]-a[i,j]*m[k];
b[k]:=b[k]-b[i]*m[k]
end;
end;
end;
Procedure GetX(a:matrix;b:vector;n:byte;var x:vector);
var k,l:byte;
s:real;
begin
x[n]:=b[n]/a[n,n];
for k:=n-1 downto 1 do
begin
s:=0;
for l:=k+1 to n do s:=s+a[k,l]*x[l];
x[k]:=(b[k]-s)/a[k,k]
end;
end;
var a,am:matrix;
b,x,x2:vector;
n:byte;
begin
writeln('Введите размерность матрицы коэффициентов ');readln(n);
writeln('Введите элементы матрицы коэффициентов ');
InputMatrix(a,n);
writeln('Введите вектор свободных членов ');
InputVector(b,n);
am:=a;
GetAm(am,b,n);
writeln('Матрица Am ');
outputmatrix(am,n);
GetX(am,b,n,x);
writeln('Вектор X ');
outputvector(x,n);
MulVector(a,n,n,x,n,x2,n);
writeln('Проверка: Вектор X2 - умножение матрицы Am на X ');
outputvector(x2,n)
end.
Матрица А:Вектор B:
10.00000 6.00000 2.00000 0.00000 25.00000 8.00000 2.50000 1.50000
0.00000 6.00000 -2.00000 2.00000
0.00000 3.20000 0.40000 -1.00000
0.00000 -2.00000 -3.00000 4.00000
Матрица Am
10.00000 6.00000 2.00000 0.00000
0.00000 6.00000 -2.00000 2.00000
0.00000 0.00000 -3.66667 4.66667
0.00000 -0.00000 -0.00000 -0.20000
Вектор X
2.00000 1.00000 -0.50000 0.50000
Проверка: Вектор X2 - умножение матрицы Am на X
25.00000 8.00000 2.50000 1.50000
ЛАБОРАТОРНАЯ РАБОТА №7 «Методы решения систем линейных уравнений ».
Студента группы ПВ-22 Малютина Максима.
Задание. Составить программу, отладить ее на тестовом примере, рассмотренном на лекции.
С
истема :При решении примера на лекции:
x1 = 0.526; x2 =0.628; x3 = 0.64; x4 = 1.2.
Векторы a, b, c, d.
a = {0; 2; 2; 3}
b = {5; 4.6; 3.6; 4.4}
c = {-1; -1; -0.8; 0}
d = {2; 3.3; 2.6; 7.2}
Прямой ход прогонки заключается в нахождении прогоночных коэффициентов:
Обратный ход метода прогонки заключается в нахождении неизвестных xn, xn-1, ... x1.
Он начинается с равенства: xn=bn+1;
const max=10;
type matrix=array[1..max] of real;
matrix_2=array[0..max] of real;
procedure input_matr(var a:matrix;n:byte;c:char);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i ,'-ый элемент массива ',c);
readln(a[i])
end
end;
procedure process(a,b,c,d:matrix;var x:matrix;n:byte);
var alfa,betta:matrix_2;
gamma,fi:matrix;
i:byte;
begin
betta[0]:=0;
alfa[0]:=0;
for i:=1 to n do
begin
gamma[i]:=b[i]+a[i]*alfa[i-1];
fi[i]:=d[i]-a[i]*betta[i-1];
alfa[i]:=-c[i]/gamma[i];
betta[i]:=fi[i]/gamma[i]
end;
x[n]:=betta[n];
for i:=n-1 downto 1 do x[i]:=alfa[i]*x[i+1]+betta[i]
end;
procedure out_matr_x(a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do writeln(i ,' корень уравнения равен ',a[i]:5:3)
end;
var i:byte;
a,b,c,d,x,gamma,fi:matrix;
alfa,betta:matrix_2;
n:byte;
begin
writeln('Введите размерность системы ');
readln(n);
if (n>=2) and (n<=10) then
begin
input_matr(a,n,'a');
input_matr(b,n,'b');
input_matr(c,n,'c');
input_matr(d,n,'d');
process(a,b,c,d,x,n);
out_matr_x(x,n)
end
else writeln('1< Размерность <=10 !!! ')
end.
Результат работы программы:
1 корень уравнения равен 0.526
2 корень уравнения равен 0.628
3 корень уравнения равен 0.640
4 корень уравнения равен 1.200
ЛАБОРАТОРНАЯ РАБОТА №9 «Методы решения систем линейных уравнений ».
Студента группы ПВ-22 Малютина Максима.
Задание. Методом Зейделя решить систему линейных уравнений с точностью до 0,001.
С
истема :Для решения системы уравнений методом Зейделя необходимо выполнения условия диагонального преобладания, после приведения к данному виду система имеет вид:
В
Из норм матрицы В выбирается меньшая, нормы вектора и матрицы согласованны между собой. При вычислении приближения следующей координаты используются более точные значения предыдущих координат текущего приближения.
const size=10;
type vector=array[1..size] of real;
matrix=array[1..size] of vector;
norma=function(a:matrix;n:byte):real;
norma_v=function(a:vector;n:byte):real;
Procedure InputVector(var a:vector;n:byte);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ый элемент ');
readln(a[i]);
end;
end;
Procedure InputMatrix(var a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do
begin
writeln('Введите ',i,'-ую строку матрицы ');
InputVector(a[i],n)
end;
end;
Procedure OutputVector(var a:vector;n:byte);
var i:byte;
begin
for i:=1 to n do write(a[i]:10:5);
writeln
end;
Procedure OutputMatrix(var a:matrix;n:byte);
var i:byte;
begin
for i:=1 to n do outputvector(a[i],n)
end;
Procedure GetB(var b:matrix;a:matrix;n:byte);
var i,j:byte;
s:real;
begin
for i:=1 to n do
for j:=1 to n do
if i<>j then b[i,j]:=-a[i,j]/a[i,i]
else b[i,j]:=0;
end;
Procedure GetC(var c:vector;h:vector;n:byte;a:matrix);
var i:byte;
begin
for i:=1 to n do c[i]:=h[i]/a[i,i]
end;
Function Norma_1v(a:vector;n:byte):real;
var i:byte;
s:real;
begin
s:=a[1];
for i:=2 to n do if abs(a[i])>s then s:=abs(a[i]);
norma_1v:=s
end;
Function Norma_8v(a:vector;n:byte):real;
var i:byte;
s:real;
begin
s:=0;
for i:=1 to n do s:=s+abs(a[i]);
norma_8v:=s
end;
Function Norma_1(a:matrix;n:byte):real;
var s,norma:real;
i,j:byte;
begin
norma:=0;
for j:=1 to n do
begin
s:=0;
for i:=1 to n do s:=s+abs(a[i,j]);
if s>norma then norma:=s
end;
norma_1:=norma
end;
Function Norma_8(a:matrix;n:byte):real;
var s,norma:real;
i,j:byte;
begin
norma:=0;
for i:=1 to n do
begin
s:=0;
for j:=1 to n do
s:=s+abs(a[i,j]);
if s>norma then norma:=s
end;
norma_8:=norma
end;
procedure MulMatrix(a:matrix;ma,na:byte;b:matrix;mb,nb:byte;var c:matrix;var mc,nc:byte);
var i,j,k:byte;
s:real;
begin
if na=nb then
begin
mc:=ma;
nc:=nb;
for k:=1 to mc do
for j:=1 to nc do
begin
s:=0;
for i:=1 to nc do
s:=s+a[k,i]*b[i,j];
c[k,j]:=s
end;
end
else
begin
writeln('Неверные размеры матриц !!! ');
halt
end;
end;
Procedure SubMatr(a:matrix;var b:matrix;n:byte);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do b[i,j]:=a[i,j]-b[i,j]
end;
procedure MulVector(a:matrix;ma,na:byte;b:vector;nb:byte;var c:vector;var nc:byte);
var i,j:byte;
s:real;
begin
if na=nb then
begin
nc:=nb;
for i:=1 to nc do
begin
s:=0;
for j:=1 to nc do s:=s+a[i,j]*b[j];
c[i]:=s;
end;
end
else
begin
writeln('Неверные размеры !!! ');
halt
end;
end;
procedure MulVectorZ(a:matrix;n:byte;var b:vector);
var i,j:byte;
s:real;
begin
for i:=1 to n do
begin
s:=0;
for j:=1 to n do
s:=s+a[i,j]*b[j];
b[i]:=s;
end;
end;
Procedure SubVect(a,b:vector;var c:vector;n:byte);
var i:byte;
begin
for i:=1 to n do c[i]:=b[i]-a[i]
end;
Procedure AddVect(a:vector;var b:vector;n:byte);
var i:byte;
begin
for i:=1 to n do b[i]:=b[i]+a[i]
end;
var a,b,bn:matrix;
h,c,xr,x,xn:vector;
i,n:byte;
eps:real;
nor:norma;
norv:norma_v;
begin
writeln('Введите размерность матрицы коэффициентов ');readln(n);
writeln('Введите элементы матрицы коэффициентов ');
InputMatrix(a,n);
writeln('Введите вектор свободных членов H ');
InputVector(h,n);
writeln('Введите заданныю точность ');
readln(eps);
GetB(b,a,n);
GetC(c,h,n,a);
writeln('Матрица B: ');
OutputMatrix(b,n);
writeln('Вектор C: ');
OutputVector(c,n);
readln;
if (norma_1(b,n)<=norma_8(b,n)) and (norma_1(b,n)<>0) then
begin
nor:=norma_1;
norv:=norma_1v
end
else
begin
nor:=norma_8;
norv:=norma_8v
end;
eps:=eps*(1-nor(b,n))/nor(b,n);
for i:=1 to n do x[i]:=1;
MulVectorZ(b,n,x);
AddVect(c,x,n);
xn:=x;
MulVectorZ(b,n,xn);
AddVect(c,xn,n);
subvect(x,xn,xr,n);
while norv(xr,n)>eps do
begin
x:=xn;
MulVectorZ(b,n,xn);
AddVect(c,xn,n);
subvect(x,xn,xr,n)
end;
writeln('Значения X ');
OutputVector(x,n);
MulVector(a,n,n,x,n,c,n);
writeln('Проверка ');
OutputVector(c,n);
end.
Результат работы программы:
Матрица B:
0.00000 0.06250 -0.11458
-0.34375 0.00000 -0.26563
-0.45946 -0.32432 0.00000
Вектор C:
-0.08333 1.26563 0.25676
Значения X
0.01836 1.30590 -0.17513
Проверка
-0.79990 8.10045 1.90065