|
|
|
| Неожиданно попал в полный ступор!
Не хватает точности вычислений по формуле, а в gimp нет функции синуса.
Что делать? | |
|
|
|
|
|
|
|
для: Eugene77
(16.05.2008 в 19:41)
| | что за формула-то?
и каким боком тут gimp? | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2008 в 19:54)
| | Да, разумеется, не gimp, а gmp.
А про формулу я даже не знаю что сказать. Она мне рисует замысловатую линию.
Я её испытал на другом языке программирования - работает нормально.
Теперь никак не могу её перенести в PHP.
Проблема возникает от того, что формула содержит разности примерно одинаковых чисел.
Слишком грубое округление в PHP приводит к появлению ступенек на линии, которая должна идти плавно.
Преобразовать эту формулу так чтобы исключить из неё эти разности методами алгебры нельзя. | |
|
|
|
|
|
|
|
для: Trianon
(16.05.2008 в 19:54)
| | Судя по обилию рекомендаций я понял, что надо писать программу на другом языке, компилироать её, потом запускать её через exec.
Или может быть, есть какой-то метод подключить к PHP библиотеки СИ?
Может ещё идея какая-то есть? | |
|
|
|
|
|
|
|
для: Eugene77
(19.05.2008 в 13:03)
| | >Или может быть, есть какой-то метод подключить к PHP библиотеки СИ?
Можно написать расширение. | |
|
|
|
|
|
|
|
для: cheops
(19.05.2008 в 14:28)
| | >>Или может быть, есть какой-то метод подключить к PHP библиотеки СИ?
>Можно написать расширение.
Как это сделать? Я знаю что должна делать моя программа, но как её проще всего приделать к PHP?
У меня мысль такая: PHP скрипт пишет во временную директорию файлы. Программа - расширение читает их и перерабатывает, а потом записывает в другие файлы результат. Потом из этих файлов снова читает PHP скрипт и выводит уже окончательный результат.
Но расширение - это наверно что-то другое? Меня с ним на хостинг пустят?
Если мне делать в Linux - среде, то придётся перекомпилировать PHP интерпретатор?
Под windjws надо делать свой DLL? Как его делают? | |
|
|
|
|
|
|
|
для: Eugene77
(20.05.2008 в 15:16)
| | Для начала опишите полностью задачу, возможно будет все сделать проще чем вам кажется и на РНР. Может вы просто что-то недопоняли | |
|
|
|
|
|
|
|
для: mihdan
(20.05.2008 в 23:07)
| | Почти нечего описывать.
Есть формула, содержащая тригонометрические функции, надо постоить её график.
Формула не очень простая и из-за разностей больших чисел начинают получаться ступеньки на графике, где должно идти плавно.
Вот уже неделю вокруг неё хожу. На другом языке записал - всё работает нормально, но мне надо на PHP. | |
|
|
|
|
|
|
|
для: Eugene77
(21.05.2008 в 11:10)
| | У PHP только две функции expm1() и log1p(), которые высчитывают значения повышенной точности и только под UNIX в Windows они используют обычные функции. | |
|
|
|
|
|
|
|
для: cheops
(21.05.2008 в 11:48)
| | >У PHP только две функции expm1() и log1p(), которые высчитывают значения повышенной точности и только под UNIX в Windows они используют обычные функции.
Даже эти функции возвращают float. А разности между float - это уже источник значительных погрешностей, если точки на графике находятся близко.
Если я правильно помню, в Cи все математические функции по умолчанию возвращают double.
Вроде бы PHP на Си написан, как же они изменили этот разумный подход?
Может быть возможно как-то вернуть изначальное положение вещей? | |
|
|
|
|
|
|
|
для: Eugene77
(22.05.2008 в 18:12)
| | Вообще-то возвращается double, однако в конфигурационный файл php.ini сейчас введена директива
которая указывает, сколько знаков после запятой должно отображаться в вещественном числе - может у вас с этим что-то связанно, попробуйте поиграться этой директивой (хотя она не должна на вычисления влиять - её дело формат вывода). Ошибки накапливаются действительно быстро, для этого и введены функции expm1() и log1p() - они очень точно считают свой класс задач. | |
|
|
|
|
|
|
|
для: Eugene77
(22.05.2008 в 18:12)
| | вообще-то float в С и float в php - две разные вещи. | |
|
|
|
|
|
|
|
для: Eugene77
(20.05.2008 в 15:16)
| | >>>Или может быть, есть какой-то метод подключить к PHP библиотеки СИ?
>>Можно написать расширение.
>
>Как это сделать? Я знаю что должна делать моя программа, но как её проще всего приделать к PHP?
>
>У меня мысль такая: PHP скрипт пишет во временную директорию файлы. Программа - расширение читает их и перерабатывает, а потом записывает в другие файлы результат. Потом из этих файлов снова читает PHP скрипт и выводит уже окончательный результат.
>
>Но расширение - это наверно что-то другое? Меня с ним на хостинг пустят?
>Если мне делать в Linux - среде, то придётся перекомпилировать PHP интерпретатор?
>Под windjws надо делать свой DLL? Как его делают?
Маловероятно, что вас на хостинг с ней пустят, зависит от хостинга, если там допускается использоваться CGI-скрипты, написанные на C - можно с помощью их что-то сделать. | |
|
|
|
|
|
|
|
для: cheops
(21.05.2008 в 11:51)
| | Я давно уже не писал на Си чего-то реально работающего.
Какой мне надо компилятор: стандартный линуксовский или микрософтовский подойдёт? | |
|
|
|
|
|
|
|
для: Eugene77
(22.05.2008 в 17:32)
| | В Linux нужен будет GCC, в Windows - Visual Studio С++. | |
|
|
|
|
|
|
|
для: cheops
(22.05.2008 в 19:44)
| | Спасибо! Яснот еперь. | |
|
|
|