Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
#1

Метод Зейделя - Lazarus

17.11.2013, 21:13. Просмотров 1140. Ответов 16
Метки нет (Все метки)

Помогите с методом . y=0.2 d=0.2
Дана точность e = 0.0001
Уравнения
(24,21+y)X1 + 2.42X2 + 3.85X3 = 30.24
2.31X1 + 31.49X2 + 1.52X3 = 40.95 - d
3.49X1 + 4.85X2 + (28.72 +y)X3 = 42.81
http://www.cyberforum.ru/cpp-beginners/thread1242580.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 21:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Метод Зейделя (Lazarus):

Решение систем нелинейных уравнений, Метод Ньютона и Метод Зейделя
Ребята пожалуйста помогите с решением Слау Методом Ньютона и Зейделя. ...

Метод простых итераций и метод Зейделя для решения СЛАУ
1. Методом простых итераций и методом Зейделя решить СЛАУ вида Bx=с ...

Метод простых итераций и метод Зейделя. Пример решения
Привет всем! Мне нужно придумать и решить систему нелинейных уравнений методом...

Метод итераций Якоби и метод Гаусса-Зейделя
Подскажите что-нибудь,вот у мну лабораторная: РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ И...

Метод Гаусса-Зейделя,метод Якоби, LU разложения
есть у кого то примеры решения???в Wolfram Mathematica

16
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25612 / 17165 / 6825
Регистрация: 22.10.2011
Сообщений: 30,361
Записей в блоге: 6
17.11.2013, 21:25 #2
Чем вот эта реализация метода Зейделя не нравится: http://www.cyberforum.ru/turbo-pascal/thread31626.html#post772262 ? Она твою систему решает, осталось просто выбрать, какие компоненты будешь использовать для визуализации, и сделать GUI...
0
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
17.11.2013, 22:19  [ТС] #3
Цитата Сообщение от UI Посмотреть сообщение
Чем вот эта реализация метода Зейделя
Вы про это ?
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
Uses CRT;
 
Const
     maxn = 10;
 
Type
    Data = Real;
    Matrix = Array[1..maxn, 1..maxn] of Data;
    Vector = Array[1..maxn] of Data;
 
{ Процедура ввода расширенной матрицы системы }
Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);
Var
   i, j, r: Integer;
Begin
     r := WhereY;
     GotoXY(2, r);
     Write('A');
     For i := 1 to n do begin
         GotoXY(i * 6 + 2, r);
         Write(i);
         GotoXY(1, r + i + 1);
         Write(i:2);
     end;
     GotoXY((n + 1) * 6 + 2, r);
     Write('b');
     For i := 1 to n do begin
         For j := 1 to n do begin
             GotoXY(j * 6 + 2, r + i + 1);
             Read(a[i, j]);
         end;
         GotoXY((n + 1) * 6 + 2, r + i + 1);
         Read(b[i]);
     end;
End;
 
{ Процедура вывода результатов }
Procedure WriteX(n :Integer; x: Vector);
Var
   i: Integer;
Begin
     For i := 1 to n do
         Writeln('x', i, ' = ', x[i]);
End;
 
 
{ Функция, реализующая метод Зейделя }
Function Seidel(n: Integer; a: Matrix; b: Vector; var x: Vector; e: Data) :Boolean;
Var
   i, j: Integer;
   s1, s2, s, v, m: Data;
Begin
 
     { Исследуем сходимость }
     For i := 1 to n do begin
 
         s := 0;
         For j := 1 to n do
             If j <> i then
                s := s + Abs(a[i, j]);
 
         If s >= Abs(a[i, i]) then begin
            Seidel := false;
            Exit;
         end;
 
     end;
 
     Repeat
 
         m := 0;
         For i := 1 to n do begin
 
             { Вычисляем суммы }
             s1 := 0;
             s2 := 0;
             For j := 1 to i - 1 do
                 s1 := s1 + a[i, j] * x[j];
             For j := i to n do
                 s2 := s2 + a[i, j] * x[j];
 
             { Вычисляем новое приближение и погрешность }
             v := x[i];
             x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]);
 
             If Abs(v - x[i]) > m then
                m := Abs(v - x[i]);
 
         end;
 
     Until m < e;
 
     Seidel := true;
End;
 
Var
    n, i: Integer;
    a: Matrix;
    b, x: Vector;
    e: Data;
Begin
      ClrScr;
      Writeln('Программа решения систем линейных уравнений по методу Зейделя');
      Writeln;
 
      Writeln('Введите порядок матрицы системы (макс. 10)');
      Repeat
             Write('>');
             Read(n);
      Until (n > 0) and (n <= maxn);
      Writeln;
 
      Writeln('Введите точность вычислений');
      Repeat
             Write('>');
             Read(e);
      Until (e > 0) and (e < 1);
      Writeln;
 
      Writeln('Введите расширенную матрицу системы');
      ReadSystem(n, a, b);
      Writeln;
 
 
      { Предполагаем начальное приближение равным нулю }
      For i := 1 to n do
          x[i] := 0;
 
      If Seidel(n, a, b, x, e) then begin
         Writeln('Результат вычислений по методу Зейделя');
         WriteX(n, x);
      end
      else
          Writeln('Метод Зейделя не сходится для данной системы');
      Writeln;
End.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25612 / 17165 / 6825
Регистрация: 22.10.2011
Сообщений: 30,361
Записей в блоге: 6
17.11.2013, 22:30 #4
Я же дал точную ссылку, зачем было копировать еще и сюда этот метод? Мало там его? Брал бы, лучше, и делал то, что тебе нужно, чем копипастом заниматься.

Не по теме:

Только и умеют что наплодить в сети кучу одинаковых статей, копируя друг у друга, и постов одинаковых наплодить, по той же технологии Ctrl+C/Ctrl+V... В итоге в Гугле миллион страничек по запросу, а информации полезной - пшик в результате...

0
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
18.11.2013, 22:45  [ТС] #5
Я не много запутался с работой графического интерфейса

Добавлено через 9 минут
Цитата Сообщение от UI Посмотреть сообщение
Я же дал
у меня еще используется y=0.2 и d=0.2. А анология в коде это ?

Добавлено через 1 час 6 минут
помогите пожалуйста (

Добавлено через 17 часов 50 минут
Sos

Добавлено через 2 часа 38 минут
Помогите пожалуйста)

Добавлено через 2 часа 26 минут
0
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
19.11.2013, 13:22 #6
по моему Y и d - это просто коэф. введённые для того, чтобы у разных студентов были разные уравнения. просто подставить эти коэф. в уравнение, упрости и реши.
0
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
19.11.2013, 21:25  [ТС] #7
Цитата Сообщение от Kitayets Посмотреть сообщение
Y и d
Вы можете помочь с GUI ? Пожалуйста )

Добавлено через 19 минут
Цитата Сообщение от UI Посмотреть сообщение
Я же дал
Вы можете помочь с GUI ? Пожалуйста )
0
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
19.11.2013, 22:13 #8
я бы помог с гуи, если бы Вы подсказали как вы его видите.
на мой взгляд довольно сложно представить гуи для программы для которой не предпологается никакого пользовательского ввода т.к. решается ровно одно, заранее заданное уравнение.
0
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
19.11.2013, 22:21  [ТС] #9
Цитата Сообщение от Kitayets Посмотреть сообщение
я бы помог с гуи, если бы Вы подсказали как вы его видите.
на мой
Что то типо этого https://drive.google.com/file/d/0B2x...it?usp=sharing

Добавлено через 28 секунд
Ну это просто так приблизительно представляю
0
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
19.11.2013, 22:56 #10
и что, пошаговый вывод промежуточных результатов тоже нужен?
0
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
20.11.2013, 18:49  [ТС] #11
Цитата Сообщение от Kitayets Посмотреть сообщение
и ч
думаю нет

Добавлено через 5 минут
Цитата Сообщение от Kitayets Посмотреть сообщение
пошагов
думаю нет

Добавлено через 19 часов 46 минут
Цитата Сообщение от UI Посмотреть сообщение
Я же дал точную ссылку

Помогите пожалуйста )
0
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
20.11.2013, 21:58 #12
ваш пример посмотрел.

предлагаю такой вариант:
0
Миниатюры
Метод Зейделя  
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
20.11.2013, 21:59 #13
сообщите какую часть работы вы намерены сделать самостоятельно, а в какой части нужна помощь.
0
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
20.11.2013, 22:12  [ТС] #14
Цитата Сообщение от Kitayets Посмотреть сообщение
сообщите какую
заполнение массива с клавиатуры (в сам стрин грид , ну и ввод самих y и d)
0
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
22.11.2013, 02:07 #15
Мде...

ладно выкладываю мой вариант. надеюсь сможешь допилить под свои нужды.
0
Миниатюры
Метод Зейделя  
Вложения
Тип файла: zip seidel.zip (5.2 Кб, 12 просмотров)
Valik_000
1 / 1 / 6
Регистрация: 21.04.2013
Сообщений: 115
22.11.2013, 17:02  [ТС] #16
Цитата Сообщение от Kitayets Посмотреть сообщение
ладно выкладываю мой вариант.
Спасибо большое. А вопрос в чем ошибка , я просто проверил по этому , не сходится http://math.semestr.ru/optim/zeidel.php

Добавлено через 40 минут
Цитата Сообщение от Kitayets Посмотреть сообщение
ладно выкладываю
Код ,Просто сказка, вот только слишком крут для меня.
0
Kitayets
334 / 288 / 102
Регистрация: 09.09.2011
Сообщений: 1,013
23.11.2013, 02:53 #17
не знаю почему не сходится, я алгоритм не проверял - просто взял код "как есть" из 3-го сообщения и только привернул к нему gui.

ну и в моём коде есть ошибка, оказывается в stringrid индексация идет col, row а в 2-х мерных массивах row, col.

т.е. 3-ий элемент 2-й строки в grid-е будет иметь индекс [3,2], а в массиве [2,3].

прикладываю исправленный проект, но в нем ваш 2-й пример тоже не сходится.
0
Вложения
Тип файла: zip seidel2.zip (4.9 Кб, 10 просмотров)
23.11.2013, 02:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2013, 02:53
Привет! Вот еще темы с решениями:

Метод простых итераций и метод Зейделя
Помогите пожалуйста написать в маткаде (или матлабе) метод простых итераций и...

Метод итераций и метод Зейделя
Здравсвуйте программисты! Спасибо всем за помощь в предыдущих темах, осталась...

Метод Зейделя
Написал программку, которая решает систему уравнений, записану в матрицу 3 на...

Метод Зейделя
решить систему нелинейных уравнений Методом зейделя:


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru