Постановка задачи №2. Метод решения.
Кафедра «Прикладная Математика и Информатика» Отчёт по лабораторной работе №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; }
Популярное: Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (144)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |