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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ не переводит из string в char* http://www.cyberforum.ru/cpp-beginners/thread41080.html
помогите пожалуйста задание: операции со строками с использованием шаблона string #include <algorithm> #include <iostream> #include <string> #include <conio.h> using namespace std;
C++ Задание на функции Помогите решить задачку на функции С++ , что б работало в CodeGear Составить программу вычисления суммы факториалов всех четных чисел от m до n, где n! - функция. http://www.cyberforum.ru/cpp-beginners/thread41065.html
C++ Перевод кода на с++
Program z15_1_6; const n=5; const m=5; var massiv:array of integer; row,column,exchange:integer; flag:boolean; begin Randomize; Writeln('isxodniy massiv');
C++ Нужна помощь начинающему (while).
Собствено вот код: //While DEMO //прога выводит количество выполненых цыклов while #include <stdio.h> #include <lostream.h> int main (int arg,char* pszArgs) { //input счетчика цыклов ...
C++ Проход по лабиринту http://www.cyberforum.ru/cpp-beginners/thread41006.html
Привет всем. Помогите пожалуйста с задачей на С/C++ идёт практика я не понимаю как сделать задачу просто даже не представляю училка объясняла, но я всё равно не понял пожалуйста помогите кто может с...
C++ Visual C++ 6.0, API функции Помогите, пожалуйста, с такой задачей:Написать программу, используя функции WinAPI (WinMain, MessageBox, CreateWindow, ShowWindow, TextOut), которая при запуске создает окно, используемое для вывода... подробнее

Показать сообщение отдельно
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
29.11.2009, 14:19
Можно как-то так:

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