Форум программистов, компьютерный форум CyberForum.ru

Метод простых итераций для решения СЛАУ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 183, средняя оценка - 4.85
kent_05
4 / 4 / 0
Регистрация: 18.12.2011
Сообщений: 59
08.11.2012, 21:31     Метод простых итераций для решения СЛАУ #1
Доброго времени суток. Если у кого нибудь есть готовые программы для данного метода, скиньте пожалуйста. Особенно написанные на Borland C++.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
08.11.2012, 22:22     Метод простых итераций для решения СЛАУ #2
kent_05, вот лови, было буквально день назад на форуме Систему нелинейных уравнений методом итерации
kent_05
4 / 4 / 0
Регистрация: 18.12.2011
Сообщений: 59
08.11.2012, 23:12  [ТС]     Метод простых итераций для решения СЛАУ #3
Спасибо.

Добавлено через 3 минуты
Еще ответь на один вопрос если не трудно, решил перейти с борланда на wxdev c++, короче пишу элементарные программы, а он их компилировать отказывается, постоянно пишет : "проект не откомпилирован" что делать подскажи...
-=ЮрА=-
Заблокирован
Автор FAQ
08.11.2012, 23:25     Метод простых итераций для решения СЛАУ #4
kent_05, пишу и разрабатываю в Visual Studio, с DevC знаком слабо.Думаю дело в настройках проекта либо какихто опциях компилятора.Кстати такой момент-код простых программ можно проверить с помощью codpad.org,если там будут ошибки,код скорее всего некорректен либо не соответствует стандарту и тогда твой компилятор верно пишет что не может слинковать проект.
kent_05
4 / 4 / 0
Регистрация: 18.12.2011
Сообщений: 59
09.11.2012, 00:00  [ТС]     Метод простых итераций для решения СЛАУ #5
Я понял в чем дело, просто нужно было перезагрузить компилятор, и все заработало.

Добавлено через 23 минуты
Юра еще один вопрос, у меня дана система:
4*х1-х2-х3=6
-х1+8*х2=4
х1-х2+6*х3=0
Данную систему нужно было решить методом Якоби(простых итераций) решил спокойно там всего две итерации, а вот с программным кодом туговато у меня, не понимаю, у меня есть код для данного метода, не мог бы ты его приспособить под мое уравнение, если не трудно.
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
#define eps 0.0001 //требуемая точность вычислений
void iteration(double a[N][N],double b[N],double x[N])
{
 int i,j;
 double norma; //чебышевская норма вектора
 double xn[N]={0};//вектор для текущей итерации, начальное значение
       //должно быть равно начальному приближению
 
 
 
 do{
  norma=0.0;
  for(i=0;i < N;i++)
  {
   xn[i]=-b[i];
 
   for(j=0;j < N;j++)
   {
    if(i!=j)
     xn[i]+=a[i][j]*x[j];
   }
 
   xn[i]/=-a[i][i];
  }
 
  for(i=0;i < N;i++)
  {
   if(fabs(x[i]-xn[i]) > norma)
    norma=fabs(x[i]-xn[i]); //Вычисление нормы вектора
   x[i]=xn[i];
  }
  
 }
 while(norma > eps); //проверка на необходимую точность вычислений
 
 
 return;
}
Добавлено через 2 минуты
А тот пост, который ты мне отправил, это у меня 3 лабораторная мы это еще не прошли, но все равно спасибо и за это.
-=ЮрА=-
Заблокирован
Автор FAQ
11.11.2012, 21:48     Метод простых итераций для решения СЛАУ #6
kent_05, сори но твоя схема мне не нравится, предлагаю вот такое решение по методу простых итераций
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
68
69
70
71
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;
 
double f1(double x1, double x2, double x3);
double f2(double x1, double x2, double x3);
double f3(double x1, double x2, double x3);
 
double g1(double x1, double x2, double x3);
double g2(double x1, double x2, double x3);
double g3(double x1, double x2, double x3);
 
int main()
{
    
    cout<<"\tEnter initial values of params\n";
    double x1;cout<<"x1 = ";cin>>x1;
    double x2;cout<<"x2 = ";cin>>x2;
    double x3;cout<<"x3 = ";cin>>x3;
    double er;cout<<"Error of calculations = ";cin>>er;
    for
    (
        double it = 1; 
        er < fabs(f1(x1, x2, x3)) || er < fabs(f2(x1, x2, x3)) || er < fabs(f3(x1, x2, x3));
        it = it + 1
    )
    {
        system("cls");
        cout<<"Iteration # "<<setprecision(0)<<it<<endl;
        cout<<"x1 "<<setprecision(0)<<(x1 = g1(x1, x2, x3))<<endl;
        cout<<"x2 "<<setprecision(0)<<(x2 = g2(x1, x2, x3))<<endl;
        cout<<"x3 "<<setprecision(0)<<(x3 = g3(x1, x2, x3))<<endl;
    }
    cout<<"f1(x1, x2, x3) = 4*x1 - x2 - x3 - 6 = "<<f1(x1, x2, x3)<<endl;
    cout<<"f2(x1, x2, x3) =  -x1 + 8*x2    - 4 = "<<f2(x1, x2, x3)<<endl;
    cout<<"f3(x1, x2, x3) = x1 - x2 + 6*x3     = "<<f3(x1, x2, x3)<<endl;
    system("pause");
    return 0;
}
 
double f1(double x1, double x2, double x3)
{
    return 4*x1 - x2 - x3 - 6;
}
 
double f2(double x1, double x2, double x3)
{
    return -x1 + 8*x2 - 4;
}
 
double f3(double x1, double x2, double x3)
{
 
    return x1 - x2 + 6*x3;
}
 
double g1(double x1, double x2, double x3)
{
    return x1 - 0.005*f1(x1, x2, x3);
}
 
double g2(double x1, double x2, double x3)
{
    return x2 - 0.005*f2(x1, x2, x3);
}
 
double g3(double x1, double x2, double x3)
{
    return x3 - 0.005*f3(x1, x2, x3);
}
PS:Напомню ещё раз, что метод простых итераций предполагает схему g(x) = x + b*f(x), где b константа.
Миниатюры
Метод простых итераций для решения СЛАУ  
Yandex
Объявления
11.11.2012, 21:48     Метод простых итераций для решения СЛАУ
Ответ Создать тему
Опции темы

Текущее время: 01:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru