![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Tinysik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
подскажите кто знает.... :( ниже код для решения СЛАУ методом простой итерации. На парах мы делали след. образом - писали код(проверяли его), затем в него вставляли какой-ниб. пример и этот пример решался.
в этом коде есть ошибка в выделенной строке... #include<math.h> #define N 100 double A[N][N], F[N], mf, X[N], X1[N], S[N], msf; main() { int i, j; long int dt; double t, e; mf = 0; for(i = 0; i < N; i++) { for(j = 0; j < N; j++) (i==j)?(A[i][j]=2):(A[i][j]=1); F[i] = N+1; mf += F[i]*F[i]; } t = 0.01; e = 0.00001; for(i = 0; i < N; i++) X1[i] = 0.6; do { for(i = 0; i < N; i++) X[i] = X1[i]; for(msf=0,i = 0; i < N; i++) { for(S[i] = 0,j = 0; j < N; j++) S[i] += A[i][j] * X[j]; X1[i] = X[i] - t*(S[i] - F[i]); msf += (S[i]-F[i])*(S[i]-F[i]); } } while(msf/mf > e*e); for(i = 0; i < 4; i++) printf(" %f\n",X[i]); return(0); } что это за ошибка?! до сег. дня все работало...не знаю как так может быть:( МНЕ НУЖНО - избавиться от ошибки и посчитать например такой пример - 3x1 - x2 = 5 -2x1+ x2+ x3 = 0 -2x1- x2+ 4x3 = 15 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
какая ошибка? Почему не воспользовался тегом "код"?
Почему после while, который перед for с проблемным printf, стоит точка с запятой? |
|||
|
||||
| Tinysik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
вообще этот код я нашла в интернете... он выглядел так -
#include<stdio.h> #include<sys/time.h> #define N 100 double A[N][N], F[N], mf, X[N], X1[N], S[N], msf; main() { int i, j; long int dt; double t, e; struct timeval tv1, tv2; /* Генерация данных. Здесь задается матрица с элементами равными 1, * по диагонали равными 2. Матрица берется хорошо обусловленной. * При правой части равной N+1 все корни будут равными 1. */ mf = 0; for(i = 0; i < N; i++) { for(j = 0; j < N; j++) (i==j)?(A[i][j]=2):(A[i][j]=1); F[i] = N+1; /* Сразу вычисляем сумму квадратов элементов вектора F, * т.е. подкоренное выражение формулы (4). */ mf += F[i]*F[i]; } /* Задаем шаг t и e. */ t = 0.01; e = 0.00001; /* Задаем начальное приближение корней. В Х1 хранятся значения корней * к+1-й итерации. */ for(i = 0; i < N; i++) X1[i] = 0.6; /* Засекаем время начала вычислений. */ gettimeofday(&tv1,NULL); do { for(i = 0; i < N; i++) /* В Х хранятся значения корней к-й итерации. */ X[i] = X1[i]; for(msf=0,i = 0; i < N; i++) { for(S[i] = 0,j = 0; j < N; j++) S[i] += A[i][j] * X[j]; X1[i] = X[i] - t*(S[i] - F[i]); /* Вычисляем сумму квадратов элементов невязки, т.е. подкоренное * выражение числителя формулы (4). */ msf += (S[i] – F[i])*(S[i] – F[i]); } } while(msf/mf > e*e); /* Проверка условия по формуле (3). */ /* Засекаем время конца вычислений. */ gettimeofday(&tv2,NULL); dt = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; /* Выводим на экран время вычислений в секундах */ printf(" Time= %d\n",dt); /* Для контроля выводим 4-е первых корня */ for(i = 0; i < 4; i++) printf(" %f\n",X[i]); return(0); } но, т.к. мне не надо, чтобы он считал время вычисления и т.д., я удалилато, что связано с time(то,что зачеркнуто) правильно я сделала? теперь мне нужно,чтоб этот код работал, а потом уже включить в него пример |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
вот это ты зря удалила |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
используй тег "код"!!!
так. на счет while я все понял. на printf ругается, потому что ты заменила #include <stdio.h> на #include <math.h>, который в данном коде не нужен. Код должен выглядеть примерно так:
2baldina посмотри первый пост, там это не удалено. |
|||
|
||||
| Tinysik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
ой спасибо......
программа работает, ошибок нет, но он должен выводить корни, а там что-то не то выводит... простите за мой "тупизм", просто я на С++ не бум-бум, был бы VB я бы еще там что-то сообразила,если ошибки были бы.(хотя эту задачу сказали можно и на VB делать) еще раз вам спасибо, а то у меня никакого продвижения не было (прям реально замучалась) а на счет includ'a я сделала там #include<math.h>, т.к. мы с <stdio.h> не работали никогда, только с #include<iostream.h> #include<math.h> Присоединённый файл ( Кол-во скачиваний: 14 )
_________1.jpg 36,16 Kb |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Tinysik, никто не мешает заменить stdio.h на iostream... Только там printf надо будет заменить на cout.
|
|||
|
||||
| Tinysik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
так будет?
cout<<("%f ", A[i][j]); cout<<("\n"); см. вложение ----> Присоединённый файл ( Кол-во скачиваний: 6 )
22.JPG 20,08 Kb |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Tinysik, ой.
нужно просто cout << X[i] << "\n"; |
|||
|
||||
| Tinysik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
а что вот это такое ???
см. рисунок... (выделено красным) Присоединённый файл ( Кол-во скачиваний: 17 )
22.JPG 104,42 Kb |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
INF - сокращение от infinite - бесконечность.
я же говорю, программа не работает. |
|||
|
||||
| Tinysik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 19.12.2007 Репутация: нет Всего: нет |
ммммммммммм жалко... что ж такое, а .. прям не везет с этой прогаммой
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |