рефераты рефераты
Главная страница > Курсовая работа: Численные методы решения типовых математических задач  
Курсовая работа: Численные методы решения типовых математических задач
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Численные методы решения типовых математических задач

q_{i+1}'(x_i) = q'_i(x_i),& i=\overline{1,n-1};\\q''_{i+1}(x_i) = q_i''(x_i),& i=\overline{0,n-1}.

Система алгебраических уравнений имеет решение, если число уравнений соответствует числу неизвестных. Для этого необходимо ввести еще два уравнения. Обычно используются следующие условия:

q_1^''(x_0) = 0; q_n^''(x_n) = 0.

При построении алгоритма метода первые и вторые производные удобно аппроксимировать разделенными разностями соответствующих порядков.

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

 

2.4 Численный метод решения задачи

Значения f(x0), f(x1), … , f(xn) , т.е. значения табличной функции в узлах, называются разделенными разностями нулевого порядка (k=0).

Отношение f(x_0;x_1) = \frac{f(x_1)-f(x_0)}{x_1 – x_0}называется разделенной разностью первого порядка (k=1) на участке [x0, x1] и равно разности разделенных разностей нулевого порядка на концах участка [x0, x1], разделенной на длину этого участка.

Для произвольного участка [xi, xi+1] разделенная разность первого порядка (k=1) равна

f(x_i;x_{i+1}) = \frac{f(x_{i+1})-f(x_i)}{x_{i+1} – x_i}.

Отношение f(x_0;x_1;x_2) = \frac{f(x_1;x_2)-f(x_0;x_1)}{x_2 – x_0}называется разделенной разностью второго порядка (k=2) на участке [x0, x2] и равно разности разделенных разностей первого порядка, разделенной на длину участка [x0, x2].

Для произвольного участка [xi, xi+2] разделенная разность второго порядка (k=2) равна

f(x_i;x_{i+1};x_{i+2}) = \frac{f(x_{i+1};x_{i+2}) - f(x_i;x_{i+1})}{x_{i+2} – x_i}

Таким образом, разделенная разность k-го порядка на участке [xi, xi+k] может быть определена через разделенные разности (k-1)-го порядка по рекуррентной формуле:

f(x_i;x_{i+1};x_{i+2}; \ldots;x_{i+k}) = \frac{ f(x_{i+1};x_{i+2}; \ldots;x_{i+k}) -  f(x_i;x_{i+1}; \ldots;x_{i+k-1})}{x_{i+k} – x_i}(2.3)

Где k=\overline{1,n}, k=\overline{0,n-k}, n – степень многочлена.

Максимальное значение k равно n. Тогда i =0 и разделенная разность n-го порядка на участке [x0,xn] равна

f(x_0;x_i; \ldots;x_n) = \frac{ f(x_1;x_2; \ldots;x_n) - f(x_0;x_1; \ldots;x_n-1)}{x_n – x_0},

т.е. равна разности разделенных разностей (n-1)-го порядка, разделенной на длину участка [x0,xn].

Разделенные разности

f(x_0;x_1), f(x_0;x_1;x_2), \ldots, f(x_0;x_1;\ldots; x_n)

являются вполне определенными числами, поэтому выражение (2.2) действительно является алгебраическим многочленом n-й степени. При этом в многочлене (2.2) все разделенные алгебраическим многочленом n-й степени. При этом в многочлене (2.2) все разделенные разности определены для участков [x0, x0+k], k=\overline{1,n}.

Лемма: алгебраический многочлен (2.2), построенный по формулам Ньютона, действительно является интерполяционным многочленом, т.е. значение многочлена в узловых точках равно значению табличной функции

L_n(x_i) = f(x-i) = y_i; i=0,1, \ldots n.

Докажем это. Пусть х=х0 , тогда многочлен (2.2) равен

L_n(x_0) = f(x_0) = y_0.

Пусть х=х1, тогда многочлен (2.2) равен

L_n(x_1) = f(x_0) + (x_1 – x_0) \cdot f(x_0;x_1) = f(x_0) + (x_1 – x_0) \cdot \frac{f(x_1) – f(x_0)}{x_1 – x_0} = f(x_1) = y_1

Пусть х=х2, тогда многочлен (2.2) равен

L_n(x_1) = f(x_0) + (x_2 – x_0) \cdot f(x_0;x_1) + (x_2 – x_0) \cdot (x_2 – x_1) \cdot f(x_0;x_1;x_2) =\\= f(x_0) + (x_2 – x_0) \cdot \frac{f(x_1) – f(x_0)}{x_1 – x_0}+  (x_2 – x_0) \cdot (x_2 – x_1) \cdot \frac{f(x_1;x_2) – f(x_0;x_1)}{x_2 – x_0}= f(x_1) = y_1

Заметим, что решение задачи интерполяции по Ньютону имеет некоторые преимущества по сравнению с решением задачи интерполяции по Лагранжу. Каждое слагаемое интерполяционного многочлена Лагранжа зависит от всех значений табличной функции yi, i=0,1,…n. Поэтому при изменении количества узловых точек N и степени многочлена n (n=N-1) интерполяционный многочлен Лагранжа требуется строить заново. В многочлене Ньютона при изменении количества узловых точек N и степени многочлена n требуется только добавить или отбросить соответствующее число стандартных слагаемых в формуле Ньютона (2.2). Это удобно на практике и ускоряет процесс вычислений.

2.5 Схема алгоритма

На рисунке 2.1 представлена схема алгоритма решения задачи №2.

На рисунке 2.2 представлена схема алгоритма ввода исходных данных (подпрограмма-процедура Vvod).

На рисунке 2.3 представлена схема алгоритма интерполяции функции по методу Ньютона с разделенными разностями (newt)

На рисунке 2.4 представлена схема алгоритма записи данных и результата в файл (подпрограмма-процедура zapisb_v_fail).

На рисунке 2.5 представлена схема алгоритма вывода содержимого записанного файла на экран (подпрограмма-процедура outputtoscreen).

2.6 Текст программы

program newton;

 uses crt,graph;

 const c=10;

 type matr=array[0..c,0..c] of real;

 mas=array[0..c] of real;

 var x,y,koef_polinoma:mas;

 a:matr;

 b:mas;

 d1:real;

 n:integer;

 fail,fail1,ekran:text;

 procedure Vvod(var kolvo:integer; var uzel,fun:mas);

 {Процедура осуществляет ввод данных:пользователь вводит с клавиатуры

 узлы интерполяции и значения функции в них. Также определяется количество узлов.}

 var code,i:integer; s:string;

 begin

 writeln('введите количество узлов');

 readln(kolvo);

 kolvo:=kolvo-1;

 for i:=0 to kolvo do

 begin

 repeat

 writeln('введите ',i,'-й узел интерполирования');

 readln(s);

 val(s,uzel[i],code);

 until code=0;

 repeat

 writeln('введите значение функции, соответствующее данному узлу');

 readln(s);

 val(s,fun[i],code);

 until code=0;

end;

 end;

 procedure newt(var kolvo:integer; D:real; var koef,uzel,fun:mas)

 var L,P:real;

 begin

 L:=fun[0];

 P:=1;

 for i:=1 to kolvo do

 begin

 P:=P*(D-uzel[i-1]);

 for j:=1 to kolvo-i do

 begin

 fun[j]:=(fun[j-1]-fun[j])/(uzel[j+i]-uzel[i])

 end;

          koef[i]:=fun[0];

 L:=L+P*fun[0];

 end;

 end;

procedure newt(var kolvo:integer; D:real; var koef,uzel,fun:mas) {процедура интерполяции функции методом Ньютона}

 var L,P:real;

 begin

 L:=fun[0];

 P:=1;

 for i:=1 to kolvo do

 begin

 P:=P*(D-uzel[i-1]);

 for j:=1 to kolvo-i do

 begin

 fun[j]:=(fun[j-1]-fun[j])/(uzel[j+i]-uzel[i])

 end;

          koef[i]:=fun[0];

 L:=L+P*fun[0];

 end;

 end;

 procedure zapisb(koef:mas; uzel,fun:mas; kolvo:integer; var f:text);

 {В данной процедуре осуществляется запись в файл данных и результата}

 var i:integer;

 begin

 assign(f,'interpol.txt');

 rewrite(f);

 for i:=0 to kolvo do writeln(f,'x= ',uzel[i]:8:4,' f(x)=',fun[i]:8:4);

 writeln(f,'Интерполяционный полином');

 write(f,'p(x)=',koef[0]:8:4);

 for i:=1 to kolvo do if i>1 then write (f,'+(',koef[i]:8:4,')*x^',i)

 else write (f,'+(',koef[i]:8:4,')*x');

 close(f);

 end;

procedure vblvod(var f1,f2:text);

 {Вывод содержимого записанного файла на экран}

 var s1:string;

begin

 clrscr;

 assign(f1,'interpol.txt');

 reset(f1);

 assigncrt(f2);

 rewrite(f2);

 while not eof(f1) do

assigncrt(f2);

 rewrite(f2);

 while not eof(f1) do

 begin

 Readln(f1,s1);

 writeln(f2,s1);

 end;

 close(f2);

 close(f1);

 end;

 procedure grafik(kolvo:integer; uzlbl,funktsiya:mas; c:mas);

 {Построение графика полученной функции}

 var driver,mode,Err,a1,b1,z,i,j:integer; s:string; xt,yt:real;

 begin

 driver:=detect;

 InitGraph(driver,mode,'d:\tp7\bp\bgi');

 err:=graphresult;

 if err<>grok then writeln('Ошибка при инициализации графического режима')

 else

 begin

 Setcolor(9);

 line(320,0,320,480);

 line(0,240,640,240);

 settextstyle(smallfont,horizdir,3);

 setcolor(10);

 outtextxy(320,245,'0');

 a1:=0;

 b1:=480;

 z:=-10;

for i:=0 to 20 do

begin

 if z<>0 then

begin

 str(z,s);

 setcolor(10);

 outtextxy(a1,245,s);

 outtextxy(325,b1,s);

 setcolor(8);

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9

рефераты
Новости