Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ добыть цифру из числа https://www.cyberforum.ru/ cpp-beginners/ thread119297.html
Задано трехзначные число.Определить равен лы квадрат этого числа сумме кубов его цифр.
Симплексный метод C++
Помгите пожалуйста написать программу которая решает задачу симплексным методом по минимизации и максимизации!!
C++ Сформировать одномерный массив целых чисел.
Мужики помогите, на экзамен задали , не знаю как делать, не получается(! вот задание: Сформировать одномерный массив целых чисел. Распечатать полученный массив. Поменять местами...
C++ Массивом помогите плиз.. чет проблемы с массивом у меня) Задать два массива вещественных чисел с помощью датчика случайных чисел. Для каждого элемента первого массива найти элементы с равными значениями во... https://www.cyberforum.ru/ cpp-beginners/ thread119285.html
C++ Строки замена символов... https://www.cyberforum.ru/ cpp-beginners/ thread119247.html
Дана строка символов. Преобразовать данную строку, заменив в ней все восклицательные знаки ! точками(.), а ; каждую точку многоточием(...).
В данном словосочетании заменить символы"шина" на один символ "*" и удалить букву"е" C++
Если у кого-то есть пару мин.свободных ,помогите плиз с задачей: 1)В данном словосочетании заменить символы"шина" на один символ "*" и удалить букву"е" 2)Строки м-цы расположитьв порядке...
C++ Написать функцию, которая удаляет из строки s1 все символы, встречающиеся в строке s2
Народ, очень требуется помощь : :wall: № 1. Написать и протестировать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы, встречающиеся в строке s2. № 2. Написать и протестировать...
C++ Отредактировать текст так, чтобы между словами был ровно один пробел :wall:Люди, плз помогите с задачами : № 1. Даны две символьные строки, состоящие только из цифр (длина каждой - более 10 символов). Считая, что в этих строках находятся очень длинные целые числа,... https://www.cyberforum.ru/ cpp-beginners/ thread119237.html
C++ СЛАУ методом Гаусса (ведущий элемент отыскивается среди строк и столбцов) https://www.cyberforum.ru/ cpp-beginners/ thread119232.html
Привет, всем! Помогите пожалуйста. Вот собственно, задача: Разрабоать программу для численного решения СЛАУ методом Гаусса, где ведущий элемент отыскивается СРЕДИ (в теме опечатка) строк и...
C++ Вычисление функции Задача1.Линейные вычислительные процессы. Задание. Разработать алгоритм и составить по нему программу для вычисления значений функции z = f(x,y). Область определения функции не учитывать.(рис 1) ... https://www.cyberforum.ru/ cpp-beginners/ thread119230.html
Ролли
0

Решение системы уравнений методом Зейделя

19.04.2010, 23:14. Просмотров 1520. Ответов 0
Метки (Все метки)

Ребята, есть такая проблема, есть код который решает сис-му уравнений методом Зейделя, но при вводе отрицательных значений выдается какой-то странный результат, скажите. что не так?
Код


#include <stdio.h>
#include <math.h>
#define N    3
#define M    300
double A[N][N]={{4,1,-5},{3,4,2},{1,5,5}};
double B[N]={11,1,-10};
double X[N],S;
float Tolerance;
int i,j;
bool Seidel(void)
{
    double Y[N];
    int i,j,l;
    double copy;
    bool Tolerance_stop_flag;
    int k=0;
    bool Iteration_stop_flag=false;
    for(i=0;i<N;i++)
    {
        Y[i]=0;X[i]=0;
    }
    do
    {
        k++;
        for(i=0;i<N;i++)
        {
            if(!A[i][i])
            {
                l=i;
                do
                {
                    l++;
                    if((!A[l][i])&&(l==N-1))
                    {
                        printf("Ошибка приведения системы для %d-го уравнения\n",i);
                        return false;
                    }
                }while(!A[l][i]);
                copy=B[i];
                B[i]=B[l];
                B[l]=copy;
                for(j=0;j<N;j++)
                {
                    copy=A[i][j];
                    A[i][j]=A[l][j];
                    A[l][j]=copy;
                }
                printf("%d-ое и %d-ое ур-ия системы переставлены\n",i,l);
            }
            S=0;
            for(j=0;j<N;j++)if(j!=i)S+=A[i][j]*X[j];
            X[i]=(B[i]-S)/A[i][i];
        }
        i=0;
        Tolerance_stop_flag=false;
        do
        {
            if(fabs(X[i]-Y[i])>Tolerance)
                Tolerance_stop_flag=true;
            else i++;
        }while(!((i==N-1)||(Tolerance_stop_flag)));
        if(!Tolerance_stop_flag)
        {
            Iteration_stop_flag=true;
            printf("Число итераций: %d\n",k);
        }else 
            for(i=0;i<N;i++)Y[i]=X[i];
    }while(!((k==M)||(Iteration_stop_flag)));
    if(!Iteration_stop_flag)
        printf("Достигнуто заданное число итераций! %d\n",M);
    return true;
}
void main (void)
{
    printf("Метод Зейделя\n");
    printf("A                B\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)printf("%d  ",(int)A[i][j]);
        printf("            %d\n",(int)B[i]);
    }
    do{
        printf("Допустимая точность решения? ");
        scanf("%f",&Tolerance);
    }while(!((Tolerance>0)&&(Tolerance<1)));
    if(Seidel())
    {
        printf("Вектор решения X        Вектор невязок B-AX\n");
        for(i=0;i<N;i++)
        {
            S=0;
            for(j=0;j<N;j++)S+=A[i][j]*X[j];
            printf("%f            %f\n",X[i],(B[i]-S));
        }
    }
    getchar();getchar();
}


Вернуться к обсуждению:
Решение системы уравнений методом Зейделя
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2010, 23:14
Готовые ответы и решения:

Решение системы уравнений методом Гаусса
Всем доброго времени суток. Нужно написать программу для решения СЛАУ методом Гаусса. #include...

Решение системы уравнений методом итераций
Всем Привет! Метод итерация. У меня ответы не совпадает. помогите пожалуйста где я ошибся...

Решение системы уравнений методом Гауса
Вот, ради интереса попробовал написать программу (С++). Сейчас она работает, но выполняет лишь...

Решение системы дифференциальных уравнений методом Эйлера
В интернете нашел похожий код, но для 1 уравнения, может кто помочь сделать для 2? Тоесть для...

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