Мегаобучалка Главная | О нас | Обратная связь


Постановка задачи №2. Метод решения.



2019-12-29 144 Обсуждений (0)
Постановка задачи №2. Метод решения. 0.00 из 5.00 0 оценок




Кафедра «Прикладная Математика и Информатика»

Отчёт по лабораторной работе №2

Тема: «Решение систем линейных алгебраических уравнений»

Выполнила: Волынкина В.М.

                                                                                                                   группа 04-ПМ

                                                                                          Проверила: Катаева Л.Ю.

Нижний Новгород

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. Метод решения.

 

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

 

 Запишем исходную систему уравнений в векторно-матричном виде: Ax=F.

Пусть Е - заданное приближение.

Матрицу А всегда можно привести к виду, когда на диагонали находятся максимальные значения. Только в этом случае итерационный метод применяют.

Приведение матрицы А происходит путём нахождения в строке максимального элемента и перестановки этой строки на место той строки, номер которой совпадает с номером столбца максимального элемента.

Затем из каждого уравнения выражаем хi : 

Чтобы запустить итерационный процесс, необходимо задать начальные приближения значений неизвестных: хi(0)=0.

Затем подставим нулевые значения переменных в правые части уравнений. Получим некоторые значения переменных хi: Будем рассматривать их в качестве следующего (первого) приближения хi(1).

Проверим, удовлетворяют ли заданной точности получившиеся значения. Найдём модули разности получившегося приближения и начального: !х(1)-х(0)! Если значения модулей больше заданного приближения, продолжаем итерационный процесс.

На следующем шаге подставляем в правые части формул х(1) приближения, получаем значения х(2) приближений, проверяем модули разности и т.д.

Итерационный процесс продолжается до тех пор, пока все значения х i(k) не станут близкими к xi(k+1), т.е. пока модули разности не станут меньше заданного приближения: !х(к+1)-х(к)!<Е.

 

 

Постановка задачи №2. Метод решения.

 

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

 

 Запишем исходную систему уравнений в векторно-матричном виде: Ax=F.

Пусть Е - заданное приближение.

Приводим матрицу А к виду, когда на диагонали находятся максимальные значения.

(как в методе простой итерации). 

Затем из каждого уравнения выражаем хi : 

Чтобы запустить итерационный процесс, необходимо задать начальные приближения значений неизвестных: хi(0)=0.

 Затем подставим нулевые значения переменных в правую часть первого уравнения, т.е. в формулу для х1. В следующие формулы для хi будем подставлять значения переменных, найденные на этом же шаге. Например: формула

Получившиеся значения переменных будем рассматривать как следующие приближения.

После каждого итерационного шага делаем проверку по принципу, описанному в методе простой итерации.

 

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<<"]="<<A[i][j]<<" ";

}

}

cout<<"privedena"<<endl;

//------------------------------------------------------------

for (int i=0;i<n;i++)                      //1 shag

{

       x[i]=F[i]/A[i][i];

       cout<<"x["<<i<<"]="<<x[i]<<endl;

}    

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][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<<"]="<<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+A[i][j]*x[j];}        

                   }

                   for (int k=i+1;k<n;k++)

                   {

                              if(k<n) {t=t+A[i][k]*x[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;

}

 



2019-12-29 144 Обсуждений (0)
Постановка задачи №2. Метод решения. 0.00 из 5.00 0 оценок









Обсуждение в статье: Постановка задачи №2. Метод решения.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (144)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)