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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Le0nardo
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 4
#1

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

07.04.2012, 01:34. Просмотров 2387. Ответов 4
Метки нет (Все метки)

Разработка программы приближения функций с возможностью работы с файлами (запись и считывания функций) и результатов решения. Очень нужна помощь, надеюсь на вас гении программирования
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2012, 01:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Приближение функций сплайнами (C++):

Интерполяция полиномиальными сплайнами - C++
Помогите, нужно написать программу на С++, которая запрашивая степень полинома и точки, будет строить сплайн интерполяцию

Аппроксимация кривых и поверхностей сплайнами - C++
Помогите пожалуйста...не было даже лекции по теме сплайнов....я в замешательстве...я не смогу реализовать такую сложную программу... 1)...

Приближение функции многочленом Лагранжа - C++
Всем привет, нужно написать программу, которая вычисляет приближение функции многочленом Лагранжа. Все реализовал, но возникла непонятка...

Приближение к современным технологиям программирования - C++
Доброго времени суток форумчане. Немного истории: не так давно мой одногруппник начал изучать Java после C++. Знания C++ были примерно...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Передача значений функций в главную программу, вызов функций - C++
Здравствуйте! Скорее всего, неправильно передаю значения функциям и в главную программу. Помогите найти ошибку! В итоге выводит...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
07.04.2012, 01:41 #2
С чем конкретная проблемма? Если с самими сплайнами, то можешь почитать вот тут:
http://alglib.sources.ru/interpolation/spline3.php
+ к этому есть хорошый сплайн, у которого первая производная непрерывна, и согласуется со значениями производной на краях интервала, но там надо решать СЛАР
1
Le0nardo
0 / 0 / 0
Регистрация: 07.04.2012
Сообщений: 4
07.04.2012, 01:46  [ТС] #3
Цитата Сообщение от UFO94 Посмотреть сообщение
С чем конкретная проблемма? Если с самими сплайнами, то можешь почитать вот тут:
http://alglib.sources.ru/interpolation/spline3.php
+ к этому есть хорошый сплайн, у которого первая производная непрерывна, и согласуется со значениями производной на краях интервала, но там надо решать СЛАР
Проблема в том что я не знаю как написать саму программу. А за инфу о сплайнах спасибо
0
UFO94
264 / 253 / 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++.
1
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++.
Огромное спасибо, буду разбираться
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2012, 12:45
Привет! Вот еще темы с ответами:

Вызов функций внутри других функций - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; using namespace std; ...

Объявление функций внутри других функций - C++
Иногда вижу в некоторых исходниках на c объявление функций, внутри main. Например: main(){ double sum(int max_num); } ...

функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д. - C++
функции класса раздела private реализуються так же как и раздела public? в смысле виртуальных функций, дружественных функций, и т.д.

Перегрузка функций. Реализация функций - C++
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее помощью значение выражения z= f(a) +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.04.2012, 12:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru