|
|||
МИНОБРНАУКИ РОССИИ. ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ. Отчет о выполнении лабораторной работы. по дисциплине «Численные методы». Интерполяционный полином Лагранжа. ЗадачаСтр 1 из 2Следующая ⇒ МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. Р. Е. Алексеева» АРЗАМАССКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ)
Отчет о выполнении лабораторной работы по дисциплине «Численные методы»
Выполнила: студентка гр. АСПМ–09-1 Балахонова О. В. Проверила: Жилина Т. Е.
Арзамас 2012 г Интерполяционный полином Лагранжа Задача Записать интерполяционный полином Лагранжа второй степени. При n=1: Информация о функции y=f(x) сосредоточена в двух точках (x0, y0), (x, y). Многочлен Лагранжа в этом случае составляется из двух базисных многочленов первой степени и имеет вид:
При n=2: Значение функции известны в трех точках:
#include < iostream> #include < iomanip> #include < cstddef> #include < cstdlib> using namespace std; //ввод вектора double* inputv(int N) {double* b; b=new double [N]; if(b==NULL) {cout< < " \n ne xvataet o. p"; exit(1); } for(int i=0; i< =N; i++) cin> > b[i]; return b; } //вывод вектора void outputv(double* b, int N) {int i; for (i=0; i< =N; i++) {if (i%6==0) cout< < endl; cout< < setw(10)< < b[i]; } } void main() {double* x, * y; double xp; int j, k, N; cout< < " \n vvedite N="; cin> > N; cout< < " \n vvedite X \n"; x=inputv(N); outputv(x, N); cout< < " \n vvedite Y \n"; y=inputv(N); outputv(y, N); cout< < " \n vvesti xp= \n "; cin> > xp; double yp=0; for(j=1; j< =N; j++) {double p=1; for(k=1; k< =N; k++) {if(j! =k) p=(p*(xp-x[k]))/(x[j]-x[k]); } yp=yp+p*y[j]; } cout< < " \n xp=" < < xp; cout< < " \n yp=" < < yp< < endl; }
Результат программы:
|
|||
|