|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.01.2011, 19:41 | #1 |
Регистрация: 08.12.2010
Сообщений: 5
|
Метод Зейделя с++
Здравствуйте ) Я хотел бы обратиться к вам за помощью по поводу " Решения слау методом Зейделя". Мб у вас есть рабочий исходник этой программы , т.к в поиске я ничего не нашел (включая гугл) . Буду очень благодарен за рабочую программу .
Вот есть одна , но она неработает , мб вы что-нибудь сможете с ней сделать? ( #include <math.h> #include <stdio.h> #include <iostream.h> const int nn=100; typedef double arr[nn][nn]; typedef double vect[nn]; void input(int*, double *); bool exact(const double *px, const double *pp, const int *n); arr A; double e; int main() { int n,i,j; double sum; vect x,p,B; input(&n,B); // input n,A,B. for (i=0; i<n; i++){ // initial approximatization x[i]=1; p[i]=1; } do { for (i=0; i<n; i++){ sum = 0; for (j=0; j<n; j++) if (i!=j) sum+=x[j]*A[i][j]; // printf("sum= %.2f",sum); // cout << "i = " << i; p[i]=x[i]; x[i]=(B[i] - sum)/A[i][i]; /* for (j=0; j<n; j++) printf("%.2f ",x[j]); cout << exact(x,p,&n);*/ } } while (!exact(x,p, &n)) ; for (j=0; j<n; j++) printf("X%d = %.3f\n",j+1,x[j]); puts("Verification:"); for (i=0; i<n; i++){ sum = 0; for (j=0; j<n; j++){ sum+=x[j]*A[i][j]; if ((j==0) && (A[i][j]*x[j]<0)) cout <<"-"; printf("%.2f*%.2f",fabs(A[i][j]),fabs(x[j])); if ((j!=n-1)&&(A[i][j+1]*x[j]>=0)) cout <<" + "; else if ((j!=n-1)&&(A[i][j+1]*x[j]<0)) cout <<" - "; else {cout << " = "; printf("%.3f ;\n", sum); } } } } void input(int *m, double *PtrB) { int i,j; cout << "Enter e.\n"; cin >> e; cout << "\nEnter n.\n"; cin >> *m; cout << "\nEnter matrix A.\n"; for (i=0; i<*m; i++) for (j=0; j<*m; j++) cin >> A[i][j]; cout << "\nEnter matrix B.\n"; for (i=0; i<*m; i++) cin >> *(PtrB+i); /*for (i=0; i<*m; i++){ cout << endl; for (j=0; j<*m; j++) printf("%.2f ",A[i][j]);}*/ } bool exact(const double *px, const double *pp, const int *n) { int i; bool f=true; for (i=0; i<*n; i++) if ( fabs( *(px+i) - *(pp+i) ) > e){ f=false; break; } return f; } Буду очень благодарен за помощь . |
28.01.2011, 21:11 | #2 |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
Задолбали выкладывать код как попало! Заносите его в специальный тег CODE, чтобы были видны отступы и как следует отформатируйте код
|
28.01.2011, 21:29 | #3 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
|
29.01.2011, 16:26 | #4 |
Регистрация: 08.12.2010
Сообщений: 5
|
Vago спасибо огромное . Ты действительно мне очень помог )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Метод Зейделя (Pascal) | Necronicle | Помощь студентам | 1 | 06.06.2010 16:50 |
Метод Зейделя в Delphi | Any13 | Помощь студентам | 0 | 17.05.2010 16:45 |
Метод Зейделя | True_girl | Помощь студентам | 1 | 19.04.2010 16:16 |
СЛАР метод Зейделя | maloy-rom | Общие вопросы C/C++ | 4 | 17.02.2010 23:03 |
Метод итераций и метод Зейделя | prikolist | Общие вопросы C/C++ | 40 | 18.06.2009 17:40 |