Автор: Пользователь скрыл имя, 23 Декабря 2010 в 19:32, лабораторная работа
Представить реализацию метода простой итерации для решения систем линейных алгебраических уравнений. 
Запишем исходную  систему уравнений в векторно-матричном  виде: Ax=F.
1.Постанoвка  задачи №1, метод решения.
2.Постановка  задачи №2, метод решения.
3. Реализация  на языке С++ задачи №1.
4. Реализация  на языке С++ задачи №2.
5. Реализация  на языке Fortran задачи №1.
6. Реализация  на языке Fortran задачи №2.
7. Реализация  в Matlab задачи №1.
8. Реализация  в Matlab задачи №2.
9. Вывод.
10.Список литературы.
Нижегородский Технический Университет
Институт 
Радиотехники и Информационных Технологий 
 
Кафедра 
«Прикладная Математика 
и Информатика» 
 
 
 
 
 
 
 
 
 
 
Отчёт по лабораторной работе №2
Тема: 
«Решение систем линейных 
алгебраических уравнений» 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Выполнила: Волынкина В.М.
                              
                              
 
 
 
 
 
 
 
 
 
 
 
 
 
Нижний Новгород
2008 
 
Содержание. 
1.Постанoвка задачи №1, метод решения.
2.Постановка задачи №2, метод решения.
3. Реализация на языке С++ задачи №1.
4. Реализация на языке С++ задачи №2.
5. Реализация на языке Fortran задачи №1.
6. Реализация на языке Fortran задачи №2.
7. Реализация в Matlab задачи №1.
8. Реализация в Matlab задачи №2.
9. Вывод.
10.Список литературы. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1.Постановка 
задачи №1. Метод 
решения. 
Представить реализацию 
метода простой итерации для решения систем 
линейных алгебраических уравнений. 
 Запишем исходную 
систему уравнений в векторно-
Пусть Е - заданное приближение.
Матрицу А всегда 
можно привести к виду, когда на 
диагонали находятся 
Приведение матрицы 
А  происходит путём нахождения в 
строке максимального элемента и 
перестановки этой строки на место 
той строки, номер которой совпадает 
с номером столбца 
Затем из каждого уравнения выражаем хi :
Чтобы запустить итерационный процесс, необходимо задать начальные приближения значений неизвестных: хi(0)=0.
Затем подставим нулевые значения переменных в правые части уравнений. Получим некоторые значения переменных хi: Будем рассматривать их в качестве следующего (первого) приближения хi(1).
Проверим, удовлетворяют ли заданной точности получившиеся значения. Найдём модули разности получившегося приближения и начального: !х(1)-х(0)! Если значения модулей больше заданного приближения, продолжаем итерационный процесс.
На следующем шаге подставляем в правые части формул х(1) приближения, получаем значения х(2) приближений, проверяем модули разности и т.д.
Итерационный 
процесс продолжается до тех пор, 
пока все значения х i(k) не станут близкими 
к xi(k+1), т.е. пока модули разности не станут 
меньше заданного приближения: !х(к+1)-х(к)!<Е. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.Постановка 
задачи №2. Метод 
решения. 
Представить реализацию 
метода Зейделя для решения систем 
линейных алгебраических уравнений. 
 Запишем исходную 
систему уравнений в векторно-
Пусть Е - заданное приближение.
Приводим матрицу А к виду, когда на диагонали находятся максимальные значения.
(как в методе простой итерации).
Затем из каждого уравнения выражаем хi :
Чтобы запустить итерационный процесс, необходимо задать начальные приближения значений неизвестных: хi(0)=0.
 Затем подставим 
нулевые значения переменных 
в правую часть первого 
Получившиеся значения переменных будем рассматривать как следующие приближения.
После каждого 
итерационного шага делаем проверку 
по принципу, описанному в методе простой 
итерации. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3. 
Реализация на 
языке С++ задачи 
№1. 
#include <iostream>
using namespace std;
int main()
{
int c=0,n,p,z;
float l=0,t=0,E,max,r;
cout<<"kol-vo perem=";
cin>>n;
cout<<n<<endl;
float A[n][n],F[n], x[n],y[n],q[n];
for (int i=0; i<n; i++)
{
for (int j=0;j<n;j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}
}
for (int i=0;i<n;i++)
{
cout<<"F["<<i<<"]=";
cin>>F[i];
}
cout<<"priblijenie=";
cin>>E;
cout<<E<<endl;
//---------------privedenie 
matrici-----------------------
for (int i=0;i<n;i++)
{ max=A[i][0];
for (int j=0;j<n;j++)
{
if (max<A[i][j]) {max=A[i][j];p=i,z=j;}
}
if (p!=z) {for (int j=0;j<n;j++) {
q[j]=A[z][j];
A[z][j]=A[p][j];
A[p][j]=q[j];
}
}
}
for (int i=0; i<n; i++)
{
for (int j=0;j<n;j++)
{
      
cout<<"A["<<i<<"]["<<j<<"]="<<
}
}
cout<<"privedena"<<endl;
//----------------------------
for (int i=0;i<n;i++)                  
{
x[i]=F[i]/A[i][i];
      cout<<"x["<<i<<"]="<<x[
}
for (int i=0;i<n;i++) {
if (x[i]<E) {c=c+1;}
}
if (c==n) {goto END;}
else c=0;
goto V;
V: for (int i=0;i<n;i++) {y[i]=x[i];}
   for (int i=0;i<n;i++)  
{
l=0; t=0;
for (int j=0;j<i;j++)
{
if(j<i) {l=l+A[i][j]*y[j];}
}
for (int k=i+1;k<n;k++)
{
if(k<n) {t=t+A[i][k]*y[k];}
}
x[i]=(F[i]-l-t)/A[i][i];
cout<<"x["<<i<<"]="<<x[i];
}
cout<<endl;
for (int i=0;i<n;i++)
{
r=x[i]-y[i];
if(r<0){r=-r;}
if (r<E){c=c+1;}
}
if (c==n) {goto END;}
else {c=0;
goto V;}
END: cout<<"Zadacha reshena!"<<endl;
return 0;
} 
 
4. Реализация на языке С++ задачи №2.
#include <iostream>
using namespace std;
int main()
{
int c=0,n,p,z;
float l=0,t=0,E,max,r;
cout<<"kol-vo perem=";
cin>>n;
cout<<n<<endl;
float A[n][n],F[n], x[n],y[n],q[n];
for (int i=0; i<n; i++)
{
for (int j=0;j<n;j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>A[i][j];
}
}
for (int i=0;i<n;i++)
{
cout<<"F["<<i<<"]=";
cin>>F[i];
}
cout<<"priblijenie=";
cin>>E;
cout<<E<<endl;
cout<<"OK!"<<endl;
//----------------------------
for (int i=0;i<n;i++)
{
max=A[i][0];
for (int j=0;j<n;j++)
{
if (max<A[i][j]) {max=A[i][j];p=i,z=j;}
}
if (p!=z) {for (int j=0;j<n;j++) {
                        q[j]=
                        A[z][
                        A[p][
}
}
}
for (int i=0; i<n; i++)
{
for (int j=0;j<n;j++)
{
      
 cout<<"A["<<i<<"]["<<j<<"]="<
}
}
cout<<"privedena"<<endl;
//----------------------------
V: for (int i=0;i<n;i++)
{
y[i]=x[i];
}
for (int i=0;i<n;i++)
{
l=0;
t=0;
for (int j=0;j<i;j++)
{
                  if(j<i){l=l+
}
for (int k=i+1;k<n;k++)
{
if(k<n) {t=t+A[i][k]*x[k];}
}
Информация о работе Решение систем линейных алгебраических уравнений