Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 19.07.2008
Сообщений: 142
1

Последний метод итераций

19.06.2009, 12:54. Показов 5723. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравсвуйте программисты! Спасибо за ответы на предыдущие посты. Осталось решить методом итераций систему уравнений. Вчера Сазари мне подсказал как делать методом Зейделя, осталось методом итераций. Вот попробывал собрать код методом итераций, но дело в том,что результат системы уравнений равен по -1, все 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
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include <cmath>
#define eps 0.0001 //требуемая точность вычислений
#define N 4
using namespace std;
 
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;
 }
//------------------------------------------
int main()
{
cout<<"Metod Iterasii"<<endl<<endl;
double a[N][N],b[N],x[N];
int i;
a[0][0] = -1.01; a[0][1] = 0.02; a[0][2] = -0.62; a[0][3] = 0.08; b[0] = 1.3;
a[1][0] = -1.03; a[1][1] = 0.28; a[1][2] = 0.33; a[1][3] = -0.07; b[1] = -1.1;
a[2][0] = -1.09; a[2][1] = 0.13; a[2][2] = 0.42; a[2][3] = 0.28; b[2] = 1.7;
a[3][0] = -1.19; a[3][1] = -0.23; a[3][2] = 0.08; a[3][3] = 0.37; b[3] = 1.5;
for(i=0; i<N; i++)
 x[i] = 0;
iteration(a,b,x);
for(i=0; i<N; i++)
 cout<<x[i]<<endl;
 
cin.get(); 
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2009, 12:54
Ответы с готовыми решениями:

Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++)
перевести из паскаля в С++ program method_of_simple_iteration; uses crt; var a:array of real;...

Метод итераций и метод Зейделя
Здравсвуйте программисты! Спасибо всем за помощь в предыдущих темах, осталась последняя лаба,...

метод итераций с++
пишите срочно нужна помощь

метод итераций
x1=3-0.05*x2-0.04*x3 x2=4-0.04*x1+0.07*x3 x3=7-0.02*x1+0.03*x3 написала программу,но с++...

17
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 13:05 2
А ты можешь вкратце объяснить как ты приводишь матрицу к диагонально-преобладающему виду?
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
29.11.2009, 14:19 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
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <cmath>
 
const int n = 4;
 
// функция оценки погрешности
double Delta(double *X, double *x, double a);
void PrintVector(double *X);
 
// ---------------------------------------------------------------------------------------
 
int main()
{
  // ИСХОДНЫЕ ДАННЫЕ ===================================================
  
    // АЛЬФА матрица
    double A[n][n] = {  
                        { 0,       -0.014,  -0.072,  -0.163 },
                        { -0.092,       0,  -0.045,  -0.098 },
                        { -0.062,  -0.018,       0,  -0.038 },
                        { -0.106,  -0.111,  -0.051,       0 },
                     };
                     
    // вектор БЕТА
    double b[n] = { -3.10,  1.16,  1.82,  1.0 };  
 
    // норма
    double a =0.299;
    
    // точность вычеслений (эпсилон)
    double eps = 0.001;
 
  // ВЫЧИСЛЕНИЯ ========================================================
    
    // счетчик итераций
    int k = 0;
    
    // вектор приблежения
    double x[n];
        
    // вектор с решением системы
    double X[n];
    
    // итерации
    while (true)
    {     
        // если первая итерация - в качестве приблежения берем вектор БЕТА
        if (!k) 
            memcpy(x, b, n*sizeof(double));
        else
            memcpy(x, X, n*sizeof(double));
 
        // обнуляем вектор с решением системы
        memset(X, 0, n*sizeof(double));
            
        // подсчитываем значения
        for (int i=0; i<n; i++)
        {
            for (int j=0; j<n; j++)
            {
                if (i==j) continue;
                X[i] += A[i][j]*x[j];
            }
            X[i] += b[i];
        }
        
        // выводим решение системы
        PrintVector(X);
        
        k++;
        
        // оцениваем погрешность
        // если удовлетворяет заданной - прекращаем вычисления
        if (Delta(X, x, a) <= eps) break;
    }
 
    // выводим кол-во итераций
    std::cout << "\n Count of iteration is " << k << std::endl;
    
    system("pause");
    return 0;
}
 
// ---------------------------------------------------------------------------------------
 
double Delta(double *X, double *x, double a)
{
    double max = 0;
    
    for (int i=0; i<n; i++)
    {
       double f = fabs(X[i]-x[i]);
       if (f > max) max = f;
    }
    
    return (a/(1-a))*max;
}
 
// ---------------------------------------------------------------------------------------
 
void PrintVector(double *X)
{
    for (int i=0; i<n; i++)
        std::cout << " X["<< i+1 << "] = "  << X[i] << std::endl;
    std::cout << "------" << std::endl;        
}
1
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 16:24 4
А как Вы приводите матрицу к диагонально-преобладающему виду?

Добавлено через 2 минуты
Вот например тут в коде матрица приводится к диагонально-преобладающему виду. Поэтому код работает для любой хорошо обусловленной матрицы, записанной произвольно. Но я его никак с фортрана на С++ не преведу(
http://rulekcia.ru/kurs/45/2353
Fortran
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
       PROGRAM ITERAC
       IMPLICIT NONE
       INCLUDE 'mpif.h'
       INTEGER
      $ NPROCS, IAM, IERR, I, J,
      $ M_SIZE, BEGC, ENDC, COMM, COUNT1,
      $ XCOUNT, XNUMER, XCOUNT2, XNUMER2
       DOUBLE PRECISION
      $ SUMM, A, X, X_LAST, EPS, MAX_ERR,
      $ TIME1, TIME2, DR, DRMAX
       PARAMETER
      $ (M_SIZE = 10000, EPS=0.00000005)
       DIMENSION
      $ A(M_SIZE, M_SIZE+1),
      $ X(M_SIZE), X_LAST(M_SIZE),
      $ XCOUNT(0:M_SIZE), XNUMER(0:M_SIZE),
      $ XCOUNT2(0:M_SIZE), XNUMER2(0:M_SIZE)
      CALL MPI_INIT(IERR)
      CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NPROCS,IERR)
      CALL MPI_COMM_RANK(MPI_COMM_WORLD,IAM,IERR)
      COMM = MPI_COMM_WORLD
C       «0»-процесс засекает время
      IF (IAM.EQ.0) TIME1 = MPI_WTIME()
       IF (IAM.EQ.0) THEN
C       «0»-процесс формирует матрицу А, имеющую диагональное преобладание
       DO I=1, M_SIZE
        SUMM=0
        DO J=1, M_SIZE
         A(I,J) = I+J
         SUMM=SUMM+A(I,J)
        END DO
        A(I,I) = A(I,I)+SUMM*2
       END DO
C       «0»-процесс формирует столбец свободных членов матрицы А
       DO I=1, M_SIZE
        A(I,M_SIZE+1) = M_SIZE+I**2
       END DO
C       «0»-процесс формирует начальное приближение вектора X и начальное
C       приближение максимальной ошибки MAX_ERR
       DO I=1, M_SIZE
        X(I)=A(I,M_SIZE+1)/A(I,I)
        IF (X(I).GT.MAX_ERR) MAX_ERR=DABS(X(I))
       END DO
       OPEN(12, FILE='RES.DAT')
       COUNT1 = 0
       END IF
C       каждый процесс определяет первую и последнею строки свой полосы для расчета
C       и соответственно первую и последнюю координаты вектора X
       BEGC = IAM*M_SIZE/NPROCS+1
       ENDC = (IAM+1)*M_SIZE/NPROCS
C        каждый процесc определяет свои массивы размера полоc и их положение
       DO I = 0,NPROCS-1
        XCOUNT (I) = ((I+1)*M_SIZE/NPROCS - I*M_SIZE/NPROCS)
        XNUMER (I) = I*M_SIZE/NPROCS
       END DO
       DO I = 0,NPROCS-1
        XCOUNT2 (I) = XCOUNT (IAM)
        XNUMER2 (I) = XNUMER (IAM)
       END DO
C       «0»-процесс рассылает всем процессам матрицу А и начальное приближение
C       максимальной ошибки MAX_ERR
       CALL MPI_BCAST (A(1,1), M_SIZE*(M_SIZE+1),
       $ MPI_DOUBLE_PRECISION, 0, COMM, IERR)
       CALL MPI_BCAST (MAX_ERR, 1,
       $ MPI_DOUBLE_PRECISION,0,COMM,IERR)
C        основной цикл программы;
C        вычисления идут, пока MAX_ERR не станет меньше точности EPS
       DO WHILE (MAX_ERR.GT.EPS)
        IF(IAM.EQ.0) THEN
         DO I=1, M_SIZE
          X_LAST(I)=X(I)
         END DO
        END IF
C        «0»-процесс рассылает всем процессам вектор X
        CALL MPI_BCAST (X(1), M_SIZE,
       $ MPI_DOUBLE_PRECISION, 0, COMM, IERR)
C        обращение к процедуре вычисления новых значений вектора X
        CALL ITER_JA (X, A, M_SIZE, BEGC, ENDC)
C        процессы отсылают друг другу свои рассчитанные блоки нового вектор X
        CALL MPI_ALLTOALLV(X(1), XCOUNT2, XNUMER2,
       $ MPI_DOUBLE_PRECISION, X(1), XCOUNT,
       $ XNUMER, MPI_DOUBLE_PRECISION,
       $ MPI_COMM_WORLD, IERR)
C        «0»-процесс вычисляет ошибку MAX_ERR
        IF(IAM.EQ.0) THEN
         MAX_ERR=DABS((X(1)-X_LAST(1)))
         DO I=2, M_SIZE
          IF (DABS((X(I)-X_LAST(I))).GT.MAX_ERR)
       $ MAX_ERR=DABS((X(I)-X_LAST(I)))
         END DO
C        счетчик COUNT1 считает колличество итераций
         COUNT1=COUNT1+1
        END IF
C        «0»-процесс рассылает новое значение ошибки вычисления MAX_ERR
        CALL MPI_BCAST(MAX_ERR,1,MPI_DOUBLE_PRECISION,0,COMM,IERR)
        END DO
        IF (IAM.EQ.0) THEN
C        «0»-процесс выполняет проверку и производит выдачу результатов
C        в файл RES.DAT
         WRITE(12,*) 'Vector X ', 'ERROR '
         DRMAX=0.0
         DO I=1,M_SIZE
          SUMM=0.0
          DO J=1,M_SIZE
           SUMM=SUMM+X(J)*A(I,J)
          END DO
          DR = (SUMM - A(I,M_SIZE+1))/A(I,M_SIZE+1)
          WRITE(12,'(3f18.7)') X(I), SUMM - A(I,M_SIZE+1)
          IF (DR.GT.DRMAX) DRMAX = DR
         END DO
         WRITE(12,'(a, i4)') 'Count of iteration', COUNT1
         WRITE(12,'(a, f14.6)') 'Maximum of absolute error', DRMAX
C        «0»-процесс засекает время и определяет длительность работы программы
         TIME2 = MPI_WTIME()
         WRITE(12, *) 'Time of calculation', TIME2-TIME1
         WRITE(12,*) 'GOOD FINISH'
         CLOSE(12)
         END IF
        CALL MPI_FINALIZE(IERR)
      END
C        подпрограмма, выполняющая вычисления новых значений вектора X
C        в полосе матрицы А, определенной для каждого процесса
      SUBROUTINE ITER_JA (X_OLD, AM, M_S, FIRST, LAST)
      IMPLICIT NONE
      INTEGER I, J, WIDTH, M_S, M_SIZE, FIRST, LAST
      DOUBLE PRECISION SUMM, AM, XX, X_OLD
      PARAMETER (M_SIZE = 10000)
      DIMENSION AM(M_SIZE, M_SIZE+1), XX(M_SIZE), X_OLD(M_SIZE)
      DO I=FIRST, LAST
        SUMM=0
        DO J=1, I-1
         SUMM=SUMM+AM(I,J)*X_OLD(J)
        END DO
        DO J=I+1, M_S
         SUMM=SUMM+AM(I,J)*X_OLD(J)
        END DO
        XX(I) = (AM(I,M_S+1)-SUMM)/AM(I,I)
       END DO
       DO I=FIRST, LAST
         X_OLD(I) = XX(I)
       END DO
      RETURN
      END
0
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 16:32 5
А у Вас решается просто итеративный процесс. Если матрица не диагонально-преобладающая, то он расходится. Я в Вашем коде не вижу такого. Ради примера вот есть текстовик, там объясняется о чем я и приводится один из алгоритмов, но я тоже не в силах пока его норм реализовать. Уже несколько дней не спал, очень плохо соображаю.Метод Якоби(итеративный).rar
0
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 17:50 6
Тут основная проблема в том, что выбор коэффициентов - задача NP-полная. Что тут применить пока не доходит
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
29.11.2009, 22:22 7
Дело в том, что в Методе простых итераций используется преобразованная система уравнений.

Если, в общем виде записывается система вот так:

A*X = B;

но преобразованная система выглядет так:

X = альфа*x + бета;


Переход к преобразованной системе уравнений происходит следующим образом:

бета i = Bi / Aii;
альфа i j = - Aij / Aii;
при i,j = 1,2...n; и i не равно j;

при i = j альфа i j = 0;
2
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 22:27 8
Дело вот в чем. Я это знаю, но если Матрица А не диагонально преобладающая, то после таких преобразований Вы получите расходящийся процесс. Так как норма матрицы альфа будет больше еденицы. Иногда он сходится, если матрица хорошо обусловлена, но в большинстве случаев, если норма больше еденицы - то все плохо Нужно диагональное преобладани. В том текстовике они приводят её к такому виду. И даже есть блок-схемы, но я не могу их разобрать. Все запутано. По крайней мере, для меня.
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
29.11.2009, 22:34 9
ну так матрицу не всегда можно привести к диагонально преобладающей. в этом вся и загвоздка - это называется проверка на сходимость или как-то так. методом простых итераций можно решить не любую систему уравнений.

Fortran
1
2
3
4
5
6
7
8
9
C       «0»-процесс формирует матрицу А, имеющую диагональное преобладание
       DO I=1, M_SIZE
        SUMM=0
        DO J=1, M_SIZE
         A(I,J) = I+J
         SUMM=SUMM+A(I,J)
        END DO
        A(I,I) = A(I,I)+SUMM*2
       END DO
на C++ это должно выглять как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
// процесс формирует матрицу А, имеющую диагональное преобладание
// M_SIZE - порядок матрицы
for (int i=0; i<M_SIZE; i++)
{
   double SUMM=0;
   for (int j=0; j<M_SIZE; j++)
   {
      A[i][j] = i+j;
      SUMM += A[i][j];
   }
   A[i][i] = A[i][i] + SUMM*2;
}
1
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 22:51 10
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
ну так матрицу не всегда можно привести к диагонально преобладающей. в этом вся и загвоздка - это называется проверка на сходимость или как-то так.
Хорошо. Щас я выложу систему, которая не решается "в лоб" но к диагонально-преобладающему виду приводится.
5.96 1.40 5.03 -7.41
2.99 1.25 -0.38 4.48
1.05 -3.57 1.92 -15.14
Это расширенная матрица системы. В лоб, она не решается, там норма матрицы алфа много больше еденицы.
Однако переставляя строки местами и скаладывая их и вычитая, домножив на произвольные коэффициенты её можно свети к такой (кстати очень даже быстро):
2.99 1.25 -0.38 4.48
1.05 -3.57 1.92 -15.14
1.03 -4.67 7.71 -31.51
Тут уже явно видно преобладание диагональных элементов. И тогда она прекрасно решается, и ответ таков
-0.048278
3.014007
-2.254846
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
на C++ это должно выглять как-то так:
Этот код не помогает. Лучше всего написано по этому поводу в том документе в архиве. Но я пока не могу разобрать.
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
бета i = Bi / Aii;
альфа i j = - Aij / Aii;
Вот тут, когда Вы делите на Aii, то это Aii должно по модулю превышать сумму элементов соответствующей строки. А если это не выполняется, то полученная матрица альфа будет с нормой намного большей еденицы.
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
29.11.2009, 23:06 11
Цитата Сообщение от galileopro Посмотреть сообщение
Вот тут, когда Вы делите на Aii, то это Aii должно по модулю превышать сумму элементов соответствующей строки. А если это не выполняется, то полученная матрица альфа будет с нормой намного большей еденицы.
Да

Цитата Сообщение от galileopro Посмотреть сообщение
Этот код не помогает.
я лишь перевел с фортрана

насчет сложений/вычитаний/домножений - не знаю.. Но это, по идеи, и не важно. А перемещение строк - это просто.
Достаточно искать максимальный элемент по модулю (предположительно диагональный), смотреть его индекс и перемещать строку в ту позицию, в которой этот максимальный элемент будет диагональным.

И все таки, как вы получили из строки:
5.96 1.40 5.03 -7.41
строку
1.03 -4.67 7.71 -31.51
1
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 23:49 12
Я делал так:
1) Сложил первую строку с третьей, и записал р-тат в первую.
2) Вычел из первой 2*на вторую и записал в первую.
3) Записал то, что во второй в первую.
4) записал то, что в третьей во вторую.
5) Записал то, что в первой в третью.

Цитата Сообщение от Monte-Cristo Посмотреть сообщение
насчет сложений/вычитаний/домножений - не знаю.. Но это, по идеи, и не важно.
Как это не важно, только переставляя строки ничего не добъешься.
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.11.2009, 00:49 13
Цитата Сообщение от galileopro Посмотреть сообщение
1.03
по идеи 0.278 должно быть

Дело в том, что написать программу которая анализировала и думала бы как человек - тяжело.
Именно поэтому, этот способ и редко применяется. Обычно используется метод приведения матрицы к треуголному виду.
1
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
30.11.2009, 12:14 14
А я напиасал. Потом выложу. Я щас на пары ухожу.
0
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
01.12.2009, 21:01 15
Delphi
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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
Label m,h;
type MyType=array[1..3,1..3] of real;
var mf:MyType=((2.87, -2.67, -2.85),(3.55,0.71,-1.25),(1.13,-4.81,2.14));
    vs,mf1:MyType;
    i,j,kol,v1,v2,k:integer;
    max:real;
begin
kol:=0;
mf1:=mf;
m:
  max:=0;
  for i:=1 to 3 do
    for j:=1 to 3 do if abs(mf[i,j])>max then begin max:=abs(mf[i,j]); v1:=i; v2:=j;end;
  if vs[v2,1]=0 then begin for i:=1 to 3 do vs[v2,i]:=mf1[v1,i]; inc(kol); end;
  mf[v1,v2]:=0;
  if kol<3 then goto m;
 
  for i:=1 to 3 do
   if vs[i,i]<0 then for j:=1 to 3 do vs[i,j]:=-vs[i,j];
kol:=1;
h: max:=0;
  for j:=1 to 3 do max:=max+abs(vs[kol,j]);
  if abs(vs[kol,kol])>max-abs(vs[kol,kol])then inc(kol)
                                          else begin
                                          max:=0;
  for j:=1 to 3 do if (abs(vs[kol,j])>max)and(j<>kol) then begin v1:=j; max:=abs(vs[kol,j]); end;
  if vs[kol,v1]>0 then for k:=1 to 3 do vs[kol,k]:=vs[kol,k]-vs[v1,k]
                  else for k:=1 to 3 do vs[kol,k]:=vs[kol,k]+vs[v1,k]
                                          end;
  if kol<4 then goto h;
 
  for i:=1 to 3 do
   if vs[i,i]<0 then for j:=1 to 3 do vs[i,j]:=-vs[i,j];
   
  for i:=1 to 3 do begin
   for j:=1 to 3 do write(vs[i,j]:0:3,' ');
   writeln;
   end;
   readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Вот. Пока черновой вариант

Добавлено через 23 минуты
Monte-Cristo, что скажете?
0
blackwizard
18.05.2010, 19:14 16
спасибо, полезная тема.
32 / 7 / 1
Регистрация: 10.09.2010
Сообщений: 836
18.10.2010, 11:49 17
Найти корень алгебраического уравнения на заданном интервале [a,b],с точностью эпсилон 0,00001
(x-1)^2-0,5e^x=0
интервал [-0,2;0,3]
Помогите пожалуйста
0
-5 / 6 / 4
Регистрация: 16.12.2010
Сообщений: 68
02.12.2011, 01:39 18
prikolist, а можещь поделится методом зейделя???
0
02.12.2011, 01:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2011, 01:39
Помогаю со студенческими работами здесь

Метод итераций
Здравствуйте. Дали вот такое задание: Для заданной функции Y = f(x) на интервале : 1)...

Метод итераций
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; //#define eps 0.001 void...

Метод итераций
x*x*x+2*x+6*(log(2+10*sqrt(3)))=0 отрезок: Это сама задача, вот код программы: У меня такой...

метод итераций
ребят помогите пжлст решить задачки: 1. Дана целочисленная прямоугольная матрица. Определить...

метод итераций
x+cos(x^0,52+2)=0; на промежутке , с точностью 0,9892

Метод итераций
Берется какое то приближенное к решению значение х0 (начальное приближение) и подставляется в...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru