С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 10

Решение СЛАУ методом Холецкого

18.05.2013, 14:54. Показов 4672. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В Паскале совсем новичок, не могу разобраться с типом данных, если в начале задать переменные типа real, то пишет ошибку: Неверная вещественная операция, если integer - попытка присвоить переменной типа integer выражение типа real.
Программа для решения СЛАУ методом Холецкого

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
Program holeckogo;
Uses crt;
const n=3;
Var
   i,j:byte;
   A,L,Lt: array[1..n,1..n] of integer;
   B,X,y: array[1..n] of integer;
{Блок ввода-вывода}
Procedure inmassA;
begin
 WriteLn('Введите элементы массива A');
  For i:=1 to N do
     For j:=1 to N do
       Begin
           Write('a[',i,',',j,']=');
           Read(A[i,j]);
       end;
end;
 Procedure inmassB;
 begin
Writeln('Введите элементы массива B');
  For i:=1 to n do
      Begin
           Write('b[',i,']=');
           ReadLn(b[i]);
       End;
  end;
Procedure Outx;
Begin
  Writeln('Результат:');
  For i:=1 to n do
      Begin
           Write('x',i,'=');
           Writeln(X[i]);
       End;
End;
{Конец блока ввода-вывода}
Begin
 ClrScr;
  inmassA;
  inmassB;
  if a[1,1]<0 then
  Begin
       for j:=1 to n do
           a[1,j]:=-a[1,j];
       b[1]:=-b[1];
  end;
 {Вычисления}
  L[1,1]:=sqrt(A[1,1]);
  Lt[1,1]:=sqrt(A[1,1]);
  L[2,1]:=A[1,2]/sqrt(A[1,1]);
  Lt[1,2]:=A[1,2]/sqrt(A[1,1]);
  L[3,1]:=A[1,3]/sqrt(A[1,1]);
  Lt[1,3]:=A[1,3]/sqrt(A[1,1]);
  L[2,2]:=sqrt(A[2,2]-L[2,1]*L[2,1]);
  Lt[2,2]:=sqrt(A[2,2]-L[2,1]*L[2,1]);
  L[3,2]:=(A[3,2]-L[2,1]*L[3,1])/L[2,2];
  Lt[2,3]:=(A[3,2]-L[2,1]*L[3,1])/L[2,2];
  L[3,3]:=sqrt(A[3,3]-L[3,1]*L[3,1]-L[3,2]*L[3,2]);
  Lt[3,3]:=sqrt(A[3,3]-L[3,1]*L[3,1]-L[3,2]*L[3,2]);
 
  y[1]:=B[1]/L[1,1];
  y[2]:=(B[2]-L[2,1]*y[1])/L[2,2];
  y[3]:=(B[3]-L[3,1]*y[1]-L[3,2]*y[2])/L[3,3];
 
  x[3]:=y[3]/Lt[3,3];
  x[2]:=(y[2]-Lt[2,3]*x[3])/Lt[2,2];
  x[1]:=(y[1]-Lt[1,2]*x[2]-Lt[1,3]*x[3])/Lt[1,1];
{Конец вычислений}
Outx;
 
End.

СЛАУ в моём случае задана следующая:

2.83 2.5 2.08 | 33.28
3 2.55 2.07 | 33.59
3.72 3.21 2.68 | 43.43


Отмечу, что тестовую матрицу решает нормально, значения находит верные:

81 -45 45 | 531
-45 50 -15 | -460
45 -15 38 | 193

Подскажите пожалуйста, где у меня ошибка?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2013, 14:54
Ответы с готовыми решениями:

Решение СЛАУ методом Холецкого
Ни как не могу реализовать программу для решения СЛАУ методом Холецкого на паскале. Данные: 2,18x1+ 2,44x2+ 2,49x3 = -4,34 ...

Решение СЛАУ методом Крамера
Нужна помощь! (исходная матрица должна быть размера 5x4)

Решение СЛАУ методом Гаусса
Решить задание методом Гауса и сложить, и наладить програму на языке Pascal которая реализует введение выходных данных, вычисление заданной...

9
43 / 43 / 25
Регистрация: 26.04.2013
Сообщений: 77
18.05.2013, 17:08
Pascal
1
L[1,1]:=sqrt(A[1,1]);
результат функции sqrt - real;
а L - integer;
ты делаешь попытку integer присвоить real.
Если объявить
Pascal
1
2
3
4
5
6
Var
   i,j:byte;
   A: array[1..n,1..n] of integer;
   L,Lt : array[1..n,1..n] of real;
   B: array[1..n] of integer;
   y,x : array[1..n] of real;
программа компилируется

Добавлено через 7 минут
если изменить все массивы на real, и ввести твой пример.
Pascal
1
2
  writeln(' ',A[3,3]-L[3,1]*L[3,1]-L[3,2]*L[3,2]:8:4);
  L[3,3]:=sqrt(A[3,3]-L[3,1]*L[3,1]-L[3,2]*L[3,2]);
делается попытка взять корень с отрицательного числа -4.3649
1
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 10
18.05.2013, 17:55  [ТС]
2Shizuka спасибо за помощь, почему-то выдаёт ошибку. Сделал как Вы посоветовали, компилирует, но после ввода a[1,1] сразу пишет - ошибка ввода. Программа завершена.

По поводу моего примера, я начинаю догадываться, что возможно в нём ошибка.
Так как при решении этой СЛАУ в экселе он тоже ругается на корень из -4.3649, я сначала думал что там где-то напортачил...
0
43 / 43 / 25
Регистрация: 26.04.2013
Сообщений: 77
18.05.2013, 18:12
Pascal
1
2
A,L,Lt: array[1..n,1..n] of real;
   B,X,y: array[1..n] of real;
Если вводите 2.83 (real) в integer выдаст ошибку, поэтому у вас все массивы должны бить real.
1
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 10
18.05.2013, 18:28  [ТС]
Shizuka хорошо, сделал так.
Я полагаю, нет никакой возможности решить данную СЛАУ методом Холецкого?
0
43 / 43 / 25
Регистрация: 26.04.2013
Сообщений: 77
18.05.2013, 18:30
Написать код?
0
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 10
18.05.2013, 18:32  [ТС]
Если Вам будет не сложно. Я буду очень признателен.
0
43 / 43 / 25
Регистрация: 26.04.2013
Сообщений: 77
18.05.2013, 22:20
Твоя матрица не является симметричной и положительно определенной. В результате на определенном этапе возникает необходимость вычисления квадратного корня из отрицательного числа.
Если изменить, твоя программа дает верный ответ
2.83 2.5 2.08 | 33.28
2.5 2.55 2.07 | 33.59
2.08 2.07 2.68 | 43.43
Результат
-1,247
1,218
16,232
Так, что если переписывать программу - то для любого n.
0
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 10
19.05.2013, 10:14  [ТС]
2Shizuka спасибо.
А как это - для любого N?
0
43 / 43 / 25
Регистрация: 26.04.2013
Сообщений: 77
19.05.2013, 11:01
Вычисления сделать в циклах по формулах поэтому можно будет решить систему для ( n= 4,5,6,… ).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2013, 11:01
Помогаю со студенческими работами здесь

Решение СЛАУ методом прогонки
Метод прогонки

Решение СЛАУ методом Зейделя
const n=4; eps=0.0001; type matrix=array of real; mas=array of real; var a:matrix; b,x,f:mas; i,j:integer; ...

Решение СЛАУ методом Зейделя
Метод Зейделя 13х1 + х2 + 0,4х3 + 0,6х4 + 0,11х5 = 7,6 3х1 + 11х2 – 0,6х3 + 1,3х5 = 8,7 х1 – 2,1х2 + 4,9х3 + 2,8х4 = 9,2 1,1х1 –...

Решение СЛАУ Методом Гаусса из файла.
Доброго времени суток! Нужно написать программу решения СЛАУ Методом Гаусса, но только чтобы данные брались из текстового файла......

Вычисление СЛАУ методом Гаусса и методом Крамера
Я совсем начинающий программист, студент, но я после продолжительного ковыряния в данном коде ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru