Перейти к содержанию
    

Придумал алгоритм интерполяции. Протестируем результаты?

А выложите вашу реализацию, если вам не трудно, интересно посмотреть. Хоть в мой матлабовский код впишите третьим вариантом. Я вывел свой вышепредставленный алгоритм из другой математической модели, нежели стандартная постановка задачи построения полинома по 4 точкам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А выложите вашу реализацию, если вам не трудно, интересно посмотреть. Хоть в мой матлабовский код впишите третьим вариантом. Я вывел свой вышепредставленный алгоритм из другой математической модели, нежели стандартная постановка задачи построения полинома по 4 точкам.

Я когда то его уже выкладывал.Переделывать на скрипт нет желания,берите уж какой есть.

post-18832-1383984193_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, взял как есть, сам вделал в скрипт. Признаться, я думал что ранее приведенная мной реализация Фарроу уже оптимизирована по количеству операций и даже не задумывался о том, что ее можно еще упростить. В результате я своим методом выиграл только один сдвиг.

 

clf reset
N = 10; x = 1:N; y = rand(1, N); h = 0.01; d = 0;
plot(x, y, 'or', 'LineWidth', 2); hold on; grid on; axis on;
title(['Локальная интерполяция случайного набора точек', ...
' полиномом Лагранжа 3 степени, 2 алгоритма расчета.']);
plot(x(1), y(1), 'b-', x(1), y(1), 'g:');
legend('точки', 'мой алгоритм', 'Фарроу по Anatoliy');
for k = 1:(N-2)
   % мой алгоритм: 1 умножение, 1 сдвиг, 6 сложений
   c = d; e = y(k+1) - y(k); d = y(k+2) - y(k+1) - e;
   b2 = c/2; b3 = (d - c)/6; b1 = e - b2 - b3;

   if (k == 1) continue; end
   t = 0:h:1; f = b3.*t.^3 + b2.*t.^2 + b1.*t + y(k);
   plot(t+x(k), f, 'b-')

   % Фарроу по _Anatoliy: 1 умножение, 2 сдвига, 6 сложений       
   p = y(k) - y(k+1); q = (y(k+2) - y(k))/2;
   a3 = ( (y(k+2) - y(k-1))/3 + p )/2;
   a2 = p + q; a1 = q - a3;

   t = -1:h:0; f = a3.*t.^3 + a2.*t.^2 + a1.*t + y(k+1);
   plot(t+1+x(k), f, 'g:')
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага,у меня тоже меньше 6-ти сложений не получилось,видимо предел.
Оказывается, не предел ) На досуге подумал, получил 5 сложений, 1 умножение и 1 сдвиг.

clf reset
N = 10; x = 1:N; y = rand(1, N);
h = 0.01; g = y(3) - y(2); d = g - y(2) + y(1);
plot(x, y, 'or', 'LineWidth', 2); hold on; grid on; axis on;
title(['Локальная интерполяция случайного набора точек', ...
' полиномом Лагранжа 3 степени, 2 алгоритма расчета.']);
plot(x(1), y(1), 'b-', x(1), y(1), 'g:');
legend('точки', 'мой алгоритм', 'Фарроу по Anatoliy');
for k = 2:(N-2)
   % мой алгоритм: 1 умножение, 1 сдвиг, 5 сложений
   c = d; e = g; g = y(k+2) - y(k+1); d = g - e;
   b2 = c/2; b3 = (d - c)/6; b1 = e - b2 - b3;
   t = 0:h:1; f = b3.*t.^3 + b2.*t.^2 + b1.*t + y(k);
   plot(t+x(k), f, 'b-')

   % Фарроу по _Anatoliy: 1 умножение, 2 сдвига, 6 сложений       
   p = y(k) - y(k+1); q = (y(k+2) - y(k))/2;
   a3 = ( (y(k+2) - y(k-1))/3 + p )/2;
   a2 = p + q; a1 = q - a3;

   t = -1:h:0; f = a3.*t.^3 + a2.*t.^2 + a1.*t + y(k+1);
   plot(t+1+x(k), f, 'g:')
end

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оказывается, не предел ) На досуге подумал, получил 5 сложений, 1 умножение и 1 сдвиг.

Только для чего всё это? Я,например,не собирался реализовывать свой вариант в FPGA,баловство это.Делал просто чтоб молодость вспомнить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как, спорт, например )... Или вы к тому, чтобы я занялся делом, а не выводил пяти...пых обезьян, как герой мультфильма Саус Парк? На сайте Бахурина лежит "оптимизированный алгоритм", вы его еще оптимизировали на 2 сложения, я на 3 сложения и сдвиг... И никому не интересны эти результаты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как, спорт, например )... Или вы к тому, чтобы я занялся делом, а не выводил пяти...пых обезьян, как герой мультфильма Саус Парк?

Мне то какое дело чем вы занимаетесь.Просто я хронический практик, и убеждён что практической выгоды от применения подобных реализаций нет.

 

И никому не интересны эти результаты?

А насчёт результатов не торопитесь,пусть народ посмотрит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо вам, _Anatoliy, искренне. За представленную ранее собственную оптимизацию, за высланную давно статью, за честность ваших оценок и за приятное общение. Независимо от мнений "посмотревшего народа" или их отсутствия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо вам, _Anatoliy, искренне. За представленную ранее собственную оптимизацию, за высланную давно статью, за честность ваших оценок и за приятное общение. Независимо от мнений "посмотревшего народа" или их отсутствия.

Да не за что.Всегда пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Топикстартер, выложите, пожалуйста, Вашу статью ещё раз. По той ссылке уже не забрать. Может, её просто прикрепить к сообщению на форуме?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наткнулся на статью нашего ... топикстартера. :rolleyes:

https://habrahabr.ru/post/282441/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...