Форум программистов, компьютерный форум, киберфорум
Численные методы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 1
Регистрация: 23.05.2009
Сообщений: 52

Проверить решение СЛАУ методом итераций

20.05.2011, 16:17. Показов 2554. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В теме решить систему линейных уравнений методом Ньютона просил помощи по решению слау. Нашол инфу в нете и решил на паскале СЛАУ

Мне задали курсовую по решению СЛАУ(а не СНАУ) методом Ньютона. Я так понимаю что это метод простых итераций и решил это в тетрадке. Оставалось лишь создать программу и написать к ней блок схему. Блок схему пока не пишу так как программа отказывается работать. Вот код, писал на PascalABC для удобства и быстродействия. Выдаёт ошибку!
Ошибка: вещественное переполнение (Kursovaya.pas, строка 66)

и ещё если перед закрытием цикла поставить:
Pascal
1
writeln('X1=',x1);
то
X1=9.21119121200813E302
X1=4.95267659250945E304
X1=2.6629569254858E306

Ужас какойто. У меня в тетрадке такого нароста небыло. В чём же ошибка? Как остановить цикл во время?

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
const e=0.0001;
var
bet1,bet2,bet3,bet4:real;
al12,al13,al14,al21,al23,al24,al31,al32,al34,al41,al42,al43:real;
x1,xx,x2,x3,x4,x:real;
a11,a12,a13,a14,a21,a22,a23,a24,a31,a32,a33,a34,a41,a42,a43,a44,b1,b2,b3,b4:real;
//s:string;
begin
a11:=2;
a12:=3.5;
a13:=-4.5;
a14:=1;
 
a21:=1;
a22:=-2.5;
a23:=-4.5;
a24:=1;
 
a31:=10;
a32:=-7;
a33:=-1;
a34:=8;
 
a41:=10;
a42:=-2;
a43:=-1;
a44:=2;
 
b1:=3;
b2:=2;
b3:=3;
b4:=-4;
 
writeln('Система уровнений:');
writeln(abs(a11),'x1+',abs(a12),'x2-',abs(a13),'x3+',abs(a14),'x4=',b1);
writeln(abs(a21),'x1-',abs(a22),'x2-',abs(a23),'x3+',abs(a24),'x4=',b2);
writeln(abs(a31),'x1-',abs(a32),'x2-',abs(a33),'x3+',abs(a34),'x4=',b3);
writeln(abs(a41),'x1-',abs(a42),'x2-',abs(a43),'x3+',abs(a44),'x4=',b4);
writeln('Имеет решение с точностью ',e,':');
 
bet1:=b1/a11;
bet2:=b2/a22;
bet3:=b3/a33;
bet4:=b4/a44;
 
al12:=a12/a11;
al13:=a13/a11;
al14:=a14/a11;
 
al21:=a21/a22;
al23:=a23/a22;
al24:=a24/a22;
 
al31:=a31/a33;
al32:=a32/a33;
al34:=a34/a33;
 
al41:=a41/a44;
al42:=a42/a44;
al43:=a43/a44;
 
x:=0;
repeat
x1:=bet1+al12*x2+al13*x3+al14*x4;
x2:=bet2+al21*x1+al23*x3+al24*x4;
x3:=bet3+al31*x1+al32*x2+al34*x4;
x4:=bet4+al41*x1+al42*x2+al43*x3;
 
until (abs(x1)>e) and (abs(x2)<e) and (abs(x3)<e) and (abs(x4)<e);
 
writeln('X1=',x1);
writeln('X2=',x2);
writeln('X3=',x3);
writeln('X4=',x4);
 
end.
Миниатюры
Проверить решение СЛАУ методом итераций  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.05.2011, 16:17
Ответы с готовыми решениями:

Решение СЛАУ методами Гаусса, Зейделя, итераций
система 12,1x1-4,5x2-2x3=19,07 3x1+12,5x2+4,3x3=3,21 -6x1+3,5x2+12,5x3=-18,25

Преобразование СЛАУ для решения методом простых итераций
Нужно решить СЛАУ методом простых итераций, условие сходимости не выполняются ни для одного уравнения в системе. Не могу преобразовать...

Решение уравнения методом итераций
Есть уравнение x^6-3x^2+x-1, интервал изоляции корня . Однако я не понимаю метод до конца. вот мы посчитали C, подставили в формулу...

6
1 / 1 / 1
Регистрация: 23.05.2009
Сообщений: 52
20.05.2011, 18:49  [ТС]
Отредактировал немного код
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
const e=0.0001;
var
bet1,bet2,bet3,bet4:real;
al12,al13,al14,al21,al23,al24,al31,al32,al34,al41,al42,al43:real;
x1,x2,x3,x4:real;
a11,a12,a13,a14,a21,a22,a23,a24,a31,a32,a33,a34,a41,a42,a43,a44,b1,b2,b3,b4:real;
 
xx1,xx2,xx3,xx4,buf1,buf2,buf3,buf4:real;
 
begin
buf1:=0;
buf2:=0;
buf3:=0;
buf4:=0;
 
a11:=2;
a12:=3.5;
a13:=-4.5;
a14:=1;
 
a21:=1;
a22:=-2.5;
a23:=-4.5;
a24:=1;
 
a31:=10;
a32:=-7;
a33:=-1;
a34:=8;
 
a41:=10;
a42:=-2;
a43:=-1;
a44:=2;
 
b1:=3;
b2:=2;
b3:=3;
b4:=-4;
 
writeln('Система уровнений:');
writeln(abs(a11),'x1+',abs(a12),'x2-',abs(a13),'x3+',abs(a14),'x4=',b1);
writeln(abs(a21),'x1-',abs(a22),'x2-',abs(a23),'x3+',abs(a24),'x4=',b2);
writeln(abs(a31),'x1-',abs(a32),'x2-',abs(a33),'x3+',abs(a34),'x4=',b3);
writeln(abs(a41),'x1-',abs(a42),'x2-',abs(a43),'x3+',abs(a44),'x4=',b4);
writeln('Имеет решение с точностью ',e,':');
 
bet1:=b1/a11;
bet2:=b2/a22;
bet3:=b3/a33;
bet4:=b4/a44;
 
al12:=a12/a11;
al13:=a13/a11;
al14:=a14/a11;
 
al21:=a21/a22;
al23:=a23/a22;
al24:=a24/a22;
 
al31:=a31/a33;
al32:=a32/a33;
al34:=a34/a33;
 
al41:=a41/a44;
al42:=a42/a44;
al43:=a43/a44;
 
x1:=0;
x2:=0;
x3:=0;
x4:=0;
 
repeat
buf1:=x1;
buf2:=x2;
buf3:=x3;
buf4:=x4;
 
x1:=bet1+al12*x2+al13*x3+al14*x4;
x2:=bet2+al21*x1+al23*x3+al24*x4;
x3:=bet3+al31*x1+al32*x2+al34*x4;
x4:=bet4+al41*x1+al42*x2+al43*x3;
 
 
 
xx1:=abs(buf1-x1);
xx2:=abs(buf2-x2);
xx3:=abs(buf3-x3);
xx4:=abs(buf4-x4);
  {
x1:=buf1;
x2:=buf2;
x3:=buf3;
x4:=buf4;
           }
writeln('X1=',x1);
writeln('X2=',x2);
writeln('X3=',x3);
writeln('X4=',x4);
 
until (xx1<e) and (xx2<e) and (xx3<e) and (xx4<e);
end.
0
1 / 1 / 1
Регистрация: 23.05.2009
Сообщений: 52
22.05.2011, 15:42  [ТС]
33 просмотра, а никто не знает. Неужели никто не поможет?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
07.07.2011, 07:36
Цитата Сообщение от reyn90 Посмотреть сообщение
У меня в тетрадке такого нароста небыло. В чём же ошибка? Как остановить цикл во время?
Когда достигнешь требуемой точности. Кстати, метод Ньютона предназначен для отдельного уравнения, а не системы.

Добавлено через 1 минуту
Цитата Сообщение от reyn90 Посмотреть сообщение
X1=9.21119121200813E302
X1=4.95267659250945E304
X1=2.6629569254858E306
Проверь знак приращения.
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 6
05.09.2011, 19:44
1. Условие останова обычно одно. Можете взять условие когда средняя точность (по модулю) станет меньше заданной.
2. Метод Ньютона - это не метод простых итераций (метод Якоби). Он применяется обычно для нелинейных уравнений и их систем. И вроде там производные считать надо.
3. Вы скорее всего неправильно считаете эквивалентную матрицу коэффициентов. Там вам нужно коэффициенты считать как alpha(i,j) = -a(i,j)/a(i, i). или в строках
x1:=bet1+al12*x2+al13*x3+al14*x4;
x2:=bet2+al21*x1+al23*x3+al24*x4;
x3:=bet3+al31*x1+al32*x2+al34*x4;
x4:=bet4+al41*x1+al42*x2+al43*x3;
писать как
x1:=bet1-al12*x2-al13*x3-al14*x4;
x2:=bet2-al21*x1-al23*x3-al24*x4;
x3:=bet3-al31*x1-al32*x2-al34*x4;
x4:=bet4-al41*x1-al42*x2-al43*x3;
Если выводить метод итераций то изначально у вас есть система:
x1*a11 + x2*a12 + x3*a13 + x4*a14 = b1
x1*a21 + x2*a22 + x3*a23 + x4*a24 = b2
x1*a31 + x2*a32 + x3*a33 + x4*a34 = b3
x1*a41 + x2*a42 + x3*a43 + x4*a44 = b4
Затем вам нужно привести ее к эквивалентному виду.
Вы использовали самый распространенный метод beta(i) = b(i)/a(i,i) alpha(i,j)=-a(i,j)/a(i,i) и alpha(i,i)=0.
Это соответствует системе уравнений
x(1) = beta(1) + alpha(1,1)*x(1) + alpha(1,2)*x(2) +alpha(1,3)*x(3)+alpha(1,4)*x(4)
x(2) = beta(2) + alpha(2,1)*x(1) + alpha(2,2)*x(2) +alpha(2,3)*x(3)+alpha(2,4)*x(4)
x(3) = beta(3) + alpha(3,1)*x(1) + alpha(3,2)*x(2) +alpha(3,3)*x(3)+alpha(3,4)*x(4)
x(4) = beta(4) + alpha(4,1)*x(1) + alpha(4,2)*x(2) +alpha(4,3)*x(3)+alpha(4,4)*x(4)
то есть вы диагональные иксы оставляете слева, а все остальное переносите вправо и делите на диагональные а(i,i). А диагональные alpha(i,i) справа приравниваете 0.
4. За начальное приближение можно взять как x=0, так и x(i)=beta(i). Количество итераций, необходимых для сходимости будет разным.
5. Условие останова может стать одна из норм вектора невязки (разность между новым и старым значением х ). Например, кроме среднего значения невязки по всем х, можно взять норму Фробениуса(среднеквадратичное). Для вектора это будет:
epsilon = sqrt((x1nov - x1star)^2 + (x2nov - x2star)^2 + (x3nov - x3star)^2 + (x4nov - x4star)^2)
6. Советую найти(можно и в инете) книжку Формалев. Ревизников. Численные методы.
В ней на каждый метод пример подробный рассмотрен.

Добавлено через 6 минут
Или на той же Википедии почитайте про метод Ньютона (это не метод простых итераций). Там про многомерный случай рассказано. Там не все так тривиально. нужно немножко подумать..Правда если задача актуальна еще.
0
1 / 1 / 1
Регистрация: 23.05.2009
Сообщений: 52
06.09.2011, 06:53  [ТС]
Цитата Сообщение от Sleep_Walker Посмотреть сообщение
1. Условие останова обычно одно. Можете взять условие когда средняя точность (по модулю) станет меньше заданной.
2. Метод Ньютона - это не метод простых итераций (метод Якоби). Он применяется обычно для нелинейных уравнений и их систем. И вроде там производные считать надо.
3. Вы скорее всего неправильно считаете эквивалентную матрицу коэффициентов. Там вам нужно коэффициенты считать как alpha(i,j) = -a(i,j)/a(i, i). или в строках
x1:=bet1+al12*x2+al13*x3+al14*x4;
x2:=bet2+al21*x1+al23*x3+al24*x4;
x3:=bet3+al31*x1+al32*x2+al34*x4;
x4:=bet4+al41*x1+al42*x2+al43*x3;
писать как
x1:=bet1-al12*x2-al13*x3-al14*x4;
x2:=bet2-al21*x1-al23*x3-al24*x4;
x3:=bet3-al31*x1-al32*x2-al34*x4;
x4:=bet4-al41*x1-al42*x2-al43*x3;
Если выводить метод итераций то изначально у вас есть система:
x1*a11 + x2*a12 + x3*a13 + x4*a14 = b1
x1*a21 + x2*a22 + x3*a23 + x4*a24 = b2
x1*a31 + x2*a32 + x3*a33 + x4*a34 = b3
x1*a41 + x2*a42 + x3*a43 + x4*a44 = b4
Затем вам нужно привести ее к эквивалентному виду.
Вы использовали самый распространенный метод beta(i) = b(i)/a(i,i) alpha(i,j)=-a(i,j)/a(i,i) и alpha(i,i)=0.
Это соответствует системе уравнений
x(1) = beta(1) + alpha(1,1)*x(1) + alpha(1,2)*x(2) +alpha(1,3)*x(3)+alpha(1,4)*x(4)
x(2) = beta(2) + alpha(2,1)*x(1) + alpha(2,2)*x(2) +alpha(2,3)*x(3)+alpha(2,4)*x(4)
x(3) = beta(3) + alpha(3,1)*x(1) + alpha(3,2)*x(2) +alpha(3,3)*x(3)+alpha(3,4)*x(4)
x(4) = beta(4) + alpha(4,1)*x(1) + alpha(4,2)*x(2) +alpha(4,3)*x(3)+alpha(4,4)*x(4)
то есть вы диагональные иксы оставляете слева, а все остальное переносите вправо и делите на диагональные а(i,i). А диагональные alpha(i,i) справа приравниваете 0.
4. За начальное приближение можно взять как x=0, так и x(i)=beta(i). Количество итераций, необходимых для сходимости будет разным.
5. Условие останова может стать одна из норм вектора невязки (разность между новым и старым значением х ). Например, кроме среднего значения невязки по всем х, можно взять норму Фробениуса(среднеквадратичное). Для вектора это будет:
epsilon = sqrt((x1nov - x1star)^2 + (x2nov - x2star)^2 + (x3nov - x3star)^2 + (x4nov - x4star)^2)
6. Советую найти(можно и в инете) книжку Формалев. Ревизников. Численные методы.
В ней на каждый метод пример подробный рассмотрен.

Добавлено через 6 минут
Или на той же Википедии почитайте про метод Ньютона (это не метод простых итераций). Там про многомерный случай рассказано. Там не все так тривиально. нужно немножко подумать..Правда если задача актуальна еще.
Спосибо но я уже давно решил проблему. Надеюсь больше не столкнусь.
0
0 / 0 / 0
Регистрация: 05.09.2011
Сообщений: 6
06.09.2011, 09:55
Пожалуйста . Та ничего сложного там особо и нету. Только главное аккуратность и нормального преподавателя нужно, ну или хотя бы книжку хорошую.

Добавлено через 20 минут
Да и еще вопрос уже к Вам - ну так для СЛАУ метод Ньютона преобразуется в метод простых итераций или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.09.2011, 09:55
Помогаю со студенческими работами здесь

Решение уравнения методом итераций
решить систему методом итераций:ъ 4,1x1+5,2x2-5,8x3=7;(а) 3,8x1-3,1x2+4x3=5,3;(б) 7,8x1+5,3x2-6,3x3=5,8;(в) Суть в том чтобы...

Решение нелинейного уравнения методом итераций
Решение нелинейного уравнения методом итераций 3x-cos(x)-1=0 Это все задание.Других данных нет.

Решение уравнений комбинированным методом итераций.
Отделить корни заданного уравнения, пользуясь графическим методом (используя MathCad). По методу хорд и касательных вычислить один корень...

Найти решение уравнения методом итераций
Найти решение уравнения методом итераций с точностью ε=0,01. x2cos(2x)=-1

Решение СЛАУ методом Гаусса.
Написать программу нахождения решения СЛАУ методом Гаусса.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 01.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 31.01.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru