Вход

Выбор методов аппроксимации функции

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 66454
Дата создания 2014
Страниц 49
Источников 4
Мы сможем обработать ваш заказ (!) 7 октября в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
3 480руб.
КУПИТЬ

Содержание

Содержание Введение 3 1 Интерполяционный полином Лагранжа. 5 1.1. Теоретические основы метода 5 1.2 Синтез полинома Лагранжа. 6 2. Аппроксимация функций полиномом Ньютона. 16 1.1. Теоретические основы метода 16 2.2. Синтез полинома Ньютона. 17 3. Интерполяция функций методом наименьших квадратов 29 3.1. Теоретические основы метода 29 3.2. Составление аппроксимирующего полинома для выбранной функции и оценка точности аппроксимации. 31 Заключение 48 Список литературы 49 Содержание

Фрагмент работы для ознакомления

Качество аппроксимации неудовлетворительное, следовательно, для заданной функции линейная аппроксимация методомнаименьшихквадратовнеприменима.3.2.2. Квадратичная аппроксимация.Запишем в таблицу 4 элементы матрицы Грама и столбец свободных членов.Таблица 4.x0x1x2x3x4yxyx2y100000,9794980010,10,010,0010,00011,0608310,1060830,01060810,20,040,0080,00161,1388370,2277670,04555310,30,090,0270,00811,2133120,3639940,10919810,40,160,0640,02561,2840760,513630,205452Σ510,30,10,03545,6765541,2114750,370812Построим матрицу Грамма:Используя метод Крамера решим систему линейных уравнений:=0,0007=0,000685621=0,000582484=-0,000123345С0 = 0,9794592С1 = 0,8321198С2 = -0,1762071Окончательно искомая аппроксимирующая функция примет вид:φ(х)=0,9794592+0,8321198*х-0,1762071*х2.Результаты аппроксимации функции сведены в таблицу 5.Таблица 5. xy= φ(х)00,9794980,9794590,11,0608311,0609090,21,1388371,1388350,31,2133121,2132370,41,2840761,284114Вычислимневязку:P= = 5.432*10-5На рисунке 10 представлены графики исходной и аппроксимирующей функций. Блок-схемаалгоритмареализацииаппроксимации функции методом наименьших квадратов представлена на рис.10. Основная программа включает в себя функции «gram» (рис.11) - строит матрицу Грамма и «matrix» (рис.12) - реализующую вычисление систем линейных уравнений методом Холесского. Функция «matrix» в свою очередь, включает в себя функцию «holess» (рис.14) - преобразующую массив исходных значений (исходную матрицу) в массив новых коэффициентов. И функцию «res» (рис.13) на основании массива, преобразованного функцией «holes», вычисляющую и заполняющую массив готовых решений. Все функции имеют не возвращаемый тип void, т.к. работают с исходным массивом значений.Текст программы реализующей аппроксимацию методом наименьших квадратов// min_square.cpp : main project file.#include"stdafx.h"#include<iostream>#include<conio.h>#include<cmath>#include<iomanip>#define size 20usingnamespace System;usingnamespacestd;//объявлениепрототиповфункцийvoidmatrix (double[][size],int,double[]); /*вычисляет значение матрицы методом Холесского, включает в себядве функции: holess, и res*/voidholess(double[][size],int);void res(double[][size], int,double[]);//функция построения матрицы Грамаvoid gram(double[][size],double[][size],int, double[][size]);//начало основной программыintmain(){ /*объявленные переменные: в массивы "х" и "у" накапливаются табличные значения аргументов и функции. В массив "с" сохраняются значения коэффициентов (результат решения матрицы Грама). Массив "а" хранит матрицу Грама, "у1"-значения функции, полученные путем вычисления аппроксимирующего многочлена. s-хранит промежуточные результаты вычисления функции апроксимирующим многочленом. р-невязка.n-количество табличных значений аргументов*/double x[size][size],y[size][size],c[size],a[size][size],y1[size],s,p;int n;cout<<"Enter quantity of knots of interpolation N=";//ввод ncin>>n;cout<<endl;for (inti=1;i<=n;i++)//начало цикла ввода табличных значений {cout<<"Interx("<<i<<")=";cin>>x[i][1];/*табличные значения аргумента сохраняются в первом столбце многомерного массива "х"*/for(int j=0;j<=(n-1);j++)x[i][j]=pow(x[i][1],j); /*табличное значение "х" первого столбца i-йстроки возводится в j-ю степень и сохраняется в j-м столбце*/cout<<"Intery("<<i<<")=";cin>>y[i][0];/*сохранение табличных значений функции в нулевом столбце многомерного массива "у" */for(int j=0;j<=(n-3);j++)y[i][j]=y[i][0]*x[i][j]; /*в j-й столбец i-й строки массива "у" записывается произведение значения 0-го столбца массива "у" (табличное значение у) и х^j */cout<<endl; }gram(x,y,n,a);//заполнение матрицы Грамаmatrix(a,n-2,c);//вычисление матрицы методом Холесскогоfor(inti=1;i<=n;i++) { s=0;for(int j=1;j<=n-2;j++)s=s+c[j]*x[i][j-1]; //вычисление функции аппроксимирующим многочленом y1[i]=s;//запись вычисленного значения функции в массив выходных данных } s=0;cout<<setw(2)<<"X"<<setw(12)<<"Y"<<setw(19)<<"F"<<endl;for(inti=1;i<=n;i++) {s=s+pow((y1[i]-y[i][0]),2);//нахождение разницы между табличным и вычисленным значением функцииcout<<setw(4)<<x[i][1]<<setw(14)<<y[i][0]<<setw(19)<<y1[i]<<endl;//вывод табличных и вычисленных значений }p=sqrt(s/(n+1));//вычисление невязкиcout<<endl;cout<<setw(2)<<"P="<<p<<endl;//вывод невязки на экранgetch();return 0;//конец функции main}/*начало функции, строящей матрицу Грама. Входные данные: двумерный массив табличных, а также возведенных в степень n-1 значений аргументов "х"; двумерный массив табличных значений, а так же результатов произведений аргумента и функции "у"; количество узловых точек. Выходные данные двумерный массив "а" - матрица Грама*/void gram(double x [][size],double y[][size],int n, double a[][size]){int k;for(int j=0;j<=(n-1);j++){ x[n+1][j]=y[n+1][j]=0;for(inti=1;i<=n;i++)x[n+1][j]=x[n+1][j]+x[i][j]; //вычисление значений членов левой части матрицы Грамаcout<<endl;}for(int j=0;j<=n-3;j++)for(inti=1;i<=n;i++)y[n+1][j]=y[n+1][j]+y[i][j]; //вычисление значений членов правой части матрицы Грамаk=0;for(inti=1;i<=n-2;i++){for(int j=1;j<=(n-2);j++)a[i][j]=x[n+1][j-1+k]; //заполнение массива "а" значениями аргументовa[i][n-1]=y[n+1][i-1];//заполнение столбца правых частей системы нормальных уравненийk++;}}void matrix (double a[][size],intn,double c[]){for(inti=1;i<=n;i++)c[i]=0;holess(a,n);res(a,n,c);}//функция реализует метод Холесского с частичной перестановкой для выбора главного элемента//Входные данные массив коэффициентов "аrg", количество уравнений системы n//Выходные данные массив новых коэффициентов "аrg".voidholess(doublearg[][size],int n){double max,p,s,a1[size];int i1;for(int m=1;m<=n;m++) {if(m==1)for(int j=2;j<=(n+1);j++)arg[1][j]=arg[1][j]/arg[1][1];if(m>=2){max=fabs(arg[m][m]);for(int t=m;t<=n;t++)if(fabs(arg[t][m])>=max) //выбор главного элемента{max=fabs(arg[t][m]);i1=t;}for(inti=1;i<=(n+1);i++)a1[i]=arg[m][i];//a1(n+1) - массив коэффициентовfor(int i=1;i<=(n+1);i++) //замена ведущей строки на строку с выбранным главным элементом{arg[m][i]=arg[i1][i]; arg[i1][i]=a1[i];}for(inti=m;i<=n;i++){p=0;for(int k=1;k<=(m-1);k++)p=p+arg[i][k]*arg[k][m];arg[i][m]=arg[i][m]-p; //формирование очередного a(i,m) столбца}for(int j=(m+1);j<=(n+1);j++){s=0;for(int k=1;k<=(m-1);k++)s=s+arg[m][k]*arg[k][j];arg[m][j]=(arg[m][j]-s)/arg[m][m]; //формирование очередной a(m,j)строки}} }}//функцияформированиярешениясистемы уравнений//входные данные: двумерный массив коэффициентов "arg", n-число уравнений//выходные данные:массив решений системы х(i)void res(doublearg[][size], intn,double x[]){double s;for(inti=n;i>=1;i--){if(n==1)x[i]=arg[n][n+1];s=0;for(int k=i+1;k<=n;k++)s=s+arg[i][k]*x[k];x[i]=arg[i][n+1]-s;}//конец цикла}//конец функции resВыводы:Результаты расчетов, а также построенные графики позволяют сделать вывод, что квадратичная аппроксимация в данном случае предпочтительнее, т.к. при квадратичной аппроксимации график аппроксимирующей функции на рассчитанном участке с достаточно высокой точностью повторяет график исходной функции. Невязкаприквадратичнойаппроксимации значительно меньше, чемприлинейной.ЗаключениеВ настоящей работе были рассмотрены три способа аппроксимации одной и той же функции. У всех трех способов есть своя область применения, достоинства и недостатки. Применимо к исследуемой функции, учитывая равный интервал между значениями аргументов, малый шаг, а так же то, что функция близка к линейной, наиболее предпочтительным для ее аппроксимации является метод Ньютона. Т.к. уже линейная интерполяция дала результат с высокой точностью.СписоклитературыГловацкая А.П. Методы и алгоритмы вычислительной математики. Уч.пос. для ВУЗОВ.-М. Радио и связь, 1999.-408с. Гловацкая А.П. Сборник задач для курсовой работы по курсу Информатика. МТУСИ. 2006, 32с.Дейтел Х.М. Как программировать на С++: Пятое издание. - С.Пб. ООО «Бином-Пресс», 2011.-1456с.Пахомов Б.И. С/С++ и MS Visual C++ 2010 для начинающих – СПб.: БХВ - Петербург, 2011. – 736 с.

Список литературы [ всего 4]

Список литературы 1. Гловацкая А.П. Методы и алгоритмы вычислительной математики. Уч.пос. для ВУЗОВ.-М. Радио и связь, 1999.-408с. 2. Гловацкая А.П. Сборник задач для курсовой работы по курсу Информатика. МТУСИ. 2006, 32с. 3. Дейтел Х.М. Как программировать на С++: Пятое издание. - С.Пб. ООО «Бином-Пресс», 2011.-1456с. 4. Пахомов Б.И. С/С++ и MS Visual C++ 2010 для начинающих – СПб.: БХВ - Петербург, 2011. – 736 с. список литературы
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00911
© Рефератбанк, 2002 - 2024