![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Olchik |
![]() ![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: ![]() ![]() ![]() |
Люди! Я написала программу на Паскале, но она как-то странно работает. Я не понимаю в каком месте ошибочка. Помогите,ПОЖАЛУЙСТА!
Вот условие задачи: Численно убедиться в справедливости равенства, для чего для заданного значения аргумента х вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью e. Оценить число итераций, необходимых для достижения заданной точности. равенство: ![]() Вот так вот.... Моя программа: Program RGZ3; Заранее ОГРОМНОЕ СПАСИБО!:=) ![]() Сообщение отредактировано: Lapp - 20.11.2007 7:34 |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Если честно, никаких странностей (кроме нарушения тобой п.2 правил) не заметила.
На больших х вылетает с делением на ноль - ты про это? Может, напишешь подробнее, в чем проблема? На каких значениях что-то не то получается? И еще меня немножко смутило Цитата n:=n+(n-1); Это по формуле так? Почему не n:=n+1? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Olchik |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 3 Пол: Женский Репутация: ![]() ![]() ![]() |
На больших х вылетает с делением на ноль - ты про это?
Да, именно про это. Цитата Это по формуле так? Почему не n:=n+1? Получается ,чтобы не выходило деление на 0 необходимо первоначально задать п=2. Иначи выходит: 1-1=0, а это знаменатель....Вот...Немного бредово...но всё же. Спасибо,что откликнулись ![]() Сообщение отредактировано: Lapp - 20.11.2007 7:35 |
Sozialist |
![]()
Сообщение
#4
|
![]() Клавиатурный тиран ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Чтобы не вылетало на больших углах, нужно заменять их меньшими. Например,
Сообщение отредактировано: Sozialist - 20.11.2007 5:03 |
Lapp |
![]()
Сообщение
#5
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Olchik, ты не поняла, что сказала мисс_граффити:
Цитата n:=n+(n-1); Это по формуле так?Почему не n:=n+1? Получается ,чтобы не выходило деление на 0 необходимо первоначально задать п=2. Иначи выходит: 1-1=0, а это знаменатель....Вот...Немного бредово...но всё же. - что совешенно не по теме ![]() Цитата n:=n+(n-1); - это действительно полнейший бред (не немного ![]() n:=n+1; Это же следует из написанной тобой формулы!.. Понятно? Чтобы не вылетало на больших углах, нужно заменять их меньшими. ... x:=x-2*Pi; //в силу периодичности функции ![]() Olchik, задача не так проста, как кажется на первый взгляд. В ней есть несколько подводных камней, даже для знающего программиста. Я тебе сейчас немного начну намекать на них, а ты попробуй разобраться и задавай вопросы. Ладно? 1. Во-первых, надо исправить ту ошибку, про которую говорила мисс_граффити, это несомненно. 2. В процессе вычислений получаются очень большие значения. Как ты знаешь, числа, с которыми имеет дело компьютер, ограничены по величине. Например, числа типа real ограничены примерно числом 10^38, а тип double простирается до 10^308. Та последовательность, с которой ты имеешь дело, сходится чрезвычайно медленно, но дело даже не в скорости схождения. Дело в том, что она сначала колеблется с очень большой амплитудой. То есть, прежде, чем сойтись, она очень сильно отклоняется, как в плюс, так и в минус. То есть программа действительно вылетает при больших X, но не из-за ошибки, а из-за ограниченных возможностей машины. Отсюда следуют несколько выводов сразу: - для n следует использовать не integer тип, а real; - для всех действительных величин следует использовать не real тип, а double (а может, и extended); - следует организовать последовательность так, чтобы минимизировать величину промежуточных результатов. Только пусть у тебя не сложится мнение, что если уж "машина не может, то и стараться нечего". Машина может ВСЕ, если ее правильно использовать.. 3. В твоей программе нарушена логика. Посмотри вниметельно: фраза "Равенство не справедливо" в принципе не может быть напечатана, так как мы не можем выйти из цикла, пока не достигли точности Eps. Подумай, что нужно сделать, чтоб исправить это. И приходи продолжать разговор.. ![]() Теперь от меня, как от администратора.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 17:47 |