Xreferat.com » Рефераты по математике » Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ

height="21" align="BOTTOM" border="0" /> разбивается на квадратные блоки равной размерности). Вектор правой части и вектор неизвестных разбиваются на блок-векторы соответствующей размерности. Например, для размера блока равного двум, получаем:


Метод релаксации переменных решения СЛАУ


(1.49)



где


Метод релаксации переменных решения СЛАУ

(1.50)

Метод релаксации переменных решения СЛАУ

(1.51)

Метод релаксации переменных решения СЛАУМетод релаксации переменных решения СЛАУ

(1.52)

Запишем формулу для блоков матрицы Метод релаксации переменных решения СЛАУ и блок-векторов Метод релаксации переменных решения СЛАУ и Метод релаксации переменных решения СЛАУ:


Метод релаксации переменных решения СЛАУ

(1.53)

Обозначим


Метод релаксации переменных решения СЛАУ

(1.54)

Метод релаксации переменных решения СЛАУ

(1.55)

Тогда, подставляя (1.54) и (1.55) в (1.53) и умножая слева на Метод релаксации переменных решения СЛАУ, для каждого блок-вектора Метод релаксации переменных решения СЛАУ получаем СЛАУ:


Метод релаксации переменных решения СЛАУ

(1.56)

Решение полученных систем (1.56) рекомендуется выполнять с использованием факторизации матрицы Метод релаксации переменных решения СЛАУ, причём факторизацию следует выполнять 1 раз перед первой итерацией.

2. РАЗБОР МЕТОДА РЕЛАКСАЦИЙ В СИСТЕМАХ ЛИНЕЙНЫХ УРАВНЕНИЙ НА ПРИМЕРЕ


ПРИМЕР: решить методом релаксаций данную систему


Метод релаксации переменных решения СЛАУ


(2.1)


Вычисления производить с точностью до двух знаков после запятой.

РЕШЕНИЕ: Приводим систему(4) к виду, удобному для решения методом релаксации


Метод релаксации переменных решения СЛАУ


(2.2)


Задаем начальные приближения корней нулевыми значениями


Метод релаксации переменных решения СЛАУ

(2.3)

Находим значения невязок

Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ



Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ

Метод релаксации переменных решения СЛАУ


0 0,60 0 0,70 0 0,80


0,16
0,16
-0,80


0,76
0,86
0


0,17 0,86 -0,86
0,09


0,93
0
0,09

0,93 -0,93
0,09
0,09


0
0,09 0,18 0,18


0,04
0,04
-0,18


0,04 0,13 0,13
0


0,03
-0,13
0,01

0,07 0,07
0
0,01


-0,07
0,01
0,01


0
0,01 0,02 0,02


0
0
-0,02


0





0 0,01 0,01
0


0
-0,01
0


0
0
0

Метод релаксации переменных решения СЛАУ

1,00
1,00
1,00

Далее, решаем

Метод релаксации переменных решения СЛАУ

И так далее. Подставляем результаты вычисленные в таблице. Подсчитав все приращения Метод релаксации переменных решения СЛАУ, содержащее значение корней Метод релаксации переменных решения СЛАУ

Для проверки подставляем найденные значения корней в исходное уравнение; в целом система решена точно.

Метод релаксации переменных решения СЛАУ

Рисунок 1 – Решение системы с помощью языка Borland C++


Листинг программы решающий систему методом релаксаций переменных приведен в приложении.

ЗАКЛЮЧЕНИЕ


Можно утверждать, что почти любая задача вычислительной математики сводится в конечном итоге к решению полученной некоторым образом системы линейных или тензорных алгебраических уравнений (СЛАУ).

Но такие системы уравнений могут быть, во-первых, очень большого размера, например, NxN=10000х10000, и даже более; во-вторых, система уравнений может оказаться недоопределенной; в-третьих, она может оказаться с линейно зависимыми уравнениями; в-четвертых, она может оказаться переопределённой и несовместной. Кроме того, в-пятых, вычислительная техника может иметь далеко не рекордное быстродействие и объём оперативной памяти, и заведомо конечную разрядность двоичного представления чисел и связанные с этим ненулевые вычислительные погрешности. Поэтому итерационные методы получили большое применение в решении СЛАУ. Современная вычислительная техника позволяет проводить исследование устойчивости и сходимости итерационного метода в зависимости от параметров задачи.

Наиболее эффективно метод релаксаций применяется при решении множества близких алгебраических систем линейных уравнений. На первом этапе проводится решение одной из систем с различными значениями итерационного параметра w и из анализа скорости сходимости итерационного процесса выбирается оптимальное значение этого параметра. Затем все остальные системы решаются с выбранным значением w.

Еще одно достоинство итерационного метода верхних релаксаций состоит в том, что при его реализации на ЭВМ алгоритм вычислений имеет простой вид и позволяет использовать всего один массив для неизвестного вектора.

Я научился решать систем линейных уравнений методом релаксации(ослабления) переменных, и закрепил приобретённые навыки разработкой программы на языке Borland C++ 4.5.

СПИСОК ЛИТЕРАТУРЫ


Воеводин В.В. «Вычислительные основы линейной алгебры». Москва «Наука», 1977.

Фаддеев Д.К., Фаддеева В.Н. «Вычислительные методы линейной алгебры». Москва «Физматгиз», 1963.

Самарский А.А., Гулин А.В.» Численные методы». Москва «Наука», 1989.

Самарский А.А., Николаев Е.С. «Методы решения сеточных уравнений». Москва «Наука», 1978.

Самарский А.А. «Введение в численные методы». Москва «Наука», 1987.

Стренг Г. «Линейная алгебра и ее применение». Москва «Мир», 1980.

Карманов В.Г. «Математическое программирование». Москва «Наука», 1989.

Алексеев Е.Р. «Программирование на С++». Москва «НТ Пресс», 2007.

exponenta/ - сайт посвящен решению математических задач в прикладных программных пакетах.

Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. - М.: Наука, 1987.- 600 с.

ПРИЛОЖЕНИЕ


Листинг программы

#include<iostream.h>

#include<math.h>

int maximal(int n,double R0[]);

void main(){

int i,j,n,f,k,iter;

double S,det;

cout<<"Введите размерность матрицы(матрица должна быть квадратной)= ";cin>>n;

double *x=new double [n];

double **b=new double *[n];

for(i=0;i<n;i++)

b[i]=new double[n+1];

double **a=new double *[n];

for(i=0;i<n;i++)

a[i]=new double[n+1];

cout<<"Введите количество итераций:";

cin>>iter;

cout<<"Введите расширенную матрицу:n";

for(i=0;i<n;i++){

for(j=0;j<=n;j++)

cin>>b[i][j];

}

cout<<"Подготавливаю матрицу к релаксации...n";

for(i=0;i<n;i++){

for(j=0;j<n;j++)

a[i][j]=-b[i][j]/b[i][i];

a[i][n]=b[i][n]/b[i][i];

}

for(i=0;i<n;i++){

for(j=0;j<n+1;j++)

cout<<" "<<a[i][j]<<" || ";

cout<<"n";

}

double *x0=new double [n];

for(i=0;i<n;i++)

x[i]=0.0;

double *R0=new double [n];

cout<<"Введите значения начальных приближений:n";

for(i=0;i<n;i++)

cin>>x0[i];

S=0.0;

for(i=0;i<n;i++){

for(j=0;j<n;j++)

S=S+a[i][j]*x0[i];

}

for(i=0;i<n;i++){

R0[i]=a[i][n]-x0[i]+S;

cout<<"R("<<i<<")="<<R0[i]<<" | ";

}

f=maximal(n,R0);

det=R0[f];

for(k=0;k<iter;k++){

cout<<"det{"<<k<<"}="<<det<<"n";

for(i=0;i<n;i++){

if(i!=f) R0[i]=R0[i]+a[i][f]*det;

else R0[i]=R0[i]-det;

}

for(i=0;i<n;i++)

cout<<"R["<<i+1<<"]="<<R0[i]<<" ";

x[f]=x[f]+det;

f=maximal(n,R0);

det=R0[f];

}

cout<<"n";

for(i=0;i<n;i++)

cout<<"X{"<<i+1<<"}="<<x[i]<<"n";

delete []x;

delete []R0;

delete []x0;

delete []a;

}

int maximal(int n, double R0[]){

int i,f;

f=0.0;

for(i=0;i<n-1;i++){

if(R0[i+1]>R0[i]) f=i+1;

}

return f;

}


Размещено на

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: