Форум программистов, компьютерный форум CyberForum.ru

Приближение функций сплайнами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Le0nardo
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 4
07.04.2012, 01:34     Приближение функций сплайнами #1
Разработка программы приближения функций с возможностью работы с файлами (запись и считывания функций) и результатов решения. Очень нужна помощь, надеюсь на вас гении программирования
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2012, 01:34     Приближение функций сплайнами
Посмотрите здесь:

функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д. C++
Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h C++
C++ Объявление функций внутри других функций
C++ Использование функций и шаблонов функций
C++ Перегрузка функций. Реализация функций
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
07.04.2012, 01:41     Приближение функций сплайнами #2
С чем конкретная проблемма? Если с самими сплайнами, то можешь почитать вот тут:
http://alglib.sources.ru/interpolation/spline3.php
+ к этому есть хорошый сплайн, у которого первая производная непрерывна, и согласуется со значениями производной на краях интервала, но там надо решать СЛАР
Le0nardo
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 4
07.04.2012, 01:46  [ТС]     Приближение функций сплайнами #3
Цитата Сообщение от UFO94 Посмотреть сообщение
С чем конкретная проблемма? Если с самими сплайнами, то можешь почитать вот тут:
http://alglib.sources.ru/interpolation/spline3.php
+ к этому есть хорошый сплайн, у которого первая производная непрерывна, и согласуется со значениями производной на краях интервала, но там надо решать СЛАР
Проблема в том что я не знаю как написать саму программу. А за инфу о сплайнах спасибо
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
07.04.2012, 10:36     Приближение функций сплайнами #4
Смотри: у тебя есть функция float f(float x); допустим, тебе надо сжедать интерполяцию на промежутке [a;b]. Точность должна быть равна tolerance.
1) Найдем шаг сетки разбиения для кубического сплайна. Его точность пропорциональна h3, потому h=http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt[3]{tolerance} Тогда количество точек разбиения int n=((b-a)/h)+1
1) Сделаем разбиение:
C++
1
2
3
4
5
6
7
float* xtab=new float[n];
float* ytab=new float[n];
for(int i=0; i<n; i++)
{
xtab[i]=a+i*h;
ytab[i]=f(xtab[i]);
}
3) Теперь используем саму интерполяцию. Сплайны кубические, потому нам понадобится массив (4 на n-1)//по 4 коэфициента на каждый из n-1 сплайна
Найдем 1 и 2 производную в точке a. Любым из численных методов дифференцирования. Из четырех условий (известная 1 и 2-я производная в т. a, и сплайн проходит через точки (a,f(a)), (a+h,f(a+h))) найдем коэфициенты -- т.е. сплайн на первом куске есть. Находим от него 1 и 2производную в точке a+h. И используем их для нахождения сплайна на втором куске. И т.д.
Будут какие-то вопросы -- обращайся. А, и еще, на VC я не писал, но думаю, что основная часть кода не должна отличаться от C++.
Le0nardo
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 4
07.04.2012, 12:45  [ТС]     Приближение функций сплайнами #5
Цитата Сообщение от UFO94 Посмотреть сообщение
Смотри: у тебя есть функция float f(float x); допустим, тебе надо сжедать интерполяцию на промежутке [a;b]. Точность должна быть равна tolerance.
1) Найдем шаг сетки разбиения для кубического сплайна. Его точность пропорциональна h3, потому h=http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt[3]{tolerance} Тогда количество точек разбиения int n=((b-a)/h)+1
1) Сделаем разбиение:
C++
1
2
3
4
5
6
7
float* xtab=new float[n];
float* ytab=new float[n];
for(int i=0; i<n; i++)
{
xtab[i]=a+i*h;
ytab[i]=f(xtab[i]);
}
3) Теперь используем саму интерполяцию. Сплайны кубические, потому нам понадобится массив (4 на n-1)//по 4 коэфициента на каждый из n-1 сплайна
Найдем 1 и 2 производную в точке a. Любым из численных методов дифференцирования. Из четырех условий (известная 1 и 2-я производная в т. a, и сплайн проходит через точки (a,f(a)), (a+h,f(a+h))) найдем коэфициенты -- т.е. сплайн на первом куске есть. Находим от него 1 и 2производную в точке a+h. И используем их для нахождения сплайна на втором куске. И т.д.
Будут какие-то вопросы -- обращайся. А, и еще, на VC я не писал, но думаю, что основная часть кода не должна отличаться от C++.
Огромное спасибо, буду разбираться
Yandex
Объявления
07.04.2012, 12:45     Приближение функций сплайнами
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru