Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Enumerators and calculus Hi everyone. I want ask you. Can you help me to add some additional functions into my project. These are 2 functions which should be added: 1) Choose one abstraction’s property for which the type is int, unsigned, or double and implement non-class function double avg_<property-name>(const Inventory & inv), that returns calculated average value among the inventory items. 2) Demonstrate calling... https://www.cyberforum.ru/ cpp-beginners/ thread1390320.html C++ Ошибка в компиляции
#include <iostream> using namespace std; int main() { int n; cin>>n; int photo; int w, h;
C++ Шахматная задачка Помогите с задачкой, напишите примерный код, пожалуйста. «Ферзеконь» сочетает в себе ходы ферзя и коня, см. Рисунок ниже. Написать программу, которая на квадратной доске 10 х 10 клеток расставит 10 ферзеконей так, чтобы ни один из них не угрожал другому (то есть ни один ферзеконь не должен иметь возможность пойти на клетку, на которой стоит другой ферзеконь). х - - х - - х - - - - х х х х... https://www.cyberforum.ru/ cpp-beginners/ thread1390302.html C++ Перегрузить оператор "-" таким образом, чтобы при работе с массивами он поэлементно их вычитал И снова всем привет. Снова практикуюсь в написании кода. Теперь задача заключается в следующем: Надо перегрузить оператор "-" таким образом, чтобы при работе с массивами он поэлементно их вычитал (если это возможно).Массивы одномерные, описываются классом. Их количество неизвестно Вот,я написала код. Ошибок не выдает,кроме ошибки выполнения, как обычно. Буду благодарна, если укажете на... https://www.cyberforum.ru/ cpp-beginners/ thread1390300.html
C++ Односвязный рекурсивный список строк
помогите пожалуйста!! Объявите класс, который реализует односвязный рекурсивный список строк в свободной памяти. Список представляется двумя указателями: указателем на строку в свободной памяти (поле info) и указателем на список же, только более короткий (поле tail). В частном случае одноэлементного списка этот указатель равен null. Реализовать методы добавление элемента в i-ю позицию;...
C++ Класс "Динамический массив" Создать динамический массив, через класс .Дан целочисленный массив. Найти количество элементов между первым и последним максимальным. https://www.cyberforum.ru/ cpp-beginners/ thread1390266.html
C++ Лежит ли точка внутри заштрихованной области, вне заштрихованной области или на ее границе? https://www.cyberforum.ru/ cpp-beginners/ thread1390263.html
Дана точка на плоскости с координатами (x, y). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На грани" в зависимости от того, лежит точка внутри заштрихованной области, вне заштрихованной области или на ее границе. Есть идеи?
C++ Конструктор Шредингера "нет подходящего конструктора по умолчанию", хотя он есть
собственно, код. на 156-й строке ( cont(circi);) ругается на отсутствие конструктора в классе. но он там есть! я его видел! а если серьезно, то у меня нет идей, что может не нравится в таком конструкторе ( cont (circ &part) ) программа должна выводить, пересекаются ли окружности, затем объект со сравнением, координатами и радиусом записывать в хранилище #include<stdio.h> #include<math.h>...
C++ Создать собственную функцию для расчёта выражения Задачу и формулы надо переписывать! Редактор формул внизу страницы. Уважаемые, выручайте. Не знаком и никогда не работал c C++ если кто может пожалуйста напишите код программы и алгоритм в виде блок схем и еще очень нужен файл exe программы. Заранее спасибо! https://www.cyberforum.ru/ cpp-beginners/ thread1390258.html C++ Сортировка подсчетом (перестановка строк) https://www.cyberforum.ru/ cpp-beginners/ thread1390253.html
Всем привет! Бьюсь уже несколько дней над решением задачи поразрядной сортировки двумерного массива чисел с помощью сортировки подсчета, что-то типо такого: 1 2 3___ 5 6 |1|___1 |2| 3 4 5 6 -> 1 2 |3| -> 4 |5| 6 -> ... 6 5 1___ 4 5 |6|___5 |6| 1 Понимаю как работает обычная сортировка подсчетом, но не понимаю, как спроецировать ее на двумерный массив... Как привязать номер строки к...
C++ Вычисление определённого интеграла Dev-C++
Написать подпрограммы для вычисления подынтегральных функций f1(x), f2(x), f2(x) определенного интеграла от a до b с точностью e. f_1(x)=\frac{x}{\sqrt{x^4-x}}\\ f_2(x)=x\, cos\,\left(\frac{x}{25} \right)\\ f_3(x)=\frac{1}{x^2}+sin\,\frac{x}{6} Метод Ньютона (правило 3/8) Заранее спасибо. Просто сам не могу понять логику нахождения интеграла, это какая то формула должна быть или что?
C++ Хотите проверить сами себя на знание C++? https://www.cyberforum.ru/ cpp-beginners/ thread1390245.html
Хотите проверить сами себя на знание C++? Проверь самого себя на знание C++
1 / 1 / 3
Регистрация: 23.09.2014
Сообщений: 45
0

Метод Зейделя-Гаусса С++ - C++ - Ответ 7314253

08.03.2015, 14:04. Показов 4173. Ответов 2
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Для написания программы, решающей систему линейных уравнения методом итерации или Зейделя, использовалась среда разработки Visual Studio 2010. Задание стояло такое: написать прогу которая уточняла приближение знаков(решения) матрици до 8 знаков. Но возникла ошибка ту матрицу которую мне надо не решает т_Т.
Я создал новый проект пустой проект и добавим в него файл исходного кода — main.cpp со следующим содержимым
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
#include <iostream>
#include <cmath>
#include "norm.h"
#include "iterat.h"
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
    double eps, A[10][10], B[10];
    int N, i, j;
    int method;
    cout << "Введите размер квадратной матрицы: ";
    cin >> N;
    cout << "Введите точность вычислений: ";
    cin >> eps;
    cout << "Заполните матрицу А: " << endl << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            cout << "A[" << i << "][" << j << "] = ";
            cin >> A[i][j];
        }
    }
    cout << "\nВаша матрица А:" << endl;
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    cout << "\nЗаполните столбец свободных членов: " << endl;
    for (i = 0; i < N; i++) {
        cout << "В[" << i+1 << "] = ";
        cin >> B [i];
    }
    cout << "\nВыберите метод решения системы (1 - Гаусс / 2 - Зейдель): "; 
    cin >> method;
    cout << endl;
    iterat(A,B,N,eps,method);
    return 0;
}
Потом создал заголовочный файл norm.h, содержащий прототипы функций, вычисляющих нормы матрицы, и iterat.h, содержащий прототип функции iterat(), которая считает количество итераций.
norm.h
C++
1
2
3
double firstNorm(double [10][10], int n, int m);
double secondNorm(double [10][10], int n, int m);
double thirdNorm(double [10][10], int n, int m);
iterat.h
C++
1
double iterat(double A[10][10], double B[10], int N, double eps, int method);
Добавим в проект третий заголовочный файл okr.h — в нем будет находиться прототип функции округления
C++
1
double okr(double X, double eps);
Добавлено через 1 минуту
Создадал еще три файла — norm.cpp, iterat.cpp и okr.cpp
norm.cpp
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
#include <cmath>
 
double firstNorm(double  A[10][10],  int n, int m)
{
    int i, j;
    double sum = 0, subSum;
    for (i = 0; i < n; i++) {
        subSum = 0;
        for (j = 0; j < m; j++) {
            subSum += abs(A[i][j]);
        }
        if(subSum > sum) {
            sum = subSum;
        }
    }
    return sum;
}
 
double secondNorm(double  A[10][10], int n, int m)
{
    int i, j;
    double sum = 0, subSum;
    for (j = 0; j < n; j++) {
        subSum = 0;
        for (i = 0; i < m; i++) {
            subSum += abs(A[i][j]);
        }
        if(subSum > sum) {
            sum = subSum;
        }
    }
    return sum;
}
 
double thirdNorm(double A[10][10], int n, int m)
{
    int i, j;
    double sum = 0;
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            sum += (A[i][j] * A[i][j]);
        }
    }
    sum = sqrt(sum);
    return sum;
}
iterat.cpp
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
#include <iostream>
#include <cmath>
#include "norm.h"
#include "okr.h"
 
using namespace std;
 
double iterat(double A[10][10], double B[10], int N, double eps, int method)
{
    if (thirdNorm(A, N, N) < 1) {
        int k = 0;
        int i, j;
        double X[10];
        double Y[10];
        double s;
        double g;
 
        for(i = 0; i < N; i++) {
            X[i] = B[i];
        }
        do {
            s = 0; k++;
            if (method != 1 && method != 2) {
                while (method != 1 && method != 2) {
                    cerr << "Неверное значение!" << endl;
                    cout << "\nВыберите метод решения системы (1 - Гаусс / 2 - Зейдель): ";
                    cin >> method;
                    cout << endl;
                }
            }
            if (method == 1) { // Решаем систему методом Гаусса.
                for (i = 0; i < N; i++) {
                    Y[i] = B[i];
                    for (j = 0; j < N; j++) {
                        Y[i] = Y[i] + A[i][j] * X[j];
                    }
                    s += (X[i] - Y[i]) * (X[i] - Y[i]);
                }
                for (i = 0; i < N; i++) {
                    X[i] = Y[i];
                }
            } else if (method == 2) { // Решаем систему методом Зейделя.
                for (i = 0; i < N; i++) {
                    g = B[i];
                    for (j = 0; j < N; j++) {
                        g = g + A[i][j] * X[j];
                    }
                    s += (X[i] - g) * (X[i] - g);
                    X[i] = g;
                }
             }
        } while (sqrt(s) >= eps * (1 - thirdNorm(A, N, N)) / thirdNorm(A, N, N));
 
        if (method == 1 || method == 2) {
            cout << "Решение системы:" << endl;
            for (i = 0; i < N; i++) {
                cout << "X" << i << " = " << okr(X[i],eps) << endl;
            }
            cout << "Число итераций: " << k-1 << endl;
            cout << "Первая норма матрицы A: " << firstNorm(A,N,N) << endl;
            cout << "Вторая норма матрицы A: " << secondNorm(A,N,N) << endl;
            cout << "Третья норма матрицы A: " << thirdNorm(A,N,N) << endl;
        }
 
    } else {
        cerr << "Условие сходимости по евклидовой метрике не выполняется!" << endl;
    }
 
    return 0;
}
okr.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cmath>
 
using namespace std;
 
double okr(double X, double eps)
{
    int i = 0;
    while (eps != 1) {
        i++;
        eps *= 10;
    }
    int okr = pow(double(10), i);
    X = int(X * okr + 0.5) / double(okr);
    return X;
}
Добавлено через 3 минуты
Но почему то не хочет решать мою матрицу(на рисунке). В чем дело?

Вернуться к обсуждению:
Метод Зейделя-Гаусса С++ C++
0
Заказать работу у эксперта

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2015, 14:04
Готовые ответы и решения:

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Метод Гаусса-Зейделя
Здравствуйте. Задание дали нормальное такое) Вообще не понимаю что хотят. Объясните пожалуйста...

Метод Гаусса-Зейделя: неверный результат
Здравствуйте. Я вот написал(точнее фрагмент взял с Википедии) программу решения СЛАУ методом...

Метод Гаусса-Зейделя для решения СЛАУ
Дана система СЛАУ, которая уже приведена к нормальному виду, то есть ничего преображать не нужно....

2
08.03.2015, 14:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2015, 14:04
Помогаю со студенческими работами здесь

Распараллелить метод Зейделя-Гаусса используя OpenMP
Сама программа вот: #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; #include...

Уравнение Лапласа методом Гаусса-зейделя
Добрый день,подскажите пожалуйста правильно ли делаю,решаю уравнение лапласа с граничными условиями...

Параллельный алгоритм, решенный методом Гаусса-Зейделя
Всем привет.;)Нашла в инете текст программы, кот. мне нужна.Написана она на С++(параллельный...

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru