Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
9 / 9 / 0
Регистрация: 11.07.2011
Сообщений: 16
1

Найти число обусловленности при обращении матрицы методом гаусса

11.12.2012, 14:48. Показов 2750. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне надо вычеслить число обусловленности при обращении матрицы методом гаусса с выбором ведущего элемента по строке... Я нашел задачу выбора ведущего элементы по строке методом Гаусса, а вот дописать к ней вычисления числа обусловленности ни как не получаеться, сможет кто помочб??
Вот задача:


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
program Gauss;
uses Crt;
{Глобальные переменные}
var
  Col,Row,maxj:integer;                   {Количество столбцов и строк}
  Mas:array [1..30,1..30] of real;   {Исходная матрица}
  Sol:array [1..30] of real;         {Столбец решений}
  MasMax:real;
{Процедура ввода элементов матрицы}
procedure Input;
var
  X,i,j,Int:integer;
begin
    {Ввод размеров матрицы}
    repeat
      Write('Введите количество неизвестных:  ');
      ReadLn(X);
      Row:=X;
      Col:=X+1;
      if X<2 then
         WriteLn('Количество неизвестных должно больше 1')
    until X>1;
    {Если количество неизвестных >5 переход к стандартному вводу}
    if X<6 then
    begin
        ClrScr;
        {Построение матрицы для ввода}
        Int:=Trunc(80/Col);          {Интервал между элементами}
        {Левая скобка}
        GotoXY(3,5);
        WriteLn('[');
        for i:=1 to (Row*4-3) do
        begin
            GotoXY(3,5+i);
            Write('[')
        end;
        GotoXy(3,6+i);
        Write('[');
        {Правая скобка}
        GotoXY(Int*Col,5);
        WriteLn(']');
        for i:=1 to (Row*4-3) do
        begin
            GotoXY(Int*Col,5+i);
            Write(']')
        end;
        GotoXy(Int*Col,6+i);
        Write(']');
        {Разделительная линия}
        for i:=1 to (Row*4-3) do
        begin
            GotoXY(Int*(Col-1),5+i);
            Write('|')
        end;
        {Ввод элементов матрицы}
        GotoXY(4,6);
        for i:=1 to Row do
        begin
          for j:=1 to Col do
          begin
              Read(Mas[i,j]);
              GotoXY(4+j*Int,2+4*i)
          end;
          GotoXY(4,2+4*(i+1))
        end
    end
                    else
    begin
        ClrScr;
        WriteLn('Ввод элементов матрицы:');
        WriteLn;
        WriteLn('Элементы 1-й строки:');
        WriteLn;
        for i:=1 to Row do
        begin
          for j:=1 to Col do
          begin
              Write('Элемент ',i,',',j,'  ');
              ReadLn(Mas[i,j])
          end;
          WriteLn;
          WriteLn('Элементы ',i+1,'-й ','строки:');
          WriteLn
        end
    end
end;
{Алгоритм Гаусса}
procedure GaussAlg;
var
  Diag,Prom:real;           {Diag - диагональный элемент}
                            {Prom - промежуточный элемент}
  i,j,k:integer;
  Sum:real;
begin
    {Прямой ход}
    for i:=1 to Row do
    begin
        for j:=1 to Col do
        if Mas[i,j]>MasMax then
        begin
        MasMax:=Mas[i,j];
        maxj:=j;
        end;
        Diag:=Mas[i,i];
        {Если диагональный элемент = 0 выполняем перестановку строк}
        if Diag<>MasMax then
        for k:=i to Row do
          if Mas[k,i]<>0 then
            for j:=1 to Col do
            begin
                Prom:=Mas[k,j];
                Mas[k,j]:=Mas[i,j];
                Mas[i,j]:=Prom
            end;
        Diag:=Mas[i,i];
        {Выполняем деление строки на диагональный элемент}
        for j:=1 to Col do
          Mas[i,j]:=Mas[i,j]/Diag;
        for k:=i+1 to Row do
        begin
          Prom:=Mas[k,i];
          for j:=1 to Col do
          begin
              {Формула Гаусса}
              Mas[k,j]:=Mas[k,j]-Mas[i,j]*Prom
          end
        end
    end;
    {Обратный ход}
    Sol[Row]:=Mas[Row,Col];
    Sum:=0;
    for i:=Row-1 downto 1 do
    begin
        for j:=Col-1 downto i+1 do Sum:=Sum+Mas[i,j]*Sol[j];
        Sol[i]:=Mas[i,Col]-Sum;
        Sum:=0
    end
end;
{Вывод решения}
procedure Output;
var
  i:integer;
begin
    ClrScr;
    WriteLn('Столбец решений:');
    GotoXY(1,2);
    Write('|');
    {Левая скобка}
    for i:=1 to (Row*4-3) do
    begin
        GotoXY(1,2+i);
        Write('|')
    end;
    GotoXy(1,3+i);
    Write('|');
    {Правая скобка}
    GotoXY(23,2);
    WriteLn('|');
    for i:=1 to (Row*4-3) do
    begin
        GotoXY(23,2+i);
        Write('|')
    end;
    GotoXy(23,3+i);
    Write('|');
    GotoXY(3,3);
    for i:=1 to Row do
    begin
        Write(Sol[i]);
        GotoXY(3,4*i+3)
    end;
    Write('Нажмите любую клавишу...');
    ReadKey
end;
begin
    {Очистка экрана}
    ClrScr;
    {Ввод элементов матрицы}
    Input;
    GaussAlg;
    Output
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2012, 14:48
Ответы с готовыми решениями:

Найти число обусловленности матрицы
Есть циклическая матрица вида, размера n*n: A=\begin{pmatrix} 1 1 ... 0 \\ 0 1 ... 0 \\ ...

Число обусловленности матрицы
Дана матрица 6 на 6 нужно рассчитать число обусловленности этой матрицы

Найти определитель матрицы методом Гаусса
Написать программу нахождение определителя матрицы методом Гаусса

Найти ранг прямоугольной матрицы методом Гаусса
Найти ранг прямоугольной матрицы A(m,n) методом Гаусса - помогите с кодом на С(просто С)

1
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 2
02.12.2014, 22:27 2
Lonson, у меня точно такая же проблема((
0
02.12.2014, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2014, 22:27
Помогаю со студенческими работами здесь

Доказать, что число обусловленности квадратной матрицы ≥ 1
Нужно доказать, что ||A-1||∙||A|| ≥ 1, ∀ A ∈ ℝn×n, det(A) ≠ 0

Найти определитель заданной матрицы n-го порядка методом Гаусса
1)Матрицу A(m,n) случайным образом заполнить разными целыми числами от 1 до m x n. 2)Найти...

Как методом Гаусса найти определитель матрицы и обратную матрицу
Как методом Гаусса найти определитель матрицы и обратную матрицу в Mathcad? Может есть какие-то...

Решить СЛАУ методом Крамера, методом Гаусса, с помощью обратной матрицы
Решите систему линейных уравнений а) методом Крамера; б) методом Гаусса; в) с помощью обратной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru