Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/20: Рейтинг темы: голосов - 20, средняя оценка - 5.00
proech
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
1

Метод простых итераций для решения системы линейных уравнений

14.04.2014, 01:06. Просмотров 3648. Ответов 1
Метки нет (Все метки)

помогите найти ошибку в алгоритме
при вводе уравнения
x+y = 2
2x-y = 7
x = 2-y;
y = (7-2*x)/-1
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
 
double  FindRootsIteration()
    {
        
            double E; 
            int i=0,j = 0;
 
        std::cout<<"введите точность (10^-n)";
        std::cin>>E;
    //приравниваем    x ,y, z ...... к  0;
    //вычисляем значения x,y,z....;
    //вычисляем разницу между следующим и предыдущим значением 
    //Выбираем максимум из разниц элементов 
    //если максимум из разниц  меньше E
    //то выводим результат
        double  *Result   = new double[LengthLines];
        double *PrevResult =new double[LengthLines];
        double *DifferencesOfResults = new double[LengthLines];
        int k=0;
        
        for (int i = 0;i<LengthLines;i++){
            Result[i] = 0;}
        double SummElem = 0;
        while(true){
            
        for (int i = 0;i<LengthLines;i++)
        {
            PrevResult[i] = Result[i];
            SummElem = 0;
            for (int j = 0;j<LengthLines;j++)
            {
                if(i!=j){
                    SummElem+=M[i][j] *PrevResult[i];}
                
            }
            Result[i] = (1/M[i][i])*(MX[i]-SummElem);
        
            DifferencesOfResults[i] = fabs(Result[i]-PrevResult[i]);
}
        k++;
        if(k>2){
            if(Max(DifferencesOfResults,LengthLines)<E){break;}}
        
        
        for (int i = 0;i<LengthLines;i++){
        std::cout<<"x"<<i<<" = "<<Result[i]<<" ";
 
        
        }
        std::cout<<"\n";
        
        std::cin.get();
    }
 
    return 0.0;
    }
берет предыдущие значения неправильно
0
Миниатюры
Метод простых итераций для решения системы линейных уравнений  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2014, 01:06
Ответы с готовыми решениями:

Решение системы линейных уравнений методом простых итераций
Здравствуйте! Нужна вот такая помощь, незнаю как написать такую программу.

Метод простых итераций для решения СЛАУ
Всем добрый вечер! Столкнулся с заданием на тему решения СЛАУ методом простых...

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

Метод простых итераций для решения СЛАУ
Здравствуйте. Есть функция, реализующая метод простых итераций: void...

Метод простых итераций для решения СЛАУ
Доброго времени суток. Если у кого нибудь есть готовые программы для данного...

1
proech
11 / 11 / 10
Регистрация: 10.07.2013
Сообщений: 150
14.04.2014, 01:16  [ТС] 2
почему -то берёт вместо x - y и наоборот

Добавлено через 2 минуты
MM - это матрица коэффициентов
Mx - это свободные коэффициенты
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2014, 01:16

Метод Гаусса для решения линейных уравнений
Мож у когото завалялся, буду благодарен.

Метод Ньютона для решения нелинейных уравнений: узнать количество итераций
Задание: реализовать метод Ньютона для решения нелинейных уравнений, в итоге...

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


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

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

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