Перейти к содержимому


Фотка

Вопрос к IT-теоретикам


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 39

#1 zalex

zalex

    ПРОФЕССОР!!!

  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 04 сентября 2014 - 23:13

В целом основной вопрос звучит следующим образом:
Есть алгоритм вычислений (математическая модель), есть программа на ЭВМ, которая является реализацией модели. Также есть сведения о микроархитектуре этой ЭВМ (о представлении чисел, реализации алгоритмов арифметических действий).
Вопрос: Есть ли научный раздел (метод, аппарат), позволяющий, проанализировав программу на языке высокого уровня, сказать с какой точностью будет получен конечный результат компьютерных вычислений. Сам вопрос о точности обусловлен ошибками округления, неизбежно возникающими при работе с Float-числами.

Параллельно у меня есть связанные с предыдущим вопросы, на которые тоже ищу ответы, но практически безрезультатно, а значит - не там )).

1. Есть функция, вычисление точных значений которой "в лоб" вручную весьма трудоёмкое (специальные функции, к примеру) или вообще невозможно (Erf-функция) . Есть выражения для приближенных значений этой функции и я могу провести вычисления на бумаге (разложение в ряд, не обязательно Фурье).
Вопрос: Есть ли готовый аппарат, позволяющий оценивать погрешность, вносимую использованием приближения. При этом можно ли оценить эту погрешность, не прибегая к ЭВМ.

2. Наверняка есть литература по информационным дисциплинам, в которой подробно рассматриваются ошибки округления, возникающие в ходе элементарных (арифметических и присваивания между различными типами) действий, инструкций. Что почитать?

И вопрос из разряда фантастики.
Есть ли аппарат, позволяющий для решения хотя бы небольшого круга некоторых задач перейти к решению задачи лишь на множестве целых чисел?

 

Я, конечно, осознаю тематику, и сейчас много копаю по специализированным форумам. Но здесь, в Тавроклубе, я почерпнул полезной инфы гораздо больше, чем во всем остальном Рунете вместе взятом.





Кто читал эту тему?


#2 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 05 сентября 2014 - 17:29

точно помню,что считали ошибки в курсе с названием типа "эвм в части научных расчетов".
помню,был пример с разбиениями интегралов и,по числу кусков\величине куска считали ошибку....
точно помню,что не погрешность,а ошибку.....
и еще там какая-то дисперсия была...

по-моему,в курсе матана,при изучении вопросов о разложении в ряд,есть задача о поиске косяков,в зависимости от номера члена ряда и "крутизны" функции.

хз,может поможет эта инфа...
если надо,могу попробывать скинуть контакты препода...
Добавленно позже
считать погрешность,имхо, немного странно.
погрешность - это дельта между реальным значением и измеренным\вычисленным.

у тебя реальности нет,есть формула для модели.
если формула набита интегралами,то половина из них (как учит матан,тфкп и ммф) в принципе определены с точностью до константы,а другая половина - с точностью до функции....
и между чем и чем дельту искать? само аналитическое выражение имеет решение +\- километр....

ессесно, сильно зависит от того,что у тебя уже есть-может всё и определено....

Сообщение отредактировал ArtemSaratov: 05 сентября 2014 - 17:31

Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#3 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 09 сентября 2014 - 00:09

у тебя реальности нет,есть формула для модели.

 

Дык есть формула. Во многих случаях (но не во всех) результат на бумаге будет расходиться с результатом на компе.

 

Пример

Сделай в любой среде программирования переменную типа Float (нецелочисленную)

 

Дай ей значение 0,1 Затем в цикле 9 раз прибавь к ней 0,1. На выходе, проанализируй её значение )))) Оно не будет равно 1.



#4 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 09 сентября 2014 - 12:41

результат на бумаге будет расходиться с результатом на компе.

Всё, теперь я понял что ты называешь "погрешностью".


Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#5 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 09 сентября 2014 - 13:09

Дай ей значение 0,1 Затем в цикле 9 раз прибавь к ней 0,1. На выходе, проанализируй её значение )))) Оно не будет равно 1

Ну, это понятно.

0,1 ты не можешь представить в двоичном коде точно - вот оно и набегает.

Попробуй с 0,125 - должно быть четко. Это "четвертинка", она в степенях двойки проще представляется.

 

 

Кароче, смотри, что я еще вспомнил.

Твоя задача бродит где-то в теме "оценка точности численных методов".

Я помню, что даже делали типа расчетов временнЫх (ооочень притянутых за уши, но, тем не менее), типа сколько надо времени на компе просчитать, а сколько - аналитически (в числе шагов, а не в секундах :) ).

 

Поговорил с нашим погромистом, он сказал, что, к сожалению, не подскажет "научных" трудов по этой теме.

Но сказал, что если тебе надо что-то разовое сделать, то кидай формулу и он подскажет каким путём надо вести программирование, чтобы погрешность была минимальной.

Правда, не всегда хватает одной формулы - иногда требуется еще и массив входных данных (инфы - какие данные, очень мелкие, очень большие, перемешка и т.п.). Но это он после анализа формулы скажет надо или не надо.

 

Однако, эта работа будет из серии "делай так, потому что я вумный чувак" - за счет опыта чисто. Точной теории общего вида он вспомнить не может.

 

ну и дал пару советов практического типа, если ты будешь сам програмить:

1.если есть много мелких чисел в числителе (меньше единицы) и в знаменателе - не надо "как в школе" перемножать числитель, потом знаменатель и делить два числа - всё уплывёт. Надо по-парно делить и потом множить. Если дробь "в перемежку", надо малое делить с малым, большое с большим (т.е.(а*б*ц)/(х*у*з) надо считать как (а/х)*(б/у)*(ц/з)) и только в конце перемножать.

 

2.Если надо сложить МНОГО чисел (хотя бы 1000 штук - это уже много), нельзя складывать в тупую по очереди. Надо расставить скобки и складывать максимум по 10 штук. Ну и так последовательно.

 

3. если ты ведешь обсчет какой-то функции, то надо избегать ввода коэфициентов.

Банальный у=Кх+b, если ты будешь задавать К, как коэфициент (числом) - ты сиииильно ошибешься.

Причем, если строишь график на экране - вааще картинка будет убогая.

 

Надо задавать как у= (((у2-у1)*(х-х1))/(х2-х1))+у1.

Казалось бы, тут (у2-у1)/(х2-х1) и есть нужный угол наклона - один раз посчитал и везде юзай как К - но будет обязательно косяк.

 

 

Ну, если что помог, был рад. :)

Пиши еще мысли, может что еще вспомню или народ потолкаю.


Сообщение отредактировал ArtemSaratov: 09 сентября 2014 - 13:14

Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#6 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 09 сентября 2014 - 14:40

если тебе надо что-то разовое сделать, то кидай формулу и он подскажет каким путём надо вести программирование, чтобы погрешность была минимальной.

 

В том и дело, что все подходы - весьма заточены под конкретную задачу. А я хочу найти/разработать универсальный метод. Увидел листинг - узнал точность.


Добавленно позже

иногда требуется еще и массив входных данных

 

Ды даже всегда, пример с 0,! и 0,125 очень поучителен.

 

Но при неизвестных входных оценку можно по максимуму провести (т.е. оценить максимально возможную погрешность).


Добавленно позже

А вообще у меня студенты по вычметодам не знают столько, сколько ты написал. Все написанное верно.

Но основная мысль - не как оптимизировать алгоритм, а как проверить имеющийся алгоритм.



#7 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 10 сентября 2014 - 09:40

Ды даже всегда,

Он отдельно несколько раз подчеркнул, что именно ему именно не всегда. :)

И хитро улыбался :)

Он реально умный мужик, я б ему верил. :)

 

у меня студенты по вычметодам не знают столько, сколько ты написал

У нас небыло выч. методов. :(

ДА и учился я 100 лет назад - половину забыл. Если честно, я очно помню, что кусочек такой задачи мы разбирали в матане - в разделе изучения разложений  в ряд - там небыло готового результата, просто "ввод в курс дела".

ну и в курче численных методов, вот помню что-то было такое (собсна, что помнил - всё написал) - но я ж этим не пользуюсь, всё забыл. :( 

Даже тетрадки поднять не могу - они в 1000 км  в гараже лежат. :(

Хочешь - могу дать ФИО препода, который нам читал - ты его найдешь, может что он подскажет???


Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#8 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 10 сентября 2014 - 10:49

Даже тетрадки поднять не могу - они в 1000 км в гараже лежат.

 

Истинно гараж Тавровода!

Пока нарыл немного литературы, осмысление провожу. Но за предложение спасибо, буду иметь ввиду.



#9 indim

indim

    Форумчанин

  • Тавроводы
  • 141 сообщений
  • Возраст: 31
  • Город:Старый Оскол
  • Моё авто:заз 110206

Отправлено 10 сентября 2014 - 15:28

Думаю, погрешность будет зависеть от количества выделяемой памяти переменной.

Если использование float приводит к искажению, попробуй использовать decimal.

При работе с матМоделью желательно серьезно подойти к типам используемых переменных, их приведению к другим типам.



#10 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 10 сентября 2014 - 23:32

Думаю, погрешность будет зависеть от количества выделяемой памяти переменной

Да даже по максимуму (максимальная разрядность переменной) - ошибки не избежать. В одном действии - она незримая. Но современная прога - это миллионы действий. Вот хочу научиться оценивать.



#11 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 10 сентября 2014 - 23:44

Откуда ты всё это знаешь?

Численные методы )))



#12 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 11 сентября 2014 - 09:53

Думаю, погрешность будет зависеть от количества выделяемой памяти переменной.

к сожалению - нет.

от самих методов погрешности много.

Один перевод в доичный вид чего стоит.

 

пример с 0,1+0,1+0,1+0,1+0,1+0,1+0,1+0,1+0,1+0,1 уже разбирали.

пофигу на чем считать, хоть на первопне от интел, хоть в облаке гугля. :(

 

попробуй на обычном калькуляторе 10/3, а потом результат уможить на 3 и сравни результаты.


Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#13 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 11 сентября 2014 - 12:22

попробуй на обычном калькуляторе 10/3, а потом результат уможить на 3 и сравни результаты

 

Кстати, а попробуй на домашнем калькуляторе 0,1+0,1 и так 10 раз. В конце получишь единицу!!!! А на компе - нет ))))))))



#14 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 22 января 2015 - 22:14

Кто-нибудь работал с автоматикой Овен?
как она?
глючит\ломается или нормально???

Задача такая, собрать в комнате 6 дискретов, 20 аналогов, 4 счетчика по модбасу и всю эту инфу по радио\гсм модему выплюнуть на компьютер.
посчитал сегодня на моксах,с новым курсом 110 тыр только железки-дороговастенько!

Еще вопрос,если таких комнат будет 150 штук, один комп одним модемом сможет все опросить или надо что-то городить???

Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#15 htg

htg

    Беставный Фар

  • Тавроводы
  • 4 137 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Самара
  • Моё авто:ZAZ-110207

Отправлено 22 января 2015 - 22:17

Кто-нибудь работал с автоматикой Овен?
как она?
глючит\ломается или нормально???
Задача такая, собрать в комнате 6 дискретов, 20 аналогов, 4 счетчика по модбасу и всю эту инфу по радио\гсм модему выплюнуть на компьютер.
посчитал сегодня на моксах,с новым курсом 110 тыр только железки-дороговастенько!
Еще вопрос,если таких комнат будет 150 штук, один комп одним модемом сможет все опросить или надо что-то городить???

Не напоминай мне про мою прежнюю работу.))
На Овене построить можно.

#16 ArtemSaratov

ArtemSaratov

    ФЛУДЕРАСТ

  • Тавроводы
  • 12 967 сообщений
  • Город:Саратов\Москва
  • Моё авто:Таврия

Отправлено 22 января 2015 - 22:19

какие модулю юзать можешь сказать??
я посмотрел цены-реально чтоли ДИ и ДО по 4...6 тыс. руб стоят?? или это инет-магазин-гонево?

Таврия не роскошь, роскошь-средства на ее передвижение. (с)

У тебя Таврия! Чтобы на ней поездить, надо сначала ее починить! (с)


#17 lord1404

lord1404

    Бегунок

  • Модераторы
  • 6 126 сообщений
  • Пол:Мужик
  • Город:Старый Оскол
  • Имя:Шурик
  • Моё авто:Пешая лошадка

Отправлено 22 января 2015 - 22:21

Кстати, а попробуй на домашнем калькуляторе 0,1+0,1 и так 10 раз. В конце получишь единицу!!!! А на компе - нет ))))))))

В 7-ке поправили, теперь считает до единицы, правда на мозгуляторе оси  :D  


Изображение

#18 htg

htg

    Беставный Фар

  • Тавроводы
  • 4 137 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Самара
  • Моё авто:ZAZ-110207

Отправлено 22 января 2015 - 22:23

какие модулю юзать можешь сказать??
я посмотрел цены-реально чтоли ДИ и ДО по 4...6 тыс. руб стоят?? или это инет-магазин-гонево?

Цены нормальные. Овен, бюджетная линейка.

#19 htg

htg

    Беставный Фар

  • Тавроводы
  • 4 137 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Самара
  • Моё авто:ZAZ-110207

Отправлено 22 января 2015 - 22:33

ArtemSaratov, смотри оф сайт овена. Раньше он сам продавал. Как нынче, не знаю.

#20 zalex

zalex

    ПРОФЕССОР!!!

    Топикстартер
  • Тавроводы
  • 3 952 сообщений
  • Возраст: 44
  • Пол:Мужик
  • Город:Воронеж
  • Моё авто:Красная и фиолетовая

Отправлено 22 января 2015 - 23:39

В 7-ке поправили, теперь считает до единицы, правда на мозгуляторе оси :D

)) Вообще это особенность представления чисел в ПК.

Скорее всего увеличили разрядность, и мой пример может не работать. Но я уверен, что взяв более маленькие числа  можно найти самостоятельно подобный пример.






Количество Тавроводов, читающих эту тему: 0

0 Тавроводов, 0 гостей, 0 анонимных