| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Графика > Как рисовать графики ? |
| Автор: Icaros 2.6.2006, 13:25 |
| Есть некое уравнение y=f(x). Решив его мы получим массив точек (x, y). Как нарисовать такой график с помощью PHP ? Функция ImageLine() не годится, т.к. график получается ломаный, а нужен сглаженный как в Excel'е. Есть ли готовые классы или решения данной проблемы ? jpgraph не поддерживает рисование подобных графиков (вроде...) |
| Автор: skyboy 2.6.2006, 14:59 |
| Icaros, напиши класс, аппроксимирующий данные... скажем, кубическими сплайнами...Круто будет |
| Автор: Mal Hack 2.6.2006, 23:40 |
Ты графики в консоли в Паскале или на Си или в Делфе на канве рисовал? Надо интервал брать меньше и делать промежуточные вычисления. |
| Автор: BobiKK 3.6.2006, 00:16 |
| Может быть по сабжу: http://phpclub.ru/detail/article/dynamic_image |
| Автор: skyboy 3.6.2006, 10:08 |
| Касательно сглаживания и "красивых" графиков: http://alglib.sources.ru/interpolation/spline3.php |
| Автор: Mal Hack 3.6.2006, 14:02 |
| skyboy, интерполяция тут нафиг не нужна. Строить надо просто дифференцированно. |
| Автор: skyboy 3.6.2006, 14:18 |
| Mal Hack, зависит от того, что у него "на руках" - функция или только точки. Из "Есть некое уравнение y=f(x). Решив его мы получим массив точек (x, y)" неясно(мне, по крайней мере), что же вопрошающий имеет - только набор точек или всё же может запрограммировать функцию. Впрочем, скорее всего, я просто сам придумываю трудности |
| Автор: Icaros 3.6.2006, 18:13 |
| Есть ограниченное число точек (например 10). К сожалению я не могу увеличить число точек, т.к. это вызовет рост времени выполнения скрипта. Скрипт и так долго вычисляет эти 10 значений. |
| Автор: skyboy 3.6.2006, 21:48 |
| Icaros, что за функция? там параметры ограничены? может, стОит рассчитать разово и хранить результаты рассчёта в базе? Что за функция? |
| Автор: Mal Hack 3.6.2006, 23:47 |
| Если только точки, то надо все равно остальные добирать через интерполяцию. Icaros, как говорит препод в универе, при уменьшении кол-ва итерационных прохождений, мы теряем характер функции (графика). |
| Автор: Icaros 8.6.2006, 13:56 |
| Вот что получилось после использования метода интерполяции (см. рисунок). Довольно сильно округлено, особенно переход через нуль. Красные точки - заданные значения, синяя кривая - кривая после сглаживания. |
| Автор: skyboy 8.6.2006, 14:47 |
| Icaros, какой метод использовал? Кста, это аппроксимация - при интерполяции график проходит через все заданные точки. |
| Автор: Icaros 8.6.2006, 15:12 |
| Использовал "Геометрическое сглаживание В-сплайнами", а посоветованный уважаемым skyboy метод "Интерполяция функции кубическими сплайнами" я не понял. |