Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Настя1996
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
#1

Итерационные методы. Метод Якоби

10.05.2015, 14:13. Просмотров 1232. Ответов 8
Метки нет (Все метки)

Не могу найти ошибку, скорее всего что-то с циклами. Формула самих итераций: Xk+1=AXk+Y
Ребяят, помогите пожалуйста, уже несколько дней сижу, не могу понять, что не так((

C++
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
#include <iostream>
#include<conio.h>
#include<iostream>
#include<math.h>
 
using namespace std;
int main()
{
    int i,j;
    float a[10][10]={{0.350570.00003,    0.363,          0.04845,    0.00126,    0.0001,         0.00044,    0.13293,    0.01,       0.0001},
    {0.00034,   0.06548,    0.00044,    0.00004,    0.00004,    0.12414,    0.00073,    0.00097,    0.00197,    0.00025},
    {0.05563,   0.00065,    0.27299,    0.27,           0.04279,    0.0003,         0.00438,    0.00008,    0.00145,    0.00008},
    {0.0007,    0.00392,    0.00113,    0.27261,    0.03131,    0.00119,    0.00054,    0.00135,    0.00561,    0.00108},
    {0.00007,   0.00193,    0.00017,    0.00124,    0.28236,    0.00026,    0.00011,    0.00045,    0.00031,    0.00023},
    {0.00172,   0.00222,    0.00067,    0.00089,    0.00018,    0.14699,    0.0011,         0.0015,         0.00622,    0.00131},
    {0.05842,   0.0027,         0.00715,    0.0512,         0.03339,    0.05517,    0.21517,    0.15749,    0.03667,    0.02091},
    {0.00224,   0.00652,    0.01215,    0.00529,    0.03494,    0.0099,         0.01897,    0.22332,    0.01168,    0.04231},
    {0.00306,   0.00139,    0.00879,    0.00126,    0.00047,    0.02377,    0.00484,    0.00631,    0.18753,    0.00404},
    {0.02695,   0.07101,    0.01009,    0.00747,    0.00333,    0.02258,    0.01165,    0.00336,    0.01595,    0.16954}};
 
 
 
    float y[10]={26.56, 40.97, 69.69, 71.75, 78.79, 38.66, 64.39, 36.76, 22.64, 66.68};
 
    float Xold[10], Xnew[10],s[10], eps, sum ;
 
    Xold[10]=(0,0,0,0,0,0,0,0,0,0);
    eps=0.1;
    int d=0;
    float max=0;
do
{
Xnew[10]=(0,0,0,0,0,0,0,0,0,0);
s[10]=(0,0,0,0,0,0,0,0,0,0);
for (i=0;i<=9;i++)
{sum=0;
for (j=0;j<=9;j++)
sum+=(a[i][j]*Xold[j]);
s[i]=sum;
Xnew[i]=s[i]+y[i];
  cout<<"x["<<i+1<<"]="<<Xnew[i]<<endl; }
 
   for (int i = 0; i < 10; i++)
   {if( max<fabs(Xnew[i]-Xold[i]))
   max=fabs(Xnew[i]-Xold[i]);}
   for (int i = 0; i < 10; i++)
   { Xold[i]=Xnew[i];  }
 
 d++;
}
while (max>eps);
 
cout<<endl;
cout<<"Kol-vo iterasii=";
cout<<d<<endl;
cout<<endl;
 
cout<<"Reshenie:"<<endl;
for (i=0;i<10;i++)
cout<<"x["<<i+1<<"]="<<Xnew[i]<<endl;
 
getch ();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2015, 14:13
Ответы с готовыми решениями:

Метод Якоби
Ребят помогите реализовать метод Якоби по алгоритму (находится во вложениях)...

Метод Якоби
здраствуйте. помогите пожалуйста... нужно прокоментировать метод Якоби.(если...

Метод вращений Якоби с++
Используя метод Якоби найти с точностью 0.0001 все собственные значения и...

Классический метод якоби
Дана матрица размера 5*5: a=e^(abs(i-j)) и столбец свободных членов:{1 0 0 0...

Метод итерации( Якоби)
Доброго времени суток!) может у кого есть исходник или поможет решит...

8
S_el
2134 / 1662 / 354
Регистрация: 15.12.2013
Сообщений: 6,603
10.05.2015, 14:34 #2
Настя1996, лучше дайте ссылку на алгоритм метода и напишите какую задачу решаете.
0
Настя1996
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
10.05.2015, 17:09  [ТС] #3
S_el, http://life-prog.ru/1_62992_metod-pr...od-yakobi.html
задача нахождения решения СЛАУ методом простой итерации(методом Якоби). Сам итерационный процесс описывается формулой Xk+1=AXk+Y. Мне нужно найти решение и вывести количество итераций, при котором оно достигнуто. Условие сходимости проверять не надо, условие задачи предполагает, что процесс должен сойтись.
0
S_el
2134 / 1662 / 354
Регистрация: 15.12.2013
Сообщений: 6,603
10.05.2015, 17:55 #4
Настя1996, хорошо,std::vector<> или std::array<> вместо C-шных массивов использовать можно?
0
Настя1996
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
10.05.2015, 18:33  [ТС] #5
S_el, лучше простые массивы, если можно
0
Настя1996
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
11.05.2015, 21:15  [ТС] #6
S_el, можно и с std::vector<>, и с std::array<>, как-нибудь уже, просто ну ооочень нужно
0
Настя1996
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
13.05.2015, 00:07  [ТС] #7
Ребят, если кому-то вдруг нужно, вот:

C++
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
#include <iostream>
#include<conio.h>
#include<iostream>
#include<math.h>
 
using namespace std;
int main()
{
    int i,j;
    float a[10][10]={{0.350570.00003,    0.363,          0.04845,    0.00126,    0.0001,         0.00044,    0.13293,    0.01,       0.0001},
    {0.00034,   0.06548,    0.00044,    0.00004,    0.00004,    0.12414,    0.00073,    0.00097,    0.00197,    0.00025},
    {0.05563,   0.00065,    0.27299,    0.27,           0.04279,    0.0003,         0.00438,    0.00008,    0.00145,    0.00008},
    {0.0007,    0.00392,    0.00113,    0.27261,    0.03131,    0.00119,    0.00054,    0.00135,    0.00561,    0.00108},
    {0.00007,   0.00193,    0.00017,    0.00124,    0.28236,    0.00026,    0.00011,    0.00045,    0.00031,    0.00023},
    {0.00172,   0.00222,    0.00067,    0.00089,    0.00018,    0.14699,    0.0011,         0.0015,         0.00622,    0.00131},
    {0.05842,   0.0027,         0.00715,    0.0512,         0.03339,    0.05517,    0.21517,    0.15749,    0.03667,    0.02091},
    {0.00224,   0.00652,    0.01215,    0.00529,    0.03494,    0.0099,         0.01897,    0.22332,    0.01168,    0.04231},
    {0.00306,   0.00139,    0.00879,    0.00126,    0.00047,    0.02377,    0.00484,    0.00631,    0.18753,    0.00404},
    {0.02695,   0.07101,    0.01009,    0.00747,    0.00333,    0.02258,    0.01165,    0.00336,    0.01595,    0.16954}};
 
 
 
    float y[10]={26.56, 40.97, 69.69, 71.75, 78.79, 38.66, 64.39, 36.76, 22.64, 66.68};
 
    float Xold[10], Xnew[10],s[10], eps, sum ;
 
                        for(i=0;i<10;i++)
            {
            Xold[i]=0;
            Xnew[i]=Xold[i];
            }
 
 
    eps=0.00001;
    int d=0;
    float max=0;
do
{  d++;
s[10]=(0,0,0,0,0,0,0,0,0,0);
max=0;
for (i=0;i<=9;i++)
{sum=0;
for (j=0;j<=9;j++)
{sum+=(a[i][j]*Xold[j]);
s[i]=sum; }
Xnew[i]=s[i]+y[i];
  cout<<"x["<<i+1<<"]="<<Xnew[i]<<endl;
  if( max<fabs(Xnew[i]-Xold[i]))
   max=fabs(Xnew[i]-Xold[i]);
          }
   for (i=0;i<=9;i++)
   Xold[i]=Xnew[i];
}
while (max>eps);
 
cout<<endl;
cout<<"Kol-vo iterasii=";
cout<<d<<endl;
cout<<endl;
 
cout<<"Reshenie:"<<endl;
for (i=0;i<10;i++)
cout<<"x["<<i+1<<"]="<<Xnew[i]<<endl;
 
getch ();
return 0;
}
0
S_el
2134 / 1662 / 354
Регистрация: 15.12.2013
Сообщений: 6,603
13.05.2015, 00:18 #8
Настя1996, так а в чем ошибка была?
0
Настя1996
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
13.05.2015, 12:51  [ТС] #9
S_el, там с циклами проблема была.
0
13.05.2015, 12:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2015, 12:51

Метод Якоби. Выводит результат -1.INF и -1.IND
Вот сделал прогу, но почему-то вместо нормального результата выводит это:...

Численные методы(метод дихотомии)
Найти все корни функции f(x) на интервале методом дихотомии с погрешностью...

Методы сортировки массивов.Метод пузырьковый
Метод пузырьковый nLeft 600 nRight 1600 Помогите сделать Зарание Благодарю.


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

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

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