Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];

Вниз

Апроксимация графика функции.   Найти похожие ветки 

 
mashinist   (2001-11-28 00:46) [0]

Был тут один чел, предлагал разработку за 250$.Был еще один, предлагал вычислять параболу или уравнение 3 степени. Но всё это приблизительно.Как мне по 50 точкам вычислить функцию графика. Наверняка ведь есть алгоритмы.
Поможите, люди добрые !


 
SergVlad   (2001-11-28 01:24) [1]

Бог ты мой - да поищи в любой библиотеке
"Линейный регресионный анализ".
Этот сайт все же не по алгоритмам специализирован.

для y=F+K*Lg(x)

for i=1 to N
{ A=A+Lg(x[i]); B=B+Lg(x[i])^2;
C=C+y[i];
D=D+Y[i]*Lg(x[i]); }

E=N*B-A^2;
F=C*B-D*A;
K=N*D-A*C;
F=F/E;
K=K/E;


 
Builder   (2001-11-28 01:29) [2]

Поставленная задача очень напоминает пойди туда не знаю куда(не обижайся).

Если у тебя есть набор точек, и ты ничего не знаешь о том, по какому графику их получили, то функицю ты не востановишь(50 точек, а уравнение у тебя 50 степени - 51 параметр :(.

Поэтому тебе нужно сделать так, если все таки не знаешь хоть приблизительный вид своего графика - построить например то, что может быть (пусть уравнение 3 степени), посчитать, насколько оно близко к тем данным, что есть. Если точность не удовлетворяет, здать новое уравнение и т.д.

Вообще это нормальная математическая задача, в общем случае конечно не решается...


 
SergVlad   (2001-11-28 01:40) [3]

Такие задачи всегда решаются статистическими методами и
нормально решаются.
В предыдушей дискусии автор вопроса утверждал, что у него предположительно
логарифмическая функция, но это только его мнение.
Все зависит от точности измерений и требуемой точности аппроксимации.
Кому-то и линейная подойдет, а кому-то потребуется комбинация
логарифмической, полиномиальной и тригонометрической.


 
DK   (2001-11-28 01:46) [4]

Если заинтересует интерполяция методом Лагранжа (через многочлен), то могу скинуть исходник програмулинки на Паскале.


 
SergVlad   (2001-11-28 01:47) [5]

При чем здесь интерполяция ?
Еще кто-что умеет ?


 
DK   (2001-11-28 02:57) [6]

2SergVlad

Как раз при том. Почитай про этот метод и узнаешь


 
KS   (2001-11-28 08:23) [7]

>DK
Интерполяция (IMHO) здесь действительно "не совсем причем".
Ее задача - прогнать линию через все точки, т.е. и
через ошибочные, стоящие "не в строю". Аппроксимация же описывает процесс,
причем вовсе не обязательно, чтобы она проходила точно через точки.



 
Bizon   (2001-11-28 08:47) [8]

А почему бы с помощью рядов Фурье не попробывать?


 
Paul M. Olexenco   (2001-11-28 11:56) [9]

Был у меня однокурсник, он вычислял функцию по набору точек методом СПЛАЙНОВ. На этом был его диплом основан. Большего добавить не могу. Если найду свои конспекты скину в мыло, но это вряд ли после перезда в др. город :((


 
Paul M. Olexenco   (2001-11-28 12:00) [10]

В догонку
посмотри еще вот здесь

Практика
http://www.srcc.msu.su/num_anal/lib_na/cat/cat914.htm

Теория
http://tom.imm.uran.ru/~u1904/tom4/ste/ste.html


 
SergVlad   (2001-11-28 12:50) [11]

To DK
1. Почитай предыдущую дискусию с автором вопроса.
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1006543294&n=0

2.Не учи ученого. Когда я решал подобные задачи, в том числе и на бортовых
компьютерах, тебя еще в проекте не было.
Так, что имей уважение хотя бы молча выслушать поправки к твоему ответу
и обратись к соответствующей литературе.
И если уж заговорили о терминах, то грубо:

Интерполяция - это нахождение значения функции в промежутке между заданными точками.
Экстраполяция - нахождение значения функции за пределами заданных точек.
(тесно примыкает задача прогнозирования)
Аппроксимация (регресионный анализ) - нахождение аналитической функции
описывающей искомую с заданной точностью.
Первые две могут решаться на основе третьей.


 
ShaggyDoc   (2001-11-28 13:04) [12]

Вы все люди ученые, а мы темные. До сих пор решаю подобные дела (по-ученому апроксимация называется) с помощью допотопной программы Eureka (от того еще Borland, ровесница TP 3.0)

Оно конешно, только один раз, чтобы получить искомую формулу с заданной точностью. Получается очень хорошо. Особенно если по виду графика можно приблизительно определить функцию. Но если непонятно, то универсально решает полином. Составил таким образом все формулы для теплового расчета котельных агрегатов. А там графиков мульен. Или два, не помню точно.

Наверняка подобное есть и в современных математических пакетах. А алгоритмы паскалевские всякие в енту Эврику и зашиты, надоть думать.

Оно конешно темные мы, извиняйте.


 
olden   (2001-11-28 13:15) [13]

у меня исходники где-то валяются: :)
1) метод наименьших квадратов
2) метод куб. сплайнов


 
SergVlad   (2001-11-28 13:25) [14]

To ShaggyDoc
Речь шла о желании автора самому написать программу.
А в остальном Вы совершенно правы. И я той Эврикой пользовался очень
продуктивно.
Сегодня MathLab решает многие мыслимые и немыслимые задачи.
Вот зачем только язык свой родной коверкать.


 
Fellomena   (2001-11-28 15:01) [15]

Хм... можно это сделать в MathCad-e, у меня достаточно прилично апроксимирует небольшое кол-во
точек полиномом в степени (максимальная степень полинома вроде бы 9 в MAthCad-e но точно не уверена), а вообще - любую функцию с любой точностью
можно апроксимировать полиномом со степенью.


 
Relaxoid   (2001-11-28 15:10) [16]

Метод Ньютона - интерполяция функции!!!!!!!!!!!!!!


 
SergVlad   (2001-11-28 16:39) [17]

Так, треп входит в полноводное русло.
To Fellomena
А ты попробуй синусоидальную функцию (а ведь могу еще и не такое вспомнить)
на протяжении хоты бы десяти периодов аппроксимировать полиномом.


 
Fellomena   (2001-11-30 16:03) [18]

2 SergVlad: хех..., "забавны мне ваши слова, папаша", - зачем синусоиду апроксимировать, если и так видно, что это синусоида ?


 
KIR   (2001-11-30 16:32) [19]

Раз здесь все отцы-математики собрались, может кто знает, как обернуть матрицу размерностью 500*500 меньше, чем за минуту? Или где взять библиотеку, которая это делает?


 
SergVlad   (2001-11-30 16:33) [20]

Милая малышка - это ты предложила "ЛЮБУЮ ФУНКЦИЮ.." - вот тебе и указали.


 
Alx2   (2001-12-03 07:47) [21]

>SergVlad © А ты попробуй синусоидальную функцию на протяжении
>хоты бы десяти периодов аппроксимировать полиномом.
Элементарно. Ряд Тейлора спасет отца русской демократии. Лишь бы исходная функция достаточно гладкой была. Доказательства - в учебниках мат. анализа.
А вот аппроксимация разрывных ф-й - дело тонкое.
Вообще, уже начинается треп....


 
Alx2   (2001-12-03 08:03) [22]

2 mashinist:
Если лениво строить функциональную зависимость "вручную" (построить, например, математическую модель порождающего исследуемую зависимость процесса и получить из нее явный вид твоей функции с некоторым набором констант, которые, в свою очередь, можно определить исходя из реальных данных (например, как в решении дифф. уравнениий)), то можно взять нейросеть и нашпиговать ее этими данными. И нехай она сама строит нужную зависимость. Причем знать, что нейросеть построила не обязательно. Достаточно убедиться в том, что она согласуется с реальными данными.
Про нейросети и софт к ним см. на www.basegroup.ru


 
SergVlad   (2001-12-03 08:58) [23]

Ну, понятно - нажать кнопку и попросить.
Эх, кодировщики..


 
Alx2   (2001-12-03 09:08) [24]

А не кажется Вам, что такое возражение сильно напоминает расхожее в некоторых кругах мнение, которое можно выразить так "Кругом одни компьютеры. Скоро совсем думать разучатся!".
Грамотно обучить нейросеть - не так просто, как может показаться.


 
SergVlad   (2001-12-03 09:22) [25]

А уже разучились - и сомнений нет.
Народ все больше скатывается к визуальной кодировке, а не изучению
методов решения.
Ну давайте сообща купим нейро-сетевую программу финансово-экономического-управленческого анализа и попросим ее найти выход из кризиса для России.


 
Alx2   (2001-12-03 09:39) [26]

2 SergVlad ©
На более или менее серьезной задаче, требующей продуманного подхода и хороших знаний математики, теории алгоритмов и архитектуры компьютера (например, хотя-бы написать СИЛЬНУЮ прогу для игры в те же шашки), чистый visualcoder сядет в лужу. Само собой. А знания к человеку приходят по мере нужды в них. Зачем знать вариационное исчисление для программирования какой-нибудь тривиальной записной книжки?
>Ну давайте сообща купим нейро-сетевую программу финансово-экономического->управленческого анализа и попросим ее найти выход из кризиса для России.
А на чьем примере ее обучат? На автопилоте? Тогда, пока выработается правильная стратегия, некого станет выводить из кризиса. IMHO


 
SergVlad   (2001-12-03 09:49) [27]

Эта ветка - продолжение вот этой.
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1006543294&n=0
Почитай и поймешь,может быть, что хотел автор вопроса.
Только нейросети здесь не помогут и для него это еще
большая абстракция.
Действительно, не обязательно самому знать вариационное исчисление -
это можно и нужно доверить профи.


 
Rem   (2001-12-03 10:00) [28]

Можно так:
1. Сделать предположение о типе функции: линейная, парабола, гипербола...
2. Высчитать коэффициенты для предполагаемой функции (например, так как предложил SergVlad © (28.11.01 01:24)).
3. Высчитать отклонение полученной функции от заданных точек.
4. Определить достоверность предположения (см. п. 1) по критериям Стьюдента, Колмогорова...
5. Если критерии говорят, что предположение неверное, сделать новое, и повторить п.п. 2-5.

P.S. При этом, конечно, необходимо обеспечить п. 2 для довольно большого количества функций.

P.P.S. Вопросы по численным методам на форуме не решить. Надо брать кучу книг и тщательно прорабатывать...


 
Mystic   (2001-12-03 10:02) [29]

>KIR
Советую обратиться к книге "Спраочник иалгоритмов на алголе. Линейная алгебра". Один из авторов Райс. Тут очень много зависит от вида матрицы, если она положительно определенная или тем-более ленточная, то можно сильно ускорить процесс решения. В общем случае я не думаю, что вычисление ее методом Гаусса займет больше минуты

>mashinist
1. Функций, проходящих через твои 50 точек, бесконечность. Какую из них выбрать?
2. Суть аппроксимации состоит в том, что все множество функций сужается до некоторого набора, из которого выбирается "наилучшая" в некотором смысле функция - задача оптимизации. Этот набор задается эвристически (на основании волевого решения лица, решающего задачу). Если функция ведет себя совсем уж ни в тын, ни в ворота (ни одна из знакомых функций не ведет себя подобным образом), тогда, как советовали, построй либо обычную нейронную, либо RBF-сеть.



 
MAX314   (2001-12-03 10:39) [30]

Моя бы рекомендовал сходить для начала в обычную библиотеку :)
и поискать subj тама, хотябы для того чтобы понять о чем говорили
люди ниже, а уж затем, в к примеру в яндексе, набрать "какуюже_ интерполяцию_моя_хочу"
просто поытки прояснить в 5-10 строка "небольшой" раздел иатематики,как мы сами убедились выше, ни к чему хорошему не приводят :(


 
SergVlad   (2001-12-03 10:48) [31]

Согласен, завязываем.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.004 c
3-90238
Sergey Karagodin
2001-12-21 22:19
2002.01.28
Куда выводить результат запросов?


7-90395
GhostK
2001-10-16 08:15
2002.01.28
Как это сделать???


1-90325
Ghost!
2002-01-11 18:40
2002.01.28
Деление String


14-90379
Pat
2001-11-24 18:05
2002.01.28
AutoRun для дисковода...


3-90203
Andrey196
2001-12-23 19:49
2002.01.28
Помогите!!! :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский