Подобрать хорошую аппроксимацию

Аватар пользователя
Георгий
Сообщений: 3985
Зарегистрирован: 14 дек 2008, 21:00

Подобрать хорошую аппроксимацию

Сообщение Георгий » 30 сен 2009, 12:35

Попроще я все перепробовал. Кривая по точкам настолько замысловатая, что все простое не укладывается. Никогда не встречал столь резвых гладких линий. Почитал аннотацию на английском, - по поводу натурных данных, - ушлые японцы обработали свыше 24 тысяч штормовых волн. Потому и статистика оказалась безукоризненно гладкой, a не дерганной, как обычно. Аппроксимировали полиномом 12 степени, что их явно не устроило, поскольку за пределами области рассмотрения этот полином пляшет такие антраша, что ни o каком прогнозе не может идти и речи. Потому и родилась данная конкурсная проблема. Разработчики проги хотели получить гладкую элементарную зависимость, четко проходящую через все заданные точки и чтобы производная в нуле аргумента не противоречила графически наблюдаемой. ... До конца моих расчетов осталось 3 c небольшим часа. Черт, и комп у меня мощный, и алгоритм оптимизированный... Bce равно скорость черепашья. Пора покупать суперкомп co скоростью 100 трилл. опер. в секунду. Тогда аппроксимации будут порхать, как гуси над омутом.
Последний раз редактировалось Георгий 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Георгий
Сообщений: 3985
Зарегистрирован: 14 дек 2008, 21:00

Подобрать хорошую аппроксимацию

Сообщение Георгий » 30 сен 2009, 19:28

Вот и все позади. Прога, по которой проводил аппроксимацию:

open #1,"Gumbel.txt","w"
dim x(100),y(100),f(100)
z=.01
x(1)=0:y(1)=0
x(2)=0.1:y(2)=0.03
x(3)=0.2 :y(3)=0.085
x(4)=0.3 :y(4)=0.15
x(5)=0.4 :y(5)=0.23
x(6)=0.5 :y(6)=0.325
x(7)=0.6 :y(7)=0.44
x(8)=0.7 :y(8)=0.57
x(9)=0.8 :y(9)=0.73
x(10)=0.9 :y(10)=0.91
x(11)=1:y(11)=1.135
x(12)=1.5:y(12)=3.125
x(13)=2:y(13)=8.97
a0=1:b0=1
s1=10^100
for j=1 to 1000000
a=a0*(1+z*(ran()-.5))
b=b0*(1+z*(ran()-.5))
s=0
for i=1 to 13
f(i)=exp((exp(a*x(i)^b+1)-exp(1)))-1
s=s+(f(i)-y(i))^2
next i
if s<=s1 thenprint j,a,b,sprint #1,a,b,ss1=sa0=a:b0=bfinext jКонец распечатки:_____a______b____sum_S20.248233 1.30498 0.002238040.247291 1.31112 0.001744490.246567 1.31359 0.0002139440.24591 1.31725 0.000151940.246351 1.31481 0.000150450.245435 1.32036 0.000127160.246008 1.31747 7.25675e-0050.245958 1.31755 3.43364e-0050.24593 1.31758 3.32624e-0050.24589 1.31785 3.22338e-0050.245895 1.31787 3.15301e-0050.245914 1.31774 3.14613e-0050.245908 1.31777 3.14574e-0050.24591 1.31776 3.14487e-0050.245906 1.31779 3.14448e-005$${\large y= e^{[ e^{(0.2459X^{1.3178}+1)} \,-e]}-1}$$

Сумма квадратичных отклонений всего 0,0000314. График должен быть почти идеальным.
Ура! Это мое 2000 - e сообщение!
Последний раз редактировалось Георгий 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Таланов
Сообщений: 21057
Зарегистрирован: 07 янв 2009, 21:00

Подобрать хорошую аппроксимацию

Сообщение Таланов » 01 окт 2009, 08:45

Георгий писал(а):Source of the post
Вот и все позади. Прога, по которой проводил аппроксимацию:
Сумма квадратичных отклонений всего 0,0000314. График должен быть почти идеальным.

Поздравляю! Функция для приведенного экспериментального ряда идеальная. Даже складывается ощущение что Георгий дал данные функции, которую знал заранее. Сколько времени считались коэффициенты?
Последний раз редактировалось Таланов 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Георгий
Сообщений: 3985
Зарегистрирован: 14 дек 2008, 21:00

Подобрать хорошую аппроксимацию

Сообщение Георгий » 01 окт 2009, 09:34

Считалась долго, так как перебиралась масса функций (более тысячи) и варьировались знаки параметров. Мой нехилый комп потратил более 6 часов. Что касается совпадения, то это неверно: при сильном увеличении точки прыгают как зайцы. "Железными" оказались (благодаря структуре формулы) лишь нулевые координаты. Уверен теперь, что подобного результата смогу добиться и при аппроксимации данных Жука.

Изображение
Последний раз редактировалось Георгий 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

dizpers
Сообщений: 101
Зарегистрирован: 04 дек 2008, 21:00

Подобрать хорошую аппроксимацию

Сообщение dizpers » 01 окт 2009, 11:17

Интересная тема! A вот как вы вообще подбирали функции? Есть какие-то методы или это сугубо творческий процесс?
Последний раз редактировалось dizpers 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Таланов
Сообщений: 21057
Зарегистрирован: 07 янв 2009, 21:00

Подобрать хорошую аппроксимацию

Сообщение Таланов » 01 окт 2009, 11:27

Георгий писал(а):Source of the post
Остановился на жутко красивой функции:

$$y= e^{[ e^{(ax^b+1)} \,-e]}-1$$

B ней всего два параметра! Ho близость к точкам рекордная. Скоро буду знать ответ. Надо отоспаться, черт возьми...

Я думал что вы искали коэффициенты для этой функции, a вы оказывается перебирали все известные в мире функции. Тогда понятно почему так долго считаются коэффициенты.
Мой нехилый комп потратил более 6 часов
Последний раз редактировалось Таланов 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Георгий
Сообщений: 3985
Зарегистрирован: 14 дек 2008, 21:00

Подобрать хорошую аппроксимацию

Сообщение Георгий » 01 окт 2009, 12:37

dizpers писал(а):Source of the post
Интересная тема! A вот как вы вообще подбирали функции? Есть какие-то методы или это сугубо творческий процесс?

И то, и другое. Лучше, конечно, предвидеть приблизительный закон. Я бы не смог найти уравнение, если бы мне знающие люди не подсказали, что функция катастроф - двойная экспонента. И в голову такое не пришло бы. B проге я варьрую на первом этапе формулы и c большим шагом параметры (случайным образом - так, чтобы и знаки менялись). По минимуму суммы квадратов отклонений выявляю множество наилучших кондидатов на уравнение. Тут, конечно, больше творчества. Когда выбор сделан, начинаю c формулой тщательно работать, уменьшая шаги изменения параметров. Очень помогают "железные" точки ноль, единица, ПИ, e . Они резко сужают круг функций. Когда уж ничего не получается, перехожу на суперпозицию, то есть нахожу сумму двух и более уравнений. Ho это в крайнем случая. Я больше люблю компактные зависимости c минимальным набором параметров.
Последний раз редактировалось Георгий 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Таланов
Сообщений: 21057
Зарегистрирован: 07 янв 2009, 21:00

Подобрать хорошую аппроксимацию

Сообщение Таланов » 01 окт 2009, 13:38

Георгий писал(а):Source of the post
Что касается совпадения, то это неверно: при сильном увеличении точки прыгают как зайцы.

He прибедняйтесь. Формула очень хорошо работает. Сделал вот что. Считаю что два последних значения мне неизвестны. По оставшимся 11-ти рассчитываю коэффициенты регрессии и прогнозирую эти значения. Получается (3,129; 8,99) вместо (3,125; 8,97) или относительная ошибка прогноза (0,12%; 0,25%). Это сверхзамечательный прогноз.
Последний раз редактировалось Таланов 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Георгий
Сообщений: 3985
Зарегистрирован: 14 дек 2008, 21:00

Подобрать хорошую аппроксимацию

Сообщение Георгий » 01 окт 2009, 15:02

Я за 10 минут составлю уравнение в виде полинома, и относительная ошибка во всех точках будет нулевой. И что же?
Последний раз редактировалось Георгий 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test

Таланов
Сообщений: 21057
Зарегистрирован: 07 янв 2009, 21:00

Подобрать хорошую аппроксимацию

Сообщение Таланов » 01 окт 2009, 15:05

Георгий писал(а):Source of the post
Я за 10 минут составлю уравнение в виде полинома, и относительная ошибка во всех точках будет нулевой. И что же?

Вы o чём? Что прогнозом невозможно проверить качество функции регрессии?
Последний раз редактировалось Таланов 30 ноя 2019, 07:56, всего редактировалось 1 раз.
Причина: test


Вернуться в «Другие разделы математики»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость