Dzień dobry.

Jeżeli to nie sprawi zbyt dużego kłopotu, chciałbym prosić o pomoc z programem napisanym w C++, dotyczącym interpolacji.

Program w trzech miejscach musi dokonać interpolacji (dowolną metodą) - na krzywej złożonej z podanych punktów (x,y) musi znaleźć nowe punkty x, odpowiadające podanym nowym wartościom y. Konkretnie - dane są początkowe zbiory punktów y1(x1), y2(x2), y3(x3) i y4(x4). Program ma za zadanie najpierw znaleźć nowe wartości x2(y1) i x4(y3) (ale wciąż leżące na tej samej krzywej y2 i y4 ) a w późniejszym etapie dokonać czynności odwrotnej - znaleźć nowe wartości y od nowych x, ale wciąż leżących na tej samej krzywej.

Problem mógłby wydawać się prosty, jednak po wielu próbach wciąż nie udało mi się go rozwiązać - pomimo wykorzystania kilku różnych konfiguracji, uzyskane krzywe albo zbytnio uciekają z wartościami "w dół", albo np. krzywa y2 przyjmuje kształt y1 i tak dalej. Próbowałem wprowadzać własne funkcje interpolujące metodą liniową i funkcjami sklejanymi, ale najwyraźniej zostały one źle napisane, skoro dają niepoprawne wyniki - nie jestem jednak w stanie stwierdzić, gdzie popełniam błąd. Próbowałem również szukać gotowych bibliotek, jednak ze względu na swoje niskie umiejętności programowania, nie byłem w stanie ich nawet zastosować (np. z http://www.eol.ucar.edu/homes/granger/bspline/doc/ ).

W załączonym pliku .rar znajduje się, oprócz programu, wzorcowy zbiór punktów (wynikowy powinien różnić się jedynie w niewielkim stopniu).

Bardzo przepraszam za kłopot oraz od razu dziękuję za wszelką pomoc, sugestie i poświęcony mi czas.