|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2011, 00:07 | #1 |
Форумчанин
Регистрация: 15.10.2011
Сообщений: 139
|
не правильная работа вычислительного процесса.
Исходные данные. xn=0.25 xk=0.8 dx= 0.05 a=1.75
Трассировал данные получал что(точка остановка на скобке конца тела цикла): 01 циклическая операция: xn=0.3 02 циклическая операция: xn=0.35 03 циклическая операция: xn=0.39999999999999997 04 циклическая операция: xn=0.44999999999999996 05 циклическая операция: xn=0.49999999999999994 06 циклическая операция: xn=0.54999999999999993 07 Циклическая операция: xn=0.6 08 циклическая операция: xn=0.65 09 циклическая операция: xn=0.70000000000000007 10 циклическая операция: xn=0.75000000000000011 11 циклическая операция: xn=0.80000000000000016 причем при выводе в консоль числа округлялись и выводились правильными, но из-за такой возникающей погрешности не выполняется последний раз цикл, когда xn==xk, это можно обойти конечно и округлением результата каждый раз при вычислении до 2-ух сотых, но это не приемлемо. Вопрос в следующем: Почему возникает погрешность и как правильно поставить условие что бы универсально от неё избавиться? Код:
Программист это не профессия, программист - это образ жизни.
|
22.10.2011, 01:51 | #2 |
Форумчанин
Регистрация: 13.10.2011
Сообщений: 143
|
Скорее всего сбои получаются из-за неточностей представления дробных чисел в бинарном виде. Непонятно только почему на консоль число выводится в нужном виде.
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
|
22.10.2011, 10:04 | #3 |
Форумчанин
Регистрация: 15.10.2011
Сообщений: 139
|
никогда не слышал о возможности такого, двоичный код как десятеричный довольно четко описывают математические операции, разница в том что мы не привыкли к бинарной системе исчисления. но возможность существования такой проблемы возможно допустить.
Программист это не профессия, программист - это образ жизни.
|
22.10.2011, 10:31 | #4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
22.10.2011, 11:46 | #5 |
Форумчанин
Регистрация: 15.10.2011
Сообщений: 139
|
остался вопрос: Как решить проблему не точного вычисления?
Программист это не профессия, программист - это образ жизни.
|
22.10.2011, 13:13 | #6 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Код:
Не давай организму поблажки, каждый день тренируй его в шашки..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание программы вычислительного процесса с разветвлением C++ | zpMirtzp | Помощь студентам | 1 | 10.05.2011 19:47 |
Правильная работа условия if | Andruha10 | PHP | 1 | 22.08.2010 21:23 |
Не правильная работа for .. to | Neptunium | Общие вопросы Delphi | 7 | 05.04.2010 00:32 |
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩЕГОСЯ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА | Rustem5 | Помощь студентам | 1 | 19.03.2010 18:16 |
Схемы вычислительного процесса | Natali_11111 | Помощь студентам | 1 | 03.03.2010 18:53 |