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

Метод простой итерации (неправильно выдает корни уравнения) - C++

Восстановить пароль Регистрация
 
Adam-RS
 Аватар для Adam-RS
1 / 1 / 0
Регистрация: 02.10.2010
Сообщений: 28
16.10.2011, 20:11     Метод простой итерации (неправильно выдает корни уравнения) #1
Привет всем)) Помогите, пожалуйста) В системе уравнений неправильно выдает корни, уже и не знаю, что делать((( Почему-то, вместо корней выдает, результаты (0.795, 0.849, 1.398). А корни должны быть 0.980, 1.004, 1.563....

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
72
73
74
75
76
// понятие о норме.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
int i, j, N=3;
float a[3][3]={{1.02, -0.05, -0.1}, {-0.11, 1.03, -0.05},{-0.11, -0.12, 1.04}}, al[3][3]={0};
float b[3]={0.795, 0.849, 1.398},bt[3]={0},x0[3]={0},x1[3]={0}, e=0.001, k;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    /*for (i=0;i<N;i++)
    {for(j=0;j<N;j++)
        {
            
            cout<<"a["<<i<<"]["<<j<<"]= ";
            cin>>a[i][j];
            
        }
    }*/
 
 
 
     for (i=0;i<N;i++)
    {for(j=0;j<N;j++)
        {      // cout<<i<<endl; cout<<j;
                 
           if(i=j) al[i][j]=0; else 
           {al[i][j]=(-1)*(a[i][j]/a[i][i]);}
        }//cout<<"dgdfgdsfgsd";
    }
       for (i=0;i<N;i++)
       {bt[i]=b[i]/a[i][i];
            x0[i]=bt[i]; //cout<<"zzzzz";
       }
  
      for (i=0;i<N;i++)
    {for(j=0;j<N;j++)
        {
                    x1[i]=bt[i]+al[i][j]*x0[i];
                    x0[i]=x1[i];
                //cout<<"xxxxxxxxxxxxx";
        }
    } 
      k=0;
      for (i=0;i<N;i++)
    { 
        k=k+sqrt(x1[i]-x0[i]); //cout<<"aaaaaaa";
    }
 
      for (i=0;i<N;i++)
    {for(j=0;j<N;j++)
        {
            do
                 {
                    x1[i]=bt[i]+al[i][j]*x0[i];
                    x0[i]=x1[i];
                 } while(k>e);
                     
        }
      cout<<"--------------------"<<endl;
      for(i=0;i<N;i++)
cout<<"x1[i]= "<<x1[i]<<endl;
     getchar();
    return 0;
}
 
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 20:11     Метод простой итерации (неправильно выдает корни уравнения)
Посмотрите здесь:

Метод простой итерации C++
[C++] Метод простой итерации C++
C++ Метод простой итерации
Метод простой итерации C++
Метод простой итерации C++
Метод простой итерации C++
Метод простой итерации C++
C++ Решение уравнения методом простой итерации

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
17.10.2011, 13:45     Метод простой итерации (неправильно выдает корни уравнения) #2
во-первых, в строке 34 должно быть if (i==j)...
а во-вторых, у вас просто алгоритм неправильно реализован
Yandex
Объявления
17.10.2011, 13:45     Метод простой итерации (неправильно выдает корни уравнения)
Ответ Создать тему
Опции темы

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