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

Метод простых итераций для СЛАУ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструктор http://www.cyberforum.ru/cpp-beginners/thread680656.html
Помогите написать конструкторы для класса матрицы для инициализации квадратной матрицы заданного размера с заданными компонентами; для инициализации прямоугольной матрицы заданных размеров с...
C++ Пользовательская функция О_О Ребят такое задание: необходимо вывести следующий текст на экран "Three blind mice", используя пользовательскую функцию. Ее нужно вызывать два раза в функции main() Вот мой код: #include <iostream>... http://www.cyberforum.ru/cpp-beginners/thread680649.html
Вставка элементов одной последовательности в другую так, чтобы вторая последовательность осталась невозрастающей C++
vector <int> vctavka(vector <int> posledovatelnost, vector <int> b) { for(unsigned i=0;i<=posledovatelnost.size()-1;i++) { if((posledovatelnost<=b)&&(posledovatelnost>=b)) { for(unsigned...
Нарисовать оси координат на изображении C++
Помогите, как нарисовать оси координат на изображении, по щелчку мыши, начало координат (0,0) - точка на которую нажали левой кнопкой мыши.
C++ Заполнить массив случайно буквами http://www.cyberforum.ru/cpp-beginners/thread680628.html
как заполнить массив случайно буквами c++ . Можете дать простенький пример, я бы потом как-то разобрался.
C++ Найти элемент массива, наиболее близкий к среднему значению всех элементов массива Найти элемент массива, наиболее близкий к среднему значению всех элементов массива. Найти среднее арифметические положительных и отрицательных элементов массива. И все это в динамическом массиве( ... подробнее

Показать сообщение отдельно
Большой_Стен
13 / 13 / 1
Регистрация: 22.04.2012
Сообщений: 99
26.10.2012, 12:50
Ну у Вас тут чего-то явно не хватает. Насколько я понимаю вам нужен алгоритм получения корней на текущей итерации. Ну что ж, попробую своими "словами"
C
1
2
3
4
5
6
7
for (i=0;i<n;i++)
{
  for (j=0;j<n;j++)
  tekuschee_reshenie[i]+=prediduschee_reshenie[i]*C[i][j];
  tekuschee_reshenie[i]+=D[i];
}
err=vect_norm_raznosti (tekuschee_reshenie,prediduschee_reshenie,n);
В коде C - та самая матрица с нулями по диагонали, а d - прилагающейся к ней столбец. Функция vect_norm_raznosti возвращает векторную норму, которая определяет, достигли ли мы нужной точности (также советую в этой функции сделать замену старых корней на новые или изменить условие завершения цикла while(err > eee)). Код vect_norm_raznosti может выглядеть так
C
1
2
3
4
5
6
7
8
9
10
11
double vect_norm_raznosti (double *current, double *prev, double **C, int n)
{
  int i;
  double max=-1;
  for (i=0;i<n;i++)
  {
    double tmp=fabs(current[i]-prev[i])*matr_norm(C)/(1-matr_norm(C));
    if (tmp>max) max=tmp;
  }
  return tmp;
}
Для сходимости учитываем ещё и матричную норму С.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru