Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как рисовать графики ? (не линейные) 
:(
    Опции темы
Icaros
  Дата 2.6.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



Есть некое уравнение y=f(x). Решив его мы получим массив точек (x, y). Как нарисовать такой график с помощью PHP ? Функция ImageLine() не годится, т.к. график получается ломаный, а нужен сглаженный как в Excel'е. 
Есть ли готовые классы или решения данной проблемы ? jpgraph не поддерживает рисование подобных графиков (вроде...)  smile  
PM MAIL   Вверх
skyboy
Дата 2.6.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Icaros, напиши класс, аппроксимирующий данные... скажем, кубическими сплайнами...Круто будет  smile  
PM MAIL   Вверх
Mal Hack
Дата 2.6.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Icaros @  2.6.2006,  13:25 Найти цитируемый пост)
т.к. график получается ломаный

Ты графики в консоли в Паскале или на Си или в Делфе на канве рисовал?
Надо интервал брать меньше и делать промежуточные вычисления. 
PM ICQ   Вверх
BobiKK
Дата 3.6.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: нет
Всего: 16



Может быть по сабжу: http://phpclub.ru/detail/article/dynamic_image 
PM MAIL   Вверх
skyboy
Дата 3.6.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Касательно сглаживания и "красивых" графиков:
http://alglib.sources.ru/interpolation/spline3.php 
PM MAIL   Вверх
Mal Hack
Дата 3.6.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



skyboy, интерполяция тут нафиг не нужна. Строить надо просто дифференцированно. 
PM ICQ   Вверх
skyboy
Дата 3.6.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Mal Hack, зависит от того, что у него "на руках" - функция или только точки. Из "Есть некое уравнение y=f(x). Решив его мы получим массив точек (x, y)" неясно(мне, по крайней мере), что же вопрошающий имеет - только набор точек или всё же может запрограммировать функцию. Впрочем, скорее всего, я просто сам придумываю трудности smile 
PM MAIL   Вверх
Icaros
Дата 3.6.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



Есть ограниченное число точек (например 10). К сожалению я не могу увеличить число точек, т.к. это вызовет рост времени выполнения скрипта. Скрипт и так долго вычисляет эти 10 значений.  

Это сообщение отредактировал(а) Icaros - 3.6.2006, 18:18
PM MAIL   Вверх
skyboy
Дата 3.6.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Icaros, что за функция? там параметры ограничены? может, стОит рассчитать разово и хранить результаты рассчёта в базе? Что за функция? 
PM MAIL   Вверх
Mal Hack
Дата 3.6.2006, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Если только точки, то надо все равно остальные добирать через интерполяцию.

Icaros, как говорит препод в универе, при уменьшении кол-ва итерационных прохождений, мы теряем характер функции (графика). 
PM ICQ   Вверх
Icaros
  Дата 8.6.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



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

Это сообщение отредактировал(а) Icaros - 8.6.2006, 14:04

Присоединённый файл ( Кол-во скачиваний: 36 )
Присоединённый файл  image.jpg 104,51 Kb
PM MAIL   Вверх
skyboy
Дата 8.6.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Icaros, какой метод использовал? Кста, это аппроксимация - при интерполяции график проходит через все заданные точки. 
PM MAIL   Вверх
Icaros
Дата 8.6.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.5.2006

Репутация: нет
Всего: нет



Использовал "Геометрическое сглаживание В-сплайнами", а посоветованный уважаемым skyboy метод "Интерполяция функции кубическими сплайнами" я не понял. 
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.