PDA

Просмотр полной версии : Проблема точных вычислений



Anatol_rus
02.03.2009, 15:50
Очень нужна точность до 10^(-15) - 10^(-16),наилучший вариант 10^(-20),
ни кто не знает как добиться такой точности???А то без нее ни че не выйдет,если есть способы обойти эту проблему или еще что-то отпишитесь буду благодарен)):D

Chupakabra
02.03.2009, 16:48
Может LREAL ?

Anatol_rus
02.03.2009, 22:05
Может LREAL ?

Он не работает в контроллере так что нет смысла его использовать:mad:

Сергей71
03.03.2009, 08:58
10^(-15) - 10^(-16),наилучший вариант 10^(-20)
это числа с 15-20 разрядами, можно программно создать целое число с таким разрядом (пример array) и сделать ФБ для присвоения и вычисления мат. функций над этими числами (поразрядное сложение вычитание и тп. как в школе на тетрадке во 2 класе).

Anatol_rus
03.03.2009, 09:36
это числа с 15-20 разрядами, можно программно создать целое число с таким разрядом (пример array) и сделать ФБ для присвоения и вычисления мат. функций над этими числами (поразрядное сложение вычитание и тп. как в школе на тетрадке во 2 класе).

Я об этом тоже думал,ет уже извращенство:D :D :D
Этой среде программирования ой как не хватает динамических массивов и и повышенной точности вычисления

Chupakabra
03.03.2009, 10:33
Он не работает в контроллере так что нет смысла его использовать:mad:


Этой среде программирования ой как не хватает динамических массивов и и повышенной точности вычисления

В среде-то поддержка есть (LREAL), нет у конкретного таргета.
Нашел тут одну библиотеку (от другого производителя), где описано 64bit-ное целое и безнаковое числа и базисные мат. операции над ними.

TYPE T_LARGE_INTEGER :
(* 64 bit signed integer *)
STRUCT
dwLowPart : DWORD; (* least significant 32 bits (2's-complement) *)
dwHighPart : DWORD; (* most significant 32 bits *)
END_STRUCT
END_TYPE

TYPE T_ULARGE_INTEGER :
STRUCT
dwLowPart : DWORD;
dwHighPart : DWORD;
END_STRUCT
END_TYPE

Филоненко Владислав
03.03.2009, 11:59
А какой контроллер? ПЛК1хх поддерживают LREAL.

Да и для чего нужна такая точность? Где датчики и исполнительные устройства с такой точностью?

Anatol_rus
03.03.2009, 13:56
А какой контроллер? ПЛК1хх поддерживают LREAL.

Да и для чего нужна такая точность? Где датчики и исполнительные устройства с такой точностью?

ПЛК 150 У-М установлено эксперементально не поддерживает таргет версии 2.02
Точность нужна для вычисления корней полинома 14-ой степени с последующим построением на оставшихся устойчивых корнях динамического регулятора 2 -го порядка

Филоненко Владислав
03.03.2009, 15:33
Оно не работает или точность не та?

Anatol_rus
03.03.2009, 16:22
Оно не работает или точность не та?

Точность не та(((,особенно если работам с большими числами более 10^8,и при крайне маленьких от 10^(-14)
А как не странно на эмуляторе пока регулятор строится причем резница с нужным 3-4 знак после запятой,но после введения больших чисел разваливается из-за точности:( :( :(

Филоненко Владислав
03.03.2009, 22:26
Так на эмуляторе не точно или в ПЛК?
Мы на точность стандартную библиотеку C не проверяли. :) Поэтому и вопросы...

Малышев Олег
04.03.2009, 08:13
Что регулируете то?
Вам точно нужна настройка регулятора на ПЛК - может вынести ее на ПК?
Каковы средние tau,t1,t2 ?

Chupakabra
04.03.2009, 11:07
Anatol_rus, интересно посмотреть (формулы и задачу), где фигурируют такие, очень мальенькие величины.

Anatol_rus
04.03.2009, 23:24
Anatol_rus, интересно посмотреть (формулы и задачу), где фигурируют такие, очень мальенькие величины.

Возьмите любой плолином 14 порядка нормированного по первому числу у вы поймете откуда такие малые числа:cool:

Филоненко Владислав
05.03.2009, 10:31
Можно взять и полином 500 порядка. А реально какая задача? Откуда полином такой взялся?