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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sampti
Сообщений: n/a
#1

Метод Зейделя. С++ - C++

23.10.2013, 19:33. Просмотров 233. Ответов 0
Метки нет (Все метки)

Доброго времени суток. помогите, пожалуйста, дополнить этот код (метод гаусса) методом зейделя. знаю, что тем было много по этому поводу, но я не смог сам додуматься
p.s.: не понимаю ещё, как использовать точность в методе гаусса, если подскажите - буду очень благодарен. Точность 0,0001

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
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
144
145
146
147
148
149
150
151
152
#include <stdio.h>
#include <process.h>
#include <iostream>
float **a, *b, *x;
int N;
using namespace std;
 
void freematrix()
{
    int i;
    for (i = 0; i < N; i++)
    {
        delete [] a[i];
    }
    delete [] a;
    delete [] b;
    delete [] x;
}
 
void allocmatrix() //allocate memory for matrixes
{
    int i, j;
    x = new float[N];
    b = new float[N];
    a = new float*[N];
 
    for (i = 0; i < N; i++)
    {
        a[i] = new float[N];
 
    }
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            a[i][j] = 0;
        }
        b[i] = 0;
        x[i] = 0;
    }
}
 
void readmatrix()//read matrixes a and b from input data
{
    int i, j;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            cin >> a[i][j];
        }
        cin >> b[i];
    }
}
 
void printmatrix()//print matrix "a"
{
    int i, j;
    cout << endl;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            printf(" %+f*X%d", a[i][j], j);
        }
        printf(" =%f\n", b[i]);
    }
}
 
void printresult()
{
    int i;
    printf("\n");
    printf("Result\n");
    for (i = 0; i < N; i++)
    {
        printf("X%d = %f\n", i, x[i]);
    }
}
 
void diagonal()
{
    int i, j, k;
    float temp = 0;
    for (i = 0; i < N; i++)
    {
        if (a[i][i] == 0)
        {
            for (j = 0; j < N; j++)
            {
                if (j == i) continue;
                if (a[j][i] != 0 && a[i][j] != 0)
                {
                    for (k = 0; k < N; k++)
                    {
                        temp = a[j][k];
                        a[j][k] = a[i][k];
                        a[i][k] = temp;
                    }
                    temp = b[j];
                    b[j] = b[i];
                    b[i] = temp;
                    break;
                }
            }
        }
    }
}
void main()
{
    int i = 0, j = 0, k = 0;
    printf("\Enter the number of equations:  ");
    cin >> N;
    allocmatrix();
    //read data
    printf("\nSolving Linear Systems\n");
    printf("\nenter the elements line by line separating by a space, e.g.:\n");
    printf("\na11 a12...a1n b1\n");
    printf("\na21 a22...a2n b2\n");
    printf("\n................\n");
    printf("\nan1 an2...ann bn\n");
    printf("\nEnter the elements:\n");
    readmatrix();
    diagonal();
    printmatrix();
    //process rows
    for (k = 0; k < N; k++)
    {
        for (i = k + 1; i < N; i++)
        {
            float M = a[i][k] / a[k][k];
            for (j = k; j < N; j++)
            {
                a[i][j] -= M * a[k][j];
            }
            b[i] -= M*b[k];
        }
    }
    printmatrix();
    for (i = N - 1; i >= 0; i--)
    {
        float s = 0;
        for (j = i; j < N; j++)
        {
            s = s + a[i][j] * x[j];
        }
        x[i] = (b[i] - s) / a[i][i];
    }
    printresult();//print the result
    system("pause");//Pause
    freematrix();//Clear
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 19:33     Метод Зейделя. С++
Посмотрите здесь:

метод Зейделя. c++ - C++
В цикле do while есть ошибка, из-за неё программа не правильно считает Xold и Xnew. Помогите, пожалуйста, найти ошибку... #pragma once ...

Метод Зейделя - C++
ошибка найдена. тема закрыта

Метод Зейделя - C++
решить систему нелинейных уравнений Методом зейделя:

Метод Зейделя - C++
Ребята, каждый из вас уже делал лабы по матрицам. Если у кого-то есть готовая лаба по методу Зейделя, прошу, напишите ее тут и желательно с...

Метод Зейделя: - C++
Здравствуйте, у меня получается на данный момент X1 := -8.32587e+307 X2 := -inf X3 := inf я скопировал сам метод зейделя с...

метод Зейделя - C++
Ребят помогите пожалуйста, а то зачот простаивает)Нужна программка реализующая метод Зейделя(или Зейзеля препод так написал что...

Метод Зейделя - C++
Я написал прогу по методу Зейделя, так вот при матрице 3х3 выдает после 7 итерации правильный ответ) а при матрице 4х4 уже на второй...

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

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

Метод Зейделя-Гаусса С++ - C++
Для написания программы, решающей систему линейных уравнения методом итерации или Зейделя, использовалась среда разработки Visual Studio...

СЛАУ метод Зейделя - C++
Решить СЛАР методом Зейделя вида АХ=В с точностью до 0,0001. Пример на рисунке ниже что не могу не как реализовать нормально. Точнее...

Ошибка в коде.Метод зейделя - C++
Соственно проблема в том, что она работает где-то до окончания do вылетает с ошибкой, если кто-то видит где ошибка напишите пожалуйста ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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