Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 22:29, реферат
Численное решение СЛАУ – одна из наиболее часто встречающихся задач в научно-технических исследованиях. Такая задача возникает в математической физике (численное решение дифференциальных и интегральных уравнений), экономике, статистике. При этом прикладные задачи часто требуют решения больших и сверхбольших СЛАУ с числом неизвестных более 1000. К таким СЛАУ, например, приводит численное решение двумерных и особенно трехмерных задач математической физики, в которых условия физической и геометрической аппроксимации двумерной и трехмерной области диктуют использование достаточно мелкой расчетной сетки с большим числом расчетных узлов по линейному размеру.
ВВЕДЕНИЕ
3
МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ.
5
Метод верхних релаксаций
13
1.2. Вычислительные погрешности метода верхних релаксаций.
14
1.3. Метод блочной релаксации
15
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1. РАЗБОР МЕТОДА РЕЛАКСАЦИИ ПЕРЕМЕННЫХ В СИСТЕМАХ ЛИНЕЙНЫХ УРАВНЕНИЙ НА ПРИМЕРАХ.
17
17
ЗАКЛЮЧЕНИЕ
26
СПИСОК ЛИТЕРАТУРЫ
Таблица №1
Подставляем результаты вычисленные в таблице №1. Подсчитав все приращения , содержащее значение корней
Для проверки подставляем найденные значения корней в исходное уравнение; в целом система решена точно.
Рисунок 1 – Решение системы с помощью языка C++.
ТЕСТОВЫЙ ПРИМЕР №2: решить методом релаксаций систему
|
Вычисления производить с точностью до двух знаков после запятой.
РЕШЕНИЕ: Приводим систему(4) к виду, удобному для решения методом релаксации
|
Задаем начальные приближения корней нулевыми значениями
(2.3) |
Находим значения невязок
Далее, решаем
Результаты подставляем в таблицу №2
0 |
0,40 |
0 |
0,50 |
0 |
0,60 | |
0,12 |
0,06 |
0,60 |
-0,60 | |||
0,52 |
0,56 |
0 | ||||
0,06 |
0,56 |
-0,56 |
0,11 | |||
0,58 |
0 |
0,11 | ||||
0,58 |
-0,58 |
0,06 |
0,12 | |||
0 |
0,06 |
0,23 |
0,12 | |||
0,05 |
0,02 |
-0,23 | ||||
0,05 |
0,08 |
0,08 |
0 | |||
0,01 |
-0,08 |
0,02 | ||||
0,06 |
0,06 |
0 |
0,02 | |||
-0,06 |
0,01 |
0,01 | ||||
0 |
0,01 |
0,03 |
0,03 | |||
0,01 |
0 |
-0,03 | ||||
0,01 |
0,01 |
0,01 |
0 | |||
0 |
-0,01 |
0 | ||||
0,01 |
0,01 |
0 |
0 | |||
-0,01 |
0 |
0 | ||||
0 |
0 |
0 | ||||
0,65 |
0,65 |
0,86 |
||||
Таблица №2
Подставляем результаты вычисленные в таблице №2. Подсчитав все приращения , содержащее значение корней
Для проверки подставляем найденные значения корней в исходное уравнение; в целом система решена точно.
Примеры:
ЗАКЛЮЧЕНИЕ
Можно утверждать, что почти любая задача вычислительной математики сводится в конечном итоге к решению полученной некоторым образом системы линейных или тензорных алгебраических уравнений (СЛАУ).
Но такие системы уравнений могут быть, во-первых, очень большого размера, например, NxN=10000х10000, и даже более; во-вторых, система уравнений может оказаться недоопределенной; в-третьих, она может оказаться с линейно зависимыми уравнениями; в-четвертых, она может оказаться переопределённой и несовместной. Кроме того, в-пятых, вычислительная техника может иметь далеко не рекордное быстродействие и объём оперативной памяти, и заведомо конечную разрядность двоичного представления чисел и связанные с этим ненулевые вычислительные погрешности. Поэтому итерационные методы получили большое применение в решении СЛАУ. Современная вычислительная техника позволяет проводить исследование устойчивости и сходимости итерационного метода в зависимости от параметров задачи.
Наиболее эффективно метод релаксаций применяется при решении множества близких алгебраических систем линейных уравнений. На первом этапе проводится решение одной из систем с различными значениями итерационного параметра w и из анализа скорости сходимости итерационного процесса выбирается оптимальное значение этого параметра. Затем все остальные системы решаются с выбранным значением w.
Еще одно достоинство итерационного метода верхних релаксаций состоит в том, что при его реализации на ЭВМ алгоритм вычислений имеет простой вид и позволяет использовать всего один массив для неизвестного вектора.
Я научился решать систем линейных уравнений методом релаксации(ослабления) переменных, и закрепил приобретённые навыки разработкой программы на языке C++ .
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ
Листинг программы
#include <stdio.h>
#include "iostream.h"
#include <math.h>
#include <conio.h>
int maximal(int n,double R0[]);
int main(){
int i,j,n,f,k,iter;
double S,det;
cout << "Vvedite razmernost' matritci(matricta kvadratnaya)= ";
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<<"vvedite kolichestvo iteratcii:";
cin>>iter;
cout<<"vvedite rasshirenuy matrictu:\n";
for(i=0;i<n;i++){
for(j=0;j<=n;j++)
cin>>b[i][j];
}
cout<<"Podgotovka matritci k relaksatcii...\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<<"vvedite znachenia nachaln pribligenii:\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<<"\
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]<<"
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;
}
getchar();
return f;
}
1 Релаксация (relaxation) - уменьшение напряжения, ослабление (физ. процесс возвращения в состояние равновесия).
Информация о работе Релаксационный метод решения систем линейных уравнений