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

Реализовать метод Гаусса функцией - C++

Восстановить пароль Регистрация
 
htx
-169 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 126
18.02.2014, 00:39     Реализовать метод Гаусса функцией #1
нужно реализовать метод Гаусса функцией. прошу помогите ,может у кого-то есть какие-нибудь работы, пожалуйста помогите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 00:39     Реализовать метод Гаусса функцией
Посмотрите здесь:

Метод Гаусса!!! C++
метод Гаусса C++
метод Гаусса C++
метод гаусса C++
C++ Метод Гаусса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,788
18.02.2014, 08:57     Реализовать метод Гаусса функцией #2
htx, вам поможет поиск по форуму
stikkas
 Аватар для stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
18.02.2014, 12:07     Реализовать метод Гаусса функцией #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
#include <cstdlib>
#include <iostream>
#include <sstream>
using namespace std;
 
template <class T>
bool getnumber(const char * msg, T &val) {
    cout << msg;
    if(!(cin >> val) || cin.get() != '\n') {
        cin.clear();
        cin.sync();
        return false;
    }
    return true;
}
 
void want_to_quit() {
    cout << "Не правильное значение. Хотите прекратить работу?(y/n) ";
    char ans;
    cin >> ans;
    if (ans == 'y' || ans == 'Y')
        exit(EXIT_FAILURE);
    cin.clear();
    cin.sync();
}
 
double* gauss(double **arr, int rows);
 
int main() {
    int eqcount;
    while (!getnumber("Сколько уравнение будем решать? ", eqcount)){
        want_to_quit();
    }
 
    double **koeficients = new double*[eqcount];
    ostringstream os;
    for (int i = 0; i < eqcount; ++i) {
        koeficients[i] = new double[eqcount + 1];
        for (int j = 0; j < eqcount + 1; ++j) {
            os << "Введите коэффициент #" <<  j + 1 << " уравнения #" << i + 1 << ": ";
            while (!getnumber(os.str().c_str(), koeficients[i][j])){
                want_to_quit();
            }
            os.str("");
        }
    }
 
    double *result = gauss(koeficients, eqcount);
    cout << "Results:\n";
    for (int i = 0; i < eqcount; ++i) {
        cout << result[i] << " ";
    }
    cout << endl;
    delete [] result;
    for (int i = 0; i < eqcount; ++i) {
        delete [] koeficients[i];
    }
    delete [] koeficients;
    return 0;
}
 
double* gauss(double **arr, int rows) {
    double *result = new double[rows];
    for (int k = 1; k < rows; ++k) {
        for (int j = k; j < rows; ++j) {
            double m = arr[j][k-1]/arr[k-1][k-1];
            for (int i = 0; i <= rows; ++i) {
                arr[j][i] = arr[j][i] - m * arr[k-1][i];
            }
        }
    }
 
    for (int i = rows - 1; i >= 0; --i) {
        result[i] = arr[i][rows] / arr[i][i];
        if (i != (rows - 1)) {
            result[i] -= arr[i][i+1] * result[i+1] / arr[i][i];
        }
    }
    return result;
}
функцию gauss надо пересмотреть, т.к. она не правильные ответы выдает для системы больше двух уравнений
htx
-169 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 126
19.02.2014, 22:58  [ТС]     Реализовать метод Гаусса функцией #4
up!

Добавлено через 1 минуту
пожалуйста очень нужно...

Добавлено через 5 часов 42 минуты
пожалуйста помогите,четыре дня сижу,не могу вникнуть.

Добавлено через 1 час 28 минут
up!
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,788
20.02.2014, 09:44     Реализовать метод Гаусса функцией #5
htx, странно, что вы не воспользовались моим советом.
Методом Гаусса решить систему n линейных алгебраических уравнений
Yandex
Объявления
20.02.2014, 09:44     Реализовать метод Гаусса функцией
Ответ Создать тему
Опции темы

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