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

Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.04.2014, 20:12     Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов #1

Нужно написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов.

СЛАУ выглядит так:

http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases}{a}_{11}{x}_{1}+{a}_{12}{x}_{2}+...+{a}_{1n}{x}_{n}={b}_{1} \\ {a}_{21}{x}_{1}+{a}_{22}{x}_{2}+...+{a}_{2n}{x}_{n}={b}_{2}  \\ .........................................................\\ {a}_{n1}{x}_{1}+{a}_{n2}{x}_{2}+...+{a}_{nn}{x}_{n}={b}_{n} \end{cases}

или в векторной форме:
AX=B
с каждого уравнения вычисляем http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{i}(i=1...n) и получаем:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{i}=\frac{1}{{a}_{11}}({b}_{1}-{a}_{12}{x}_{2}-{a}_{13}{x}_{3}-...-{a}_{1n}{x}_{n})

или в векторной форме:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\bar{X}=F(\bar{X})

для которого можно использовать метод простой итерации. Метод заключается в том, что в правую часть подставляем какие то значения http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{i}(i=1...n), получаем новые значения, какие опять подставляем в правую часть и т. д. То есть, на каждой итерации имеем предыдущие значения неизвестных http://www.cyberforum.ru/cgi-bin/latex.cgi?{xp}_{i}(i=1...n), какие подставляем в правую часть схемы и новые значения http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{i}(i=1...n), какие получаем в левой части.

Вычислительную схему можно записать:
http://www.cyberforum.ru/cgi-bin/latex.cgi?x[i]=(b[i]-\sum_{j=1,j\neq i}^{n}(a[i][j]*xp[j]))/a[i][i], i=1...n

Начальное значение неизвестных можно вычислить:
xp[i]=b[i]/a[i][i]

после каждой итерации значение некоторого неизвестного меняется на величину:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{delta}_{i}=\left| x[i]-xp[i]\right|
Вычисления можно остановить когда максимальная поправка
http://www.cyberforum.ru/cgi-bin/latex.cgi?prop={max}_{i}({delta}_{i})
будет меньше заданной точности http://www.cyberforum.ru/cgi-bin/latex.cgi?eps
По окончании итерации, вычисление всех новых значений http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{i}, вычисление максимальной поправки http://www.cyberforum.ru/cgi-bin/latex.cgi?prop нужно переписать массив http://www.cyberforum.ru/cgi-bin/latex.cgi?x к массиву http://www.cyberforum.ru/cgi-bin/latex.cgi?xp.

Необходимым (но не достаточным) условием сходимости метода есть выполнения условия:

http://www.cyberforum.ru/cgi-bin/latex.cgi?\left|{a}_{ii} \right|>\left|\sum_{j=1,j\neq i}^{n}   {a}_{ij} \right|

Матрицу коэффициентов уравнения A, векторы В, Х, ХР реализуются как динамичные массивы.

п.с. помогите с программой (желательно с комментариями), заранее спс=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 20:12     Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов
Посмотрите здесь:

Решить нелинейное уравнение методом хорд и методом простой итерации C++
C++ Помогите написать программу для решения слау методом Гаусса
C++ Составить программу нахождения корней нелинейного уравнения методом простой итерации с точностью вычисления E
Вылет программы для вычисления СЛАУ методом Жордана-Гаусса при исполнении C++
C++ Решение нелинейных уравнений методом простой итерации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 00:03     Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов
Еще ссылки по теме:

C++ Решение нелинейных уравнений методом простой итерации
Уточнение корня методом простой итерации C++
C++ Решение уравнения методом простой итерации

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

Или воспользуйтесь поиском по форуму:
aiwprton805
 Аватар для aiwprton805
64 / 64 / 23
Регистрация: 30.03.2013
Сообщений: 178
Завершенные тесты: 1
22.04.2014, 00:03     Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов #21
Цитата Сообщение от andreyananas Посмотреть сообщение
как пропустить все следующие вычисления и вернутся в начало программы?
C++
1
2
3
4
5
6
7
8
9
int flag = 1;
while(flag)
{
    flag = 0;
    // начало программы
    //...
    // если условие сходимости не выполняется, то 
    flag = 1;
}
или
C++
1
2
3
4
5
6
7
while(1)
{
    // начало программы
    //...
    // если условие сходимости выполняется, то 
    break;
}
Цитата Сообщение от andreyananas Посмотреть сообщение
Приведите пример матрицы
http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{pmatrix}10 & 0 & 5 & 3\\ 1 & 13 & -3 & -3\\ 12 & -12 & -50 & 0\\ 4 & 5 & 6 & 15\end{pmatrix}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
22.04.2014, 00:03     Написать программу для вычисления СЛАУ методом простой итерации с использованием динамических массивов
Ответ Создать тему
Опции темы

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