Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Метод Гаусса. Постановка задачи:Дана система линейных уравнений






Постановка задачи: Дана система линейных уравнений

A11*x1+A12*x2+A13*x3+A14*x4=B1

A21*x1+A22*x2+A23*x3+A24*x4=B2

A31*x1+A32*x2+A33*x3+A34*x4=B3

A41*x1+A42*x2+A43*x3+A44*x4=B4

найти точное решение методом Гаусса.

Запись системы линейных уравнений в матричном виде

 

Программа на языке CИ #include < iostream> #include < cmath> #include < iomanip> using namespace std; int main() { double a[4][4]={{5, 1, 1, 1}, {1, 7, 1, 1}, {1, 1, 6, 1}, {1, 1, 1, 4}}; double b[4]={8, 10, 9, 7}; double x[4]; int n, k, i, j;   n=4; double c, s; for(k=0; k< n-1; k++) for(i=k+1; i< n; i++) { c=a[i][k]/a[k][k]; a[i][k]=0;   for(j=k+1; j< n; j++) a[i][j]=a[i][j]-c*a[k][j];   b[i]=b[i]-c*b[k]; }   x[n-1]=b[n-1]/a[n-1][n-1];   for (i=n-1; i> =0; i--) { s=0; for(j=i+1; j< n; j++) {s=s+a[i][j]*x[j]; x[i]=(b[i]-s)/a[i][i]; } } cout< < " reshenie" < < endl; for (i=0; i< n; i++) cout< < x[i]; return 0; }  

 

Метод простой итерации. Постановка задачи: Дана система линейных уравнений. Найти приближённое решение с точностью е. Программа на языке CИ #include < iostream> #include < cmath> #include < iomanip> using namespace std; int main() { double A[4][4]={{5, 1, 1, 1}, {1, 7, 1, 1}, {1, 1, 6, 1}, {1, 1, 1, 4}}; double B[4]={8, 10, 9, 7}; double X0[4], X1[4]; double eps, tochnost, max_tochnost, s; int k, kmax, i, j; cout< < " Vvedite tochnost" < < endl; cin> > eps; cout< < " Vvedite max chislo iter" < < endl; cin> > kmax; cout.precision(5); cout.setf(ios:: left); for(i=0; i< 4; i++) X0[i]=0; k=0; while(fabs(max_tochnost)> eps) { if(k> =kmax) break; k=k+1; cout< < setw(5)< < k; max_tochnost=-100; for(i=0; i< 4; i++) {s=0; for(j=0; j< 4; j++) if(i! =j) s=s+A[i][j]*X0[j]; X1[i]=(B[i]-s)/A[i][i]; cout< < setw(10)< < X1[i]; tochnost=fabs(X1[i]-X0[i]); if(tochnost> max_tochnost) max_tochnost=tochnost; } cout< < endl; for(i=0; i< 4; i++) X0[i]=X1[i]; } cout< < endl; cout< < " Otvet" < < endl; for(i=0; i< 4; i++) cout< < setw(10)< < X1[i]; cout< < endl; cout< < " Chislo iter=" < < k; return 0; }  
Метод Зейделя. Постановка задачи: Дана система линейных уравнений. Найти приближённое решение с точностью е. Программа на языке CИ #include < iostream> #include < cmath> #include < iomanip> using namespace std; int main() { double A[4][4]={{5, 1, 1, 1}, {1, 7, 1, 1}, {1, 1, 6, 1}, {1, 1, 1, 4}}; double B[4]={8, 10, 9, 7}; double X0[4], X1[4]; double eps, tochnost, max_tochnost, s; int k, kmax, i, j; cout< < " Vvedite tochnost" < < endl; cin> > eps; cout< < " Vvedite max chislo iter" < < endl; cin> > kmax; cout.precision(5); cout.setf(ios:: left); for(i=0; i< 4; i++) X0[i]=0; k=0; while(fabs(max_tochnost)> eps) { if(k> =kmax) break; k=k+1; cout< < setw(5)< < k; max_tochnost=-100; for(i=0; i< 4; i++) {s=0; for(j=0; j< 4; j++) if(i! =j) s=s+A[i][j]*X0[j]; X1[i]=(B[i]-s)/A[i][i]; cout< < setw(10)< < X1[i]; tochnost=fabs(X1[i]-X0[i]); if(tochnost> max_tochnost) max_tochnost=tochnost; X0[i]=X1[i]; } cout< < endl; } cout< < endl; cout< < " Otvet" < < endl; for(i=0; i< 4; i++) cout< < setw(10)< < X1[i]; cout< < endl; cout< < " Chislo iter=" < < k; return 0; }  
       





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.