Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

а то похибка похідної може бути виражена формулою

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.11.2024

ЧИСЕЛЬНЕ ДИФЕРЕНЦІЮВАННЯ ФУНКЦІЙ ЗА ДОПОМОГОЮ ІНТЕРПОЛЯЦІЇ КУБІЧНИМ СПЛАЙНОМ

Один з основних підходів чисельного диференціювання полягає в тому, що формули для апроксимації похідних різного порядку точності отримують у результаті диференціювання різних інтерполяційних многочленів.

Дійсно, нехай відомі значення певної функції в точках і треба обчислити . Для цього побудуємо функцію , що інтерполює , і наближено припустимо . Якщо для функції відома похибка (чи її оцінка), то похибка похідної може бути виражена формулою .

Сплайном  порядку називають функцію, що є многочленом ступеня  окремо на кожному із відрізків   , на які розбитий вихідний відрізок , тобто при , і яка, крім того, задовольняє умовам неперервності похідних до порядку в точках :

при

Кубічний сплайн , що задовольняє умові інтерполяції, тобто співпадає з функцією в точках , можна записати у вигляді

,              (1)

, .

За умови, що (один із варіантів задання крайових умов), коефіцієнти визначаються із системи рівнянь

,         (2)

.

Тут .

За знайденими числами коефіцієнти і визначаються за формулами

,  ,            (3)

.

 Приклад. Використовуючи умови прикладу пункту 1.2 побудувати інтерполяційний кубічний сплайн.

Розв’язок. Маємо:   тобто сітка рівномірна , що трохи спрощує обчислення. Система рівняння (2) набуває вигляду (за умови )

,   ,

У розгорнутому вигляді маємо:

Підставляючи в систему вхідні дані та враховуючи, що перетворимо її до вигляду:

Розв’язуючи останню систему, знаходимо:

;      .

Далі за формулами (3) одержуємо:

; ; ;

; ; ;

; ; .

Таким чином, шуканий сплайн має вигляд

Тоді .

Індивідуальне завдання № 1

За заданою таблицею значень функції побудуйте кубічний сплайн , що задовольняє умовам інтерполяції. Потім з його допомогою приблизно обчисліть значення функції та її похідної другого порядку в заданій точці .

-9,2

4,810

-0,9

0,895

4,0

2,011

-4,8

1,108

6,5

2,698

Розв’язання

program interpol_langr;

var i,j,k,l:integer;

xi,fxi,fxii,fi,a,tp:extended;

       x:array[0..4] of extended;

       fx:array[0..4]of extended;

       h,b,d,a2:array[1..4] of extended;

       c:array[0..4] of extended;

       R:array[0..4,0..5] of extended;

begin

x[0]:=-9.2;

fx[0]:=4.810;

x[1]:=-0.9;

fx[1]:=0.895;

x[2]:=4.0;

fx[2]:=2.011;

x[3]:=-4.8;

fx[3]:=1.108;

x[4]:=6.5;

fx[4]:=2.698;

fxi:=0;

xi:=-6.6;

c[0]:=0 ;

c[4]:=0;

for i:=1 to 4 do

begin

h[i]:=x[i]-x[i-1];

end;

for i:=0 to 2 do

begin

r[i,0+i]:=h[i+1];

r[i,1+i]:=2*(h[i+1]+h[i+2]) ;

r[i,2+i]:=h[i+2];

r[i,5]:=6*(((fx[i+2]-fx[i+1]))/(h[i+2])-((fx[i+1]-fx[i]))/(h[i+1]))

end;

r[3,0]:=1;

r[4,4]:=1;

k:=0;

for i:=0 to 4 do

       begin

       for j:=0 to 5 do

               begin

               write(r[i,j]:0:4,' ');

               end;

       writeln;

       end;

for i:=0 to 3 do

begin

       for j:=i+1 to 4 do

       begin

       a:=r[j,k]/r[i,k];

       for l:=k to 5 do

               begin

               r[j,l]:=r[j,l]-a*r[i,l];

               end;

       end;

       k:=k+1;

end;

writeln;

for i:=0 to 4 do

       begin

       for j:=0 to 5 do

               begin

               write(r[i,j]:0:4,' ');

               end;

       writeln;

       end;

       writeln;

for i:=4 downto 0 do

       begin

       for j:=i to 4 do

               begin

               if i<> j then tp:=tp+r[i,j]*c[j];

               end;

       c[i]:=(r[i,5]-tp)/r[i,i];

       end;

for i:=0 to 4 do write(c[i]:0:8,' ');

c[0]:=0 ;

c[4]:=0;

writeln;

for i:=1 to 4 do

begin

d[i]:=(c[i]-c[i-1])/h[i];

b[i]:=(h[i]*c[i]/2)-(h[i]*h[i]*d[i]/6)+((fx[i]-fx[i-1])/h[i]);

a2[i]:=fx[i];

end;

for i:=0 to 4 do

begin

if xi<x[i] then begin j:=i;break; end;

end;

fxi:=a2[j]+b[j]*(xi-x[j])+((xi-x[j])*(xi-x[j])*c[j]/2)+((xi-x[j])*(xi-x[j])*(xi-x[j])*d[j]/6);

fxii:=c[j]+(xi-x[j])*d[j];

writeln('f(',xi,')=',fxi);

writeln('f``(',xi,')=',fxii);

readln;

end.

Відповідь

0.51680109 0.01998754 0.04659564 0.12772152 0.00000000

f(-6.6000000000000000E+0000)= 2,00758 53677073E+0000

f``(-6.6000000000000000E+0000)= 0.21413781326526353E-0003

Завдання № 2

«Метод Рунге-Кутта четвертого порядку точності. Рішення задачі Коші для звичайного диференційованого рівняння»

Теоретичні відомості:

Нехай дано диференціальне рівняння з початковою умовою . Виберемо крок , позначивши і , . Розглянемо числа:

;

;

;

 

Тоді значення шуканої функції визначається за формулою

,

де ; .

Похибка цього методу – величина порядку .

Приклад. Розв’яжемо методом Рунге-Кутта задачу Коші: ; ; на інтервалі (0;0,4).

Розв’язок. Покажемо початок процесу.

Для обчислюємо послідовно

,

,

,

.

Звідси .

Отже .

Завдання:

Методом Рунге-Кутта розв’яжіть задачу Коші.

Номер правої частини

Інтервал

-0,3

2

1

0,2

[0;2]

Розв’язання:

uses crt;

var

i,n:integer;

k1,k2,k3,k4,h:real;

dq,d2q,dy,q,x,y:array [0..20] of real;

begin

clrscr;

x[0]:=0;

y[0]:=1.05;

h:=0.1;

for i:=1 to 10 do

x[i]:=x[0]+i*h;

for i:=0 to 9 do

begin

k1:=h*ff(x[i],y[i]);

k2:=h*ff(x[i]+h/2,y[i]+k1/2);

k3:=h*ff(x[i]+h/2,y[i]+k2/2);

k4:=h*ff(x[i]+h,y[i]+k3);

y[i+1]:=y[i]+(k1+2*k2+2*k3+k4)/6;

writeln(y[i+1]:10:4);

end;

readln;

q[0]:=h*ff(x[0],y[0]);

q[1]:=h*ff(x[1],y[1]);

q[2]:=h*ff(x[2],y[2]);

q[3]:=h*ff(x[3],y[3]);

dq[0]:=q[1]-q[0];

dq[1]:=q[2]-q[1];

d2q[0]:=dq[1]-dq[0];

for i:=0 to 6 do

begin

dq[i+2]:=q[i+3]-q[i+2];

d2q[i+1]:=dq[i+2]-dq[i+1];

dy[i+3]:=q[i+3]+((dq[i+2])/2)+(5*(d2q[i+1])/12)+(3*(d2q[i+1]-d2q[i])/8);

y[i+4]:=y[i+3]+dy[i+3];

q[i+4]:=h*ff(x[i+4],y[i+4]);

end;

for i:=1 to 10 do

writeln(y[i]:10:4);

readln;

end.

Відповідь:

x[1]= 0.000000000000E+000       y[1]=1.000000000000000E+000

x[2]= 0.20000000000000E+000   y[2]=-2.38352968598830E+000

x[3]= 0.40000000000000E+000    y[3]=-2.43736337303425E+000

x[4]= 0.60000000000000E+000    y[4]=- 2.526078 0521146E+000

x[5]= 0.80000000000000E+000     y[5]=-2,60789616983400E+000

x[6]= 1.0000000000000E+000        y[6]=-2.7088 631474325E+000

x[7]= 1.20000000000000E+000      y[7]=-2.84148900009743E+000

x[8]= 1.40000000000000E+000       y[8]=-3.02080025048269E+000

x[9]= 1.60000000000000E+000       y[9]=-3.26495899349582E+001

x[10]= 1.800000000000000E+000   y[10]=-3.5949000178810E+001

Завдання № 3

«Метод градієнтного спуску. Рішення системи нелінійних алгебраїчних рівнянь»

Теоретичні відомості:

Нехай маємо систему рівнянь

                                   (1)

чи в матричній формі

,                                                   (2)

де , .

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

.                         (3)

Очевидно, що кожний розв’язок системи (1) перетворює на нуль функцію ; навпаки, числа , для яких функція дорівнює нулю, є коренями системи (1). Таким чином, задача зводиться до знаходження мінімуму скалярної функції багатьох змінних .

Одним з методів мінімізації функцій багатьох змінних є метод градієнтного спуску. Якщо – деяке наближення до розв’язку системи, то в методі градієнтного спуску ми одержуємо нове наближення , рухаючись за напрямком найбільшої миттєвої швидкості зміни функції в точці до точки, де значення мінімальне, тобто

,                                    (4)

де вибирається з умови мінімуму .

Якщо – мала величина, квадратом і вищими ступенями якої можна знехтувати, то, розкладаючи функції за степенями з точністю до лінійних членів і виражаючи через матрицю Якобі , одержимо таке представлення розрахункової формули методу градієнтного спуску

,                   (5)

де матриця Якобі вектор-функції .

.            (6)

Слід зазначити, що ітераційний процес, побудований за методом градієнтного спуску, збігається до точного розв’язку, якщо початкове наближення обране з досить малого околу кореня.

Завдання:

Методом градієнтного спуску при заданому початковому наближенні знайдіть наближені корені системи

За умову закінчення ітераційного процесу прийміть .

№ варі-анта

Матриця коефіцієнтів системи

Стовпець вільних членів

Початкове наближення коренів

20

-0,4

1,1

-3,5

-4,0

-2,5

3,2

-0,1

0,2

1,8

-2,6

1,4

-0,5

-2,0

0,5

-2,6

1,1

0,42576

-30,21898

-16,27821

-6,42578

3,0

0,4

-2,6

-1,0

Розв’язання:

type ar1=array[1..4,1..5] of real;

ar2=array[1..4] of real;

var k,i,j:integer;

a1,c1:ar1; f:text; e,m,s,r:real;

x1,x2,d1,p,q:ar2;

procedure ff(a:ar1; x:ar2;var y:ar2);

begin

y[1]:=a[1,1]*x[1]*x[1]+a[1,2]*x[2]*x[3]+a[1,3]*x[2]*x[4]+a[1,4]*x[1]-a[1,5];

y[2]:=a[2,1]*x[2]*x[2]+a[2,2]*x[1]*x[3]+a[2,3]*x[3]*x[4]+a[2,4]*x[2]-a[2,5];

y[3]:=a[3,1]*x[3]*x[3]+a[3,2]*x[1]*x[2]+a[3,3]*x[2]*x[4]+a[3,4]*x[3]-a[3,5];

y[4]:=a[4,1]*x[4]*x[4]+a[4,2]*x[1]*x[2]+a[4,3]*x[2]*x[3]+a[4,4]*x[4]-a[4,5];

end;

procedure dd(a:ar1;x:ar2;var c:ar1);

begin

c[1,1]:=2*a[1,1]*x[1]+a[1,4];

c[1,2]:=a[1,2]*x[3]+a[1,3]*x[4];

c[1,3]:=a[1,2]*x[2];

c[1,4]:=a[1,3]*x[2];

c[2,2]:=2*a[2,1]*x[2]+a[2,4];

c[2,3]:=a[2,2]*x[1]+a[2,3]*x[4];

c[2,4]:=a[2,3]*x[3];

c[2,1]:=a[2,2]*x[3];

c[3,3]:=2*a[3,1]*x[3]+a[3,4];

c[3,2]:=a[3,2]*x[1]+a[3,3]*x[4];

c[3,1]:=a[3,2]*x[2];

c[3,4]:=a[3,3]*x[2];

c[4,4]:=2*a[4,1]*x[4]+a[4,4];

c[4,2]:=a[4,2]*x[1]+a[4,3]*x[3];

c[4,1]:=a[4,2]*x[2];

c[4,3]:=a[4,3]*x[2];

end;

begin

assign(f,'g.txt');

reset(f);

for i:=1 to 4 do

for j:=1 to 5 do begin

readln(f,s); a1[i,j]:=s; end;

for i:=1 to 4 do begin

readln(f,s); x2[i]:=s;end; close(f);  e:=54;

while e>4.3 do begin

dd(a1,x2,c5);

ff(a1,x2,d1);

for i:=1 to 4 do begin

s:=0;

 for j:=1 to 4 do s:=s+c1[j,i]*d1[j];

 p[i]:=s;

 end;

  for i:=1 to 4 do begin

s:=0;

 for i:=1 to 6 do s:=s+d1[i]*q[i];

  r:=0;

  for i:=1 to 4 do r:=r+q[i]*q[i]; if r=0 then r:=1;

  m:=s/r;

  for i:=1 to 4 do x1[i]:=x2[i]-m*p[i];

  for i:=1 to 4 do

  x2[i]:=x1[i];

  ff(a1,x2,d1); e:=0;

for i:=1 to 4 do

e:=e+abs(d1[i]); writeln(e);

  end;   writeln;

for i:=1 to 4 do writeln(x2[i]);

readln;

ff(a1,x2,d1);

for i:=1 to 4 do

writeln(d1[i]);

readln;

end.

Відповідь:

x[1]=2.83391028226855E+000

x[2]= 1.52604035455125E-001

x[3]= -2.50422821563218E+000

x[4]=-1.36845473753385E+000

Завдання № 4

«Метод Гальоркіна. Рішення крайової задачі для звичайного диференціального рівняння»

Теоретичні відомості:

Нехай дана крайова задача

                                   (1)

                                           (2)

Для знаходження наближеного розв’язку цієї задачі вчинимо так. Задаємося на деякою системою лінійно-незалежних функцій , неперервних і двічі неперервно-диференційованих. Причому функція повинна задовольняти неоднорідним крайовим умовам (2), а повинні задовольняти однорідним крайовим умовам, тобто крайовим умовам

.

Розглянемо функцію як лінійну комбінацію

                                           (3)

де – невідомі константи.

Якщо базисні функції вибрати так, як це було описано вище, то буде задовольняти крайовим умовам (2), незалежно від вибору .

Розглянемо функцію . Вона називається відхилом і отримується при підстановці в рівняння (1) виразу (3). Якщо відхил дорівнює нулю, то маємо випадок точного розв’язоку. Задача розв’язання  звичайного диференціального рівняння зводиться до того, щоб відхил був мінімальним. Тоді вираз (3) буде наближеним розв’язком задачі.

Підбір коефіцієнтів породжує різні методи.

Суть методу Гальоркіна полягає в тому, що базисні функції повинні бути ортогональні до відхилу.

Умова ортогональності двох функцій має вигляд:

,    

В результаті одержимо систему лінійних алгебраїчних рівнянь щодо невідомих коефіцієнтів . Знайшовши ці коефіцієнти і підставивши їх у (3), одержимо наближений розв’язок крайової задачі.

Завдання:

Розв’яжіть крайову задачу методом Гальоркіна.

1

0

0

1

-3

2.5

0.5

0.5

1

2

2

0

-1

0

0.1

Розв’язання:

var   x:array[0..11] of real;

k,i,n,j:integer;  f:text;

a:array[0..10] of real;

h,s,w1,w0,v1,v0,c,d,a1,b:real;

y:array[0..11,0..11] of real;

function pp(x:real):real;

begin pp:=-1*x-4.8  end; {}

function gg(x:real):real;

begin gg:=-1*x*x   end;       {}

function ff(x:real):real;

begin ff:=(x-4.8)/((x*x)+1)   end;  {}

begin

writeln('vvedite A i B');

readln(c);

readln(d);

writeln('vvedite a,b');

readln(a1);

readln(b);

writeln('vvedite h');

readln(h);

n:=10;x[0]:=a1;x[10]:=b;

for i:=1 to n-1 do begin

x[i]:=x[i-1]+h;end;

for i:=0 to n+1 do

for j:=0 to n+1 do begin

y[i,j]:=0; end;

for i:=1 to n-1 do

begin

y[i,i-1]:=1/(h*h)-pp(x[i])/(2*h);

y[i,i]:=-2/(h*h)+gg(x[i]);

y[i,i+1]:=1/(h*h)+pp(x[i])/(2*h);

end;

w1:=0;w0:=-1; {}

v0:=0;v1:=2; {}

y[n,0]:=w0-(3*w1)/(2*h);

y[n,1]:=4*w1/(2*h);

y[n,2]:=-w1/(2*h);

y[n+1,n]:=v0+(3*v1)/(2*h);

y[n+1,n-1]:=-4*v1/(2*h);

y[n+1,n-2]:=v1/(2*h);

for i:=1 to n+1 do

y[i,n+1]:=ff(x[i]);

y[n,n+1]:=c;

y[n+1,n+1]:=d;

for i:=1 to n+1 do

for j:=0 to n+1 do begin

writeln(f,y[i,j]);end;

close(f);

end.

Відповідь:

x[1]= 1.000000000000E+000       y[1]=1.194000000000000E+000

x[2]= 1.1000000000000E+000     y[2]=1.219852968598830E+000

x[3]= 1.20000000000000E+000    y[3]=1.23236337303425E+000

x[4]= 1.30000000000000E+000    y[4]=1.2306078 0521146E+000

x[5]= 1.40000000000000E+000     y[5]=1.203789616983400E+000

x[6]= 1.5000000000000E+000        y[6]=1.14288 631474325E+000

x[7]= 1.60000000000000E+000      y[7]=1.032148900009743E+000

x[8]= 1.70000000000000E+000       y[8]=0.652080025048269E+000

x[9]= 1.80000000000000E+000       y[9]=0.570495899349582E+001

x[10]= 1.900000000000000E+000   y[10]=0.143779000178810E+001

x[11]=2.0000000000000000+000     y[11]=-0.5060236686980E+001




1. Тема 12 Логика речи Вопросов по этой теме на зачете НЕ БУДЕТ Тема 13
2. Реферат- Ведение деловой беседы
3. . Необходимо выбрать ряд характеристик одного товара по его наименованию.
4. Хочет развиваться свободно сбросить с себя оковы неуверенности побеждать и жить насыщенной жизнью
5. Учение о составе возникло значительно раньше двух других концептуальных систем ~ уже в античной натурфилос
6. Возлюби болезнь свою
7. гражданское общество
8. ЕКОНОМІЧНИЙ МЕХАНІЗМ РЕГУЛЮВАННЯ ЗАРОБІТНОЇ ПЛАТИ
9. Развитие читательского интереса младших школьников во внеурочной деятельности
10. учет значения земли как основы жизни и деятельности человека согласно которому регулирование отношений по
11. Артур Шопенгауэр- эристика или искусство побеждать в спорах
12. статьями 19 и 20 настоящего Федерального закона за исключением случаев указанных в части 4 настоящей статьи
13. Тема ’ 26. Экономический рост и циклический характер воспроизводства Занятие ’ 1.html
14. Контрольная работа- Страхование- теория и задачи
15. Информатика Исполнитель
16. реферат дисертації на здобуття наукового ступеня кандидата економічних наук К
17. Бухгалтерская отчетность в бюджетных организациях
18. Молочная продуктивность и воспроизводительные способности коров
19. Тема Оформлення актів Мета Навчитися правильно оформлювати акти знати види актів правила оформлення
20. Лабораторна робота 4 ldquo;Дослідження статичного режиму роботи транзистораrdquo; 1 Мета роботи- Дослідити