Дано: Задача: Найти функцию для графика задан 14 Ноя '13 22:00 Alex_QQ |
Для кусочно-линейной процедура такая. Дана точка $%x$%, и мы хотим вычислить значение функции в ней. Сначала надо узнать, между какими значениями списка находится $%x$%. Допустим, между 0,83 и 0,88. Значения в них равны 0,10 и 0,05. Составляем уравнение прямой, проходящей через точки (0,83;0,10) и (0,88;0,05). Угловой коэффициент $%k$% этой прямой равен $%(0,05-0,10)/(0,88-0,83)=-1$%. В общем случае, если речь о точках $%(x_1,y_1)$% и $%(x_2,y_2)$%, где $%x_1 < x_2$%, коэффициент находится по формуле $%k=(y_2-y_1)/(x_2-x_1)$%. Уравнение прямой будет иметь вид $%y=k(x-x_1)+y_1$%. В рассматриваемой примере это будет $%y=-x+0,93$% после упрощений. Тогда в точке $%x=0,86$%, расположенной между $%x_1=0,83$% и $%x_2=0,88$%, значение этой функции будет равно $%0,07$% в соответствии с формулой. Этот способ хорош тем, что вычисления достаточно простые. Но при этом надо искать местоположение точки в списке. Второй недостаток -- это то, что кусочно-линейная функция может не иметь производной в точках вида $%x_i$%. Если производные не нужны, то кусочно-линейная интерполяция вполне годится. Если желательна готовая аналитическая формула без поиска точки $%x$%, то можно взять за основу интерполяционный многочлен Лагранжа. Для него есть готовые формулы, и в него удобно подставлять числа. отвечен 15 Ноя '13 23:43 falcao to falcao Все работает. Большое спасибо. Как Вас отблагодарить?
(17 Ноя '13 15:12)
Alex_QQ
Если предложенный мной способ помог, то это само по себе уже хорошо. Если Вас устраивает ответ, то его можно принять, нажав на "галочку".
(17 Ноя '13 15:17)
falcao
|
Может я не совсем корректно сформулировал задачу. Точки строятся на пересечении координат... Первая точка X=0.93 Y=0.01; вторая - X=0.88 Y=0.05; и т.д. до точки семь с координатами X=0.5 Y=10. График строится от точки 1 к точке 7 через все точки. Интересует вычисление координаты X от переменной Y в диапазоне графика, точность два знака после запятой. отвечен 15 Ноя '13 1:39 Alex_QQ То, что точки строятся на пересечении координатных линий, это понятно. Но вот представьте теперь, что Вы нарисовали 7 точек, которые Вам даны. Через эти точки можно провести бесконечно много линий. Каждая из таких линий может быть графиком какой-то из функций. Поэтому в условии должны быть ограничения. Надо уточнить постановку задачи.
(15 Ноя '13 2:03)
falcao
В математической статистике есть такие задачи: расставить точки, определить при мерный вид кривой и методом наименьших квадратов определить коэффициенты этой кривой. Скорей всего эта задача, простая, но считать много
(15 Ноя '13 14:06)
epimkin
К сожалению не обладаю необходимыми знаниями для проведения расчетов. Формула нужна для вычисления значения X от значения Y в программе на Java. В принципе проблема решаема с применением логических функций, но получается много кода, что увеличивает время работы скрипта. Хотелось бы увидеть математическую формулу. Готов отблагодарить за труды материально.
(15 Ноя '13 15:51)
Alex_QQ
если что-то типа МНК, то можно посмотреть здесь: http://stackoverflow.com/questions/14608998/compute-least-squares-using-java
(15 Ноя '13 20:02)
vinger4
@Alex_QQ: здесь речь идёт не о методах решения, а о постановке задачи. Её ставите Вы, поэтому необходимые требования должны от Вас же и исходить. Если Вам подходит любая функция, принимающая заданные значения в указанных точках, то можно просто соединить точки графика отрезками, получив кусочно-линейную функцию. Если нужна дифференцируемая функция, то подойдёт интерполяционный многочлен Лагранжа. Формулу написать совсем нетрудно -- важно знать, какими свойствами должна обладать итоговая функция. Вы же не будете выбирать значения в других точках случайно?
(15 Ноя '13 20:21)
falcao
Да именно кусочно- линейная функция и достаточна.
(15 Ноя '13 20:31)
Alex_QQ
показано 5 из 6
показать еще 1
|
$$y =a_1x^{7} + a_2x^{6}+ a_3x^{5} + a_4x^{4} + a_5x^{3} + a_6x^{2} + a_7x$$ Все значения x и y известны. Имеем 7 уравнений с 7-ю неизвестными коэффициентами. Это один из способов выполнения задания, - возможно, не самый оптимальный. отвечен 15 Ноя '13 22:50 nikolaykruzh... Когда точек 7, достаточно многочлена 6-й степени. Ср. ситуацию, когда точек две и мы проводим через них прямую. Ей соответствует степень многочлена не выше первой.
(15 Ноя '13 23:31)
falcao
@nikolaykruzh..., Такая задача уже решена... называется интерполяционный многочлен Лагранжа или Ньютона... Потом его можно умножить на любую непрерывную функцию и получить бесконечно много функций с требуемыми свойствами...
(16 Ноя '13 1:05)
all_exist
@all_exist: если сам многочлен Лагранжа на что-то умножить, то ответ испортится. Видимо, Вы имели в виду, что к многочлену можно прибавить произведение любой функции $%f(x)$% на произведение $%(x-x_1)\ldots(x-x_n)$%.
(16 Ноя '13 7:34)
falcao
@all_exist, спасибо за информацию...@falcao, с замечанием согласен.
(16 Ноя '13 15:27)
nikolaykruzh...
|
Таких функций много -- можно провести через указанные точки бесконечно много графиков. Здесь должно какое-то ограничение присутствовать.