Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
Tura
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 10
#1

Метод Зейделя - C++

29.04.2011, 21:10. Просмотров 3144. Ответов 7
Метки нет (Все метки)

Я написал прогу по методу Зейделя, так вот при матрице 3х3 выдает после 7 итерации правильный ответ) а при матрице 4х4 уже на второй итерации пишет не правильно(

Может кто подскажет в чём может быть причина????


это 3х3!
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
#include <conio.h>
#include <iostream.h>
#include <math.h>
const int n=3;
double a[3][3] ={{4,-1, 1},
         {2, 6,-1},
         {1, 2,-3}};
 
double b[3]={4, 7,0};
 
void main()
{
clrscr ();
 
 int i,j,e;
 
 double x[3], c[3]={0,0,0};
 cout<<endl;
 
for(e=1;e<8;e++)
  {
   cout<<e<<" ITERAZI9:"<<endl;
 for(i=0;i<n;i++)
  {   x[i]=0;
      for(j=0;j<n;j++)
   {
    if(i!=j)
    x[i]+=a[i][j]*c[j];
   }
   c[i]=(b[i]-x[i])/a[i][i];
   cout<<c[i]<<" ";
  }
  cout<<endl;
 
  cout<<endl;
}
 
getch();
}
А это 4х4!
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
#include <conio.h>
#include <iostream.h>
#include <math.h>
const int n=4;
double a[n][n] ={{0.05, 0.04,   0.6,   0.45},
         {0,    0.267,  0.067, 0.25},
         {1.05, 0.333,  0.091, 0.23},
         {0.029,0.55,   0 ,    0.25}};
 
double b[n]={3.825, 2.181,    13.045, 3.661};
 
void main()
{
clrscr ();
 
 int i,j,e;
 
 double x[n], c[n]={0,0,0,0};
 cout<<endl;
 
for(e=1;e<8;e++)
  {
   cout<<e<<" ITERAZI9:"<<endl;
 for(i=0;i<n;i++)
  {   x[i]=0;
      for(j=0;j<n;j++)
   {
    if(i!=j)
    x[i]+=a[i][j]*c[j];
   }
   c[i]=(b[i]-x[i])/a[i][i];
   cout<<c[i]<<" ";
  }
  cout<<endl;
 
  cout<<endl;
}
 
getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 21:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Зейделя (C++):

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Метод итераций и метод Зейделя - C++
Здравсвуйте программисты! Спасибо всем за помощь в предыдущих темах, осталась последняя лаба, которую нужно решить по предмету &quot;Численные...

Метод Зейделя: - C++
Здравствуйте, у меня получается на данный момент X1 := -8.32587e+307 X2 := -inf X3 := inf я скопировал сам метод зейделя с...

Метод Зейделя - C++
Ребята, каждый из вас уже делал лабы по матрицам. Если у кого-то есть готовая лаба по методу Зейделя, прошу, напишите ее тут и желательно с...

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

Метод Зейделя - C++
ошибка найдена. тема закрыта

7
Tura
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 10
01.05.2011, 12:50  [ТС] #2
Что, никто не может подсказать???
хоть примерно(((
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.05.2011, 12:53 #3
Цитата Сообщение от Tura Посмотреть сообщение
for(e=1;e<8;e++)
это что вообще такое? вы пророк и заранее знаете сколько будет итераций?
0
ValeryLaptev
Эксперт С++
1046 / 825 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
01.05.2011, 13:30 #4
1. Вместо void main() поставьте int main()
2. Если среда микрософтовскаяч версии больше 6.0, то в инклудах от .h надо избавиться
3. Метод итераций программируется циклом while()
Нужно задать некоторую точность епсилон (например, 0.0001) и в условии проверять модуль разности предыдущего решения и текущего. Если разность менее епсилон, то решение удовлетворяет заданной точности.
0
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
01.05.2011, 22:08 #5
Tura, в википедии же есть готовый. Бери не хочу.
И у вас тут нет функции нормы разности векторов. А через нее как раз цикл осуществляется.
0
Tura
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 10
02.05.2011, 22:12  [ТС] #6
Цитата Сообщение от Maxwe11 Посмотреть сообщение
это что вообще такое? вы пророк и заранее знаете сколько будет итераций?
Ага))) я потом, через while переделаю... просто так быстрей!

Добавлено через 4 минуты
Цитата Сообщение от almazsr Посмотреть сообщение
Tura, в википедии же есть готовый. Бери не хочу.
И у вас тут нет функции нормы разности векторов. А через нее как раз цикл осуществляется.
сравни)

C++
1
2
3
4
5
6
7
8
9
10
 for(i=0;i<n;i++)
  {   x[i]=0;
      for(j=0;j<n;j++)
   {
    if(i!=j)
    x[i]+=a[i][j]*c[j];
   }
   c[i]=(b[i]-x[i])/a[i][i];
   cout<<c[i]<<" ";
  }
C++
1
2
3
4
5
6
7
8
9
    for(int i = 0; i < n; i++)
    {
        double var = 0;
        for(int j = 0; j < n; j++)
            if(j != i) 
           var += (a[i][j]*x[j]);
        p[i] = x[i];
        x[i]=(b[i] - var)/a[i][i];
    }
только в вики идёт var, а у меня x[i]!

Добавлено через 4 минуты
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
1. Вместо void main() поставьте int main()
2. Если среда микрософтовскаяч версии больше 6.0, то в инклудах от .h надо избавиться
3. Метод итераций программируется циклом while()
Нужно задать некоторую точность епсилон (например, 0.0001) и в условии проверять модуль разности предыдущего решения и текущего. Если разность менее епсилон, то решение удовлетворяет заданной точности.
не помогло... оно с каждой итерацией всё больше и больше((
0
ValeryLaptev
Эксперт С++
1046 / 825 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
03.05.2011, 02:05 #7
Дык может система не имеет решения?
Условия сходимости выполняются (см. в Вики)?
0
Tura
0 / 0 / 0
Регистрация: 27.04.2011
Сообщений: 10
04.05.2011, 10:44  [ТС] #8
Система имеет решения)
вот: 10,004
4,994
3,336
2,495

Добавлено через 51 минуту
тут в коде наверное маленькая ошибка((( а завтра уже сдавать(

Добавлено через 11 часов 9 минут
Нууу...

Добавлено через 1 час 6 минут
всё уже)) сделал) спс)
0
04.05.2011, 10:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2011, 10:44
Привет! Вот еще темы с ответами:

метод Зейделя. c++ - C++
В цикле do while есть ошибка, из-за неё программа не правильно считает Xold и Xnew. Помогите, пожалуйста, найти ошибку... #pragma once ...

метод Зейделя - C++
Ребят помогите пожалуйста, а то зачот простаивает)Нужна программка реализующая метод Зейделя(или Зейзеля препод так написал что...

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

Метод Гаусса-Зейделя - C++
Здравствуйте. Задание дали нормальное такое) Вообще не понимаю что хотят. Объясните пожалуйста языком для домохозяек или же есть у кого...


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

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

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