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

Метод Гаусса через единичную диагональ. Что не так? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Восстановление задачи SystemRestore http://www.cyberforum.ru/cpp-beginners/thread835327.html
Пропало всё в SystemRestore(пусто,ни одной задачи)! Не создаются автоматически точки восстановления, не могу изменить задачу (период появления точек). Захожу ветку Библиотека планировщика заданий\Microsoft\Windows\SystemRestore, далее пишет "выбранная задача"{0}" больше не существует". Пункта SR нет- триггера нет. Что делать не знаю. Помогите!!!
C++ Вывести растояние от заданой точки к точке,которая делит высоту пополам Дано координаты вершин паралелограма. Вывести растояние от заданой точки к точке,которая делит высоту пополам http://www.cyberforum.ru/cpp-beginners/thread835315.html
C++ Массив: Вывести количество повторений числа "х" в столбике.
Помогите функцию переделать, я написал, вроде и верно но чуть не то. Вобщем мне нужно что бы мне вывело количество повторений числа "х" в столбике. например масив 1 2 3 х 2 2 2 3 1 2 1 2 х 3 1 1 2 3 3 3 1 2 3 3 3 1 х 1 1 1 1 х 1 1 1
C++ new выделяет больше памяти, чем задано
Здравия желаю!:) При запуске программы с кодом void main() { char *p; p=new char; cout<<strlen(p); _getch(); delete p;
C++ Символы.Вывести на экран сивол после символа а http://www.cyberforum.ru/cpp-beginners/thread835276.html
В тексте есть буква а, и она не последняя. Вывести на экран букву, следующую за ней.
C++ Access violating writing location 0x00000016 Добрый вечер! У меня код написано на С++. Когда я делая debugging мне выдает такую ошибку Как с этим справить? Спасибо подробнее

Показать сообщение отдельно
w8me
496 / 11 / 1
Регистрация: 10.04.2013
Сообщений: 44
12.04.2013, 00:18     Метод Гаусса через единичную диагональ. Что не так?
Корни 3 и 16 вы нашли тоже неверно , в Mathematica {3} и {4}. В этом методе обычно выбирают наибольший элемент в столбце и переставляют эту строку на 1ое место, потом делят, отнимают и т.д.
А так все верно , нехватает только обратного хода.
C++
1
2
3
4
5
6
7
8
9
    float x[N];
    x[N-1]=A[N-1][N];
 
    for (int k=N-2;k>=0;k--)
    {
        float sum=0;
        for (i=k+1;i<N;i++) sum+=x[i]*A[k][i];
        x[k]=A[k][N]-sum;
    }
Вот навсякий постстолбцовый Гаусс из вашего кода
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
int i, n, g, k;
    float A[N][N+1], a, b, c, d, e; // a & b - коэфф, с & d & e - для вычислений
    A[0][0]=1; A[0][1]=2; A[0][2]=11;
    A[1][0]=3; A[1][1]=4; A[1][2]=25;
    for (int k=0; k<N;k++)
    {
        float _max=fabs(A[k][k]);
        i=k;
        for (int n=k+1;n<N;n++)
        {
            if (fabs(A[n][k])>_max){i=n;
                _max=A[n][k];}
        }
        if (i!=k){
            for (int j=k; j<N+1;j++)
            {
                float dop=A[i][j];
                A[i][j]=A[k][j];
                A[k][j]=dop;
            }
        }//Главн эл в столбце и перестановка строки
            c=A[k][k];
        for (int j=0;j<N+1;j++) 
            A[k][j]/=c;//дел строки на c
        for (i=k+1;i<N;i++){
            c=A[i][k];
            for (int j=k;j<N+1;j++)
                A[i][j]-=A[k][j]*c;// отнимаем строку
        }
    }
    float x[4];
    x[N-1]=A[N-1][N];
 
    for (int k=N-2;k>=0;k--)
    {
        float sum=0;
        for (i=k+1;i<N;i++) sum+=x[i]*A[k][i];
        x[k]=A[k][N]-sum;
    }
 
    for (n=0; n<N; n++)
    {
        printf ("\n");
        for (i=0; i<N+1; i++)
            printf ("%2.3f ", A[n][i]);
    } 
    for (i=0;i<N;i++) printf("\n%f", x[i]);
 
Текущее время: 04:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru