Интерполяционные сплайны на прямоугольных сетках - Математика курсовая работа

Интерполяционные сплайны на прямоугольных сетках - Математика курсовая работа




































Главная

Математика
Интерполяционные сплайны на прямоугольных сетках

Теория приближений как раздел математики, изучающий вопрос о возможности приближенного представления математических объектов. Построение интерполяционного многочлена. Приближение кусочно-полиномиальными функциями. Алгоритм программы и ее реализация.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.


математика интерполяционный программа многочлен
Теория приближений -- раздел математики, изучающий вопрос о возможности приближенного представления одних математических объектов другими, как правило, более простой природы, а также вопросы об оценках вносимой при этом погрешности. Значительная часть теории приближения относится к приближению одних функций другими, однако есть и результаты, относящиеся к абстрактным векторным или топологическим пространствам.
Теория приближений активно используется при построении численных алгоритмов, а также при сжатии информации.
В вычислительной математике существенную роль играет интерполяция функций. Она представляет собой один из простых и старейших способов восстановления неизвестной функции на некотором множестве по набору известных значений в отдельных точках этого множества. Для нахождения многих функций, оказывается, эффективно приблизить их алгебраическими многочленами. Наиболее известная интерполяционная формула была открыта Лагранжем в 1975 г. В Scopus опубликовано немало работ связанных с полиномом Лагранжа (см. [1], [2], [3]).
1. Построение интерполяционного многочлена из пространства
Дана функция f ( x , y ) , необходимо найти интерполяционный многочлен и найти точность приближения.
Общая формула интерполяционного многочлена Лагранжа p ( x , y ) ? , имеет вид
На квадрате Q [0;1] 2 строятся узлы . D = dim =( m +1)( n +1) - минимально число узлов интерполяции, гарантирующее единственное решение задачи.
Ось X - на отрезке [0;1] делится на m равных отрезков,
Ось Y - на отрезке [1;0] делится на n равных отрезков, а точки пересечения и будут узлами интерполяции.
- узлы сетки, получающиеся при разбиении координатных сторон квадрата.
Пусть f ? C ( Q ), Задача интерполяции заключается в нахождении такого многочлена p ? , для которого
Решение задачи (1) дается следующим аналогом формулы Лагранжа. Положим
принадлежит . Тогда для нахождения точности разделим отрезок [0;1] и [1;0] на 1000 (к примеру, можно делить на большее число, чем больше число, тем больше вероятность достигнуть наилучшей точности) равных по длине отрезков. Получим по x и y 1000 новых точек равноудаленных друг от друга. Тогда нахождение точности сводится к формуле
2. Приближение кусочно-полиномиальными функциями
Пусть функция задана на единичном квадрате . Обозначим через р разбиение этого квадрата на прямоугольники, стороны которых параллельны сторонам квадрата. Кроме того, если все прямоугольники равны между собой и длины их сторон в направлениях осей равны и , то такое разбиение будем обозначать . Наконец, в случае (разбиение на будет просто писать ). В дальнейшем, говоря о прямоугольниках из разбиения р , мы будем исключать их верхние и правые границы, если они не совпадают с границей единичного квадрата. Таким образом, прямоугольники из разбиения р не пересекаются, и их объединение дает единичный квадрат.
Введем теперь множество р) кусочно-полиномиальных функций степени ( m , n ) , подчинённых разбиению р . Каждая функция из этого множества на прямоугольнике из разбиения р совпадает с некоторым многочленом p из пространства .
Рассмотрим вопрос о нахождении кусочно-полиномиальной функции g * наилучшего приближения. Такая функция определяется соотношением
Теоретически вопрос решается следующим образом. Нужно на каждом прямоугольнике из разбиения р построить для функции f многочлен наилучшего приближения из пространства . Но так как эта задача является весьма сложной, то в моей работе я использую интерполяционный многочлен Лагранжа для приближения данной функции (построение интерполяционного многочлена рассматривалось ранее в данной работе). Таким образом, если разбиение р заранее задано, то нетрудно построить кусочно-полиномиальную функцию, которая дает приближение почти как наилучшая.
Перейдя к более сложной ситуации, когда разбиение заранее не задано: при этом нужно найти кусочно-полиномиальную функцию, приближающую заданную функцию, c точностью е . Разбиение, которому будет подчинена кусочно-полиномиальная функция, зависит и от функции , и от точности е . Такой процесс приближения называется адаптивным , так как разбиение подстраивается под характер особенностей функции. В частности, если у функции нет особенностей, то разбиение будет состоять из почти равных прямоугольников. Ниже будет рассмотрен один из таких алгоритмов.
Уточним постановку задачи. На квадрате задана непрерывная функция : кроме того, заданы числа и е>0 . Нужно построить такое разбиение единичного квадрата р= р( ) , что
3. Описание алгоритма программы и примеры её реализации
На квадрате построим интерполяционный многочлен из пространства и найдем погрешность приближения. Если погрешность меньше , то искомая функция. В этом случае разбиение р состоит из единственного квадрата . Пусть погрешность приближения (т.е. ) больше . Разделим квадрат на четыре равных квадрата:
На каждом из этих квадратов построим интерполяционный многочлен ( i , j =0,1) . Вычислим погрешности:
Возможны две ситуации: и . Если хотя бы один из квадратов удовлетворяет второй ситуации, то все квадраты подвергаются дальнейшему делению на четыре равных квадрата, и весь описанный процесс повторяется. Если все квадраты удовлетворяют первому условию, то процесс достижения точность завершается.
Здесь приведен пример, когда многочлен , то есть состоит из одних констант. Многочлен здесь красного цвета, а сама функция зеленого. При уменьшении точности количество квадратов будет расти, а соответственно и число многочленов:
Далее рассмотрим пример, когда меняется не точность, а степени многочлена:
При увеличении степеней многочлена видно, что многочлен всё сильнее приближается к исходной функции.
Интерполирование функций довольно трудоемкий процесс, в плане количества операций вычислений. В данной работе приведена необходимая информация и изучается проблема, которая связана со сложностью интерполяции функции. Рассматривается область применения теории интерполирования. В работе ставится такая актуальная проблема в математике, а именно, в теории приближения, как приближение заданной функции с помощью более простых.
В данной работе мною было изучено построение интерполяционного многочлена Лагранжа двух переменных x и y, степени не больше m и n соответственно. Реализован алгоритм приближения интерполяционными сплайнами на прямоугольных сетках. Исходя из тестов программы, можно сказать, что при увеличении степеней многочлена и при фиксированной точности, мы достигаем этой точности за меньшее число шагов. При фиксированных степенях полинома и при уменьшении точности, мы достигаем этой точности за большее число шагов, что приводит к более долгому процессу нахождения всех полиномов, т.к. их становится больше.
2. Брудный Ю.А. Теория приближения. Ярославль, 1981.
3. « И.А. Шакиров, “О влиянии выбора узлов лагранжевой интерполяции на точные и приближенные значения констант Лебега”, Сиб. матем. журн., 55 :6 (2014), 1404-1423».
4. «И.А. Шакиров, “О тригонометрическом интерполяционном полиноме Лагранжа, имеющем минимальную норму как оператор из C2р в C2р”, Изв. вузов. Матем., 2010, №10, 60-68».
5. «Е.А. Волков, “О применении интерполяционного многочлена Лагранжа при решении методом сеток задачи Дирихле для уравнения Пуассона”, Ж. вычисл. матем. и матем. физ., 4 :3 (1964), 466-472».
Описание программной среды и языков программирования:
Средой программирования была выбрана Microsoft Visual Studio 2013. такой выбор был сделан в силу ее ориентации под программные продукты, работающие в ОС Windows, которая в свою очередь является самой популярной операционной системой. Языком, на котором написана программа стал C#, с подключенной компонентой Windows Forms. Это взаимодействие позволило представить программу пользователю в дружественном и интуитивно понятном интерфейсе.
public double CalculateDeltaFunctionsNorm(Func func1, Func func2,
double x0, double y0, double x1, double y1)
var values1 = CalculatePointsForFunctionOnSquare(func1, x0, y0, x1, y1, 10, 10).Select(v => v.Z).ToArray();
var values2 = CalculatePointsForFunctionOnSquare(func2, x0, y0, x1, y1, 10, 10).Select(v => v.Z).ToArray();
return values1.Select((t, i) => Math.Abs(t - values2[i])).Concat(new[] {0.0}).Max();
public List CalculatePointsForFunctionOnSquare(Func function, double x0, double y0,
double x1, double y1, int xPointCount, int yPointCount)
double xStep = (x1 - x0)/xPointCount;
double yStep = (y1 - y0)/yPointCount;
for (int i = 0; i <= xPointCount; i++)
for (int j = 0; j <= yPointCount; j++)
Z = function(x0 + i*xStep, y0 + j*yStep)
public Func CalculatePolynomOnSquareByFunction(Func function, double x0, double y0,
var lComponents = new List>();
var mComponents = new List>();
lComponents.Add(CalculateComponent(i, x0, x1, _m));
mComponents.Add(CalculateComponent(j, y0, y1, _n));
Func polynom = (x, y) =>
r = function((x0 + x1)/2, (y0 + y1)/2);
r += function(x0 + i*xStep, y0 + j*yStep)*lComponents[i](x)*
private Func CalculateComponent(int k, double p0, double p1, int count)
result *= (x - (p0 + i*step))/((k - i)*step);
public partial class MainForm: Form
private readonly Func _baseFunction = (x, y) => Math.Sin(x*10) + Math.Sin(y);
List> _functionPoints;
List> _polynomPoints;
Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
Gl.glViewport(0, 0, OglOutput.Width, OglOutput.Height);
Glu.gluPerspective(45, (float)OglOutput.Width / OglOutput.Height, 0.1, 200);
Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);
private async void StartQuadsInterpolation()
_eps = double.Parse(textBoxEps.Text);
var calculations = new CalculationCore {M = int.Parse(textBoxM.Text), N = int.Parse(textBoxN.Text)};
var quadSize = 1.0/Math.Pow(2, quadCount);
for (int i = 0; i < Math.Pow(2, quadCount); i++)
for (int j = 0; j < Math.Pow(2, quadCount); j++)
var polynom = calculations.CalculatePolynomOnSquareByFunction(_baseFunction,
(i + 1)*quadSize, (j + 1)*quadSize);
deltas.Add(calculations.CalculateDeltaFunctionsNorm(_baseFunction, polynom,
(i + 1)*quadSize, (j + 1)*quadSize));
quadsCountLabel.Text = "Number decompositions: " + (quadCount);
QuadCount = (int)Math.Pow(2, quadCount);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glTranslated(0, -0.27, -10.0/(zoomBar.Value+1));
Gl.glRotated(xAngleBar.Value*5, 1, 0, 0);
Gl.glRotated(yAngleBar.Value*5, 0, 1, 0);
Gl.glRotated(zAngleBar.Value*5, 0,0, 1);
private void CalculatePoints(CalculationCore calculations)
_functionPoints = new List>();
_polynomPoints = new List>();
for (int i = 0; i < QuadCount; i++)
for (int j = 0; j < QuadCount; j++)
_functionPoints.Add(calculations.CalculatePointsForFunctionOnSquare(_baseFunction,
(i + 1)*quadSize, (j + 1)*quadSize, 10, 10));
var polynom = calculations.CalculatePolynomOnSquareByFunction(_baseFunction,
(i + 1)*quadSize, (j + 1)*quadSize);
_polynomPoints.Add(calculations.CalculatePointsForFunctionOnSquare(polynom,
(i + 1)*quadSize, (j + 1)*quadSize, 10, 10));
private static void DrawSurface(List> points)
for (int k = 0; k < points.Count; k++)
var internalCount = (int) Math.Sqrt(points[k].Count);
for (int i = 0; i < internalCount - 1; i++)
for (int j = 0; j < internalCount - 1; j++)
Gl.glVertex3d(points[k][i*internalCount + j].X, points[k][i*internalCount + j].Y,
Gl.glVertex3d(points[k][i*internalCount + j + 1].X, points[k][i*internalCount + j + 1].Y,
points[k][i*internalCount + j + 1].Z);
Gl.glVertex3d(points[k][(i + 1) * internalCount + j].X, points[k][(i + 1) * internalCount + j].Y,
points[k][(i + 1) * internalCount + j].Z);
Gl.glVertex3d(points[k][i * internalCount + j + 1].X, points[k][i * internalCount + j + 1].Y,
points[k][i * internalCount + j + 1].Z);
Gl.glVertex3d(points[k][(i + 1) * internalCount + j].X, points[k][(i + 1) * internalCount + j].Y,
points[k][(i + 1) * internalCount + j].Z);
Gl.glVertex3d(points[k][(i + 1) * internalCount + j + 1].X, points[k][(i + 1) * internalCount + j + 1].Y,
points[k][(i + 1) * internalCount + j + 1].Z);
for (int i = 0; i < QuadCount; i++)
Gl.glVertex3d((1.0/QuadCount)*(i + 1), 0, 0);
Gl.glVertex3d((1.0/QuadCount)*(i + 1), 1, 0);
Gl.glVertex3d(0, (1.0/QuadCount)*(i + 1), 0);
Gl.glVertex3d(1, (1.0/QuadCount)*(i + 1), 0);
private void drawButton_Click(object sender, EventArgs e)
private void AngleBar_Scroll(object sender, EventArgs e)
if (_functionPoints!= null && _polynomPoints!= null)
/// The main entry point for the application.
Application.SetCompatibleTextRenderingDefault(false);
Построение приближающей функции, используя исходные данные, с помощью методов Лагранжа, Ньютона и Эйткена (простая и упрощенная форма реализации). Алгоритм вычисления интерполяционного многочлена. Сравнение результатов реализации методов в среде Mathcad. курсовая работа [299,3 K], добавлен 30.04.2011
Многочлены Чебышева. Многочлены равномерных приближений. Экономизация степенных рядов. Свойства многочлена Чебышева. Интерполяция по Чебышевским узлам. Многочлены равномерных приближений. Теорема Вейерштрасса. Кусочно-квадратичная аппроксимация. курс лекций [175,3 K], добавлен 06.03.2009
Основные правила расчета значений дифференциального уравнения. Изучение выполнения оценки погрешности вычислений, осуществления аппроксимации решений. Разработка алгоритма и написание соответствующей программы. Построение интерполяционного многочлена. курсовая работа [212,6 K], добавлен 11.12.2013
Теория вероятностей — раздел математики, изучающий закономерности случайных явлений: случайные события, случайные величины, их свойства и операции над ними. Методы решения задач по теории вероятности, определение математического ожидания и дисперсии. контрольная работа [157,5 K], добавлен 04.02.2012
Аппроксимация и теория приближений, применение метода наименьших квадратов для оценки характера приближения. Квадратичное приближение таблично заданной функции по дискретной норме Гаусса. Интегральное приближение функции, которая задана аналитически. реферат [82,0 K], добавлен 05.09.2010
Теория игр – раздел математики, предметом которого является изучение математических моделей принятия оптимальных решений в условиях конфликта. Итеративный метод Брауна-Робинсона. Монотонный итеративный алгоритм решения матричных игр. дипломная работа [81,0 K], добавлен 08.08.2007
Непрерывная и точечная аппроксимация. Интерполяционные полиномы Лагранжа и Ньютона. Погрешность глобальной интерполяции, квадратичная зависимость. Метод наименьших квадратов. Подбор эмпирических формул. Кусочно-постоянная и кусочно-линейная интерполяции. курсовая работа [434,5 K], добавлен 14.03.2014
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Интерполяционные сплайны на прямоугольных сетках курсовая работа. Математика.
Реферат На Тему Франсуа Кенэ
Реферат: «Использование информационных технологий в городской прессе»
Реферат: Белые карлики. Скачать бесплатно и без регистрации
Фразы Для Эссе По Английскому Егэ
Курсовая работа: Разработка рекламной кампании для ОГУП "Агро". Скачать бесплатно и без регистрации
Курсовая работа: Порядок создания предприятия: финансовые и нормативно-правовые аспекты
Реферат На Тему Реализация Права
Курсовая работа: Синтез и анализ аналоговых и цифровых регуляторов. Скачать бесплатно и без регистрации
Вступление В Эссе
Реферат по теме Этикет руководителя
Лидерство В Группе Реферат
Реферат: Черная дыра. Скачать бесплатно и без регистрации
Сочинение Рассуждение Огэ
Сочинение Егэ На 100 Баллов Пример 2022
Сочинение Про Семейные Отношения
Топик: The profile of an effective manager
Эссе Курение И Здоровье
Шпаргалка: Билеты по теории государства и права
Курсовая работа: Проектирование магистрального нефтепровода на участке Пурпе-Самотлор
Контрольная работа: Семья и межличностные отношения
Ограничение и умаление прав: соотношение понятий - Государство и право курсовая работа
Живая геометрия - Математика дипломная работа
Оцінка стану нарахування основної заробітної плати та прийняття управлінських рішень щодо її впливу на витрати підприємства - Бухгалтерский учет и аудит курсовая работа


Report Page