Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Chis_Met_Lab_2010.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

5.3 Контрольні питання

1. Що називається лівою, правою і центральною різницевими похідними? Який порядок апроксимації забезпечують різницеві похідні?

2. Чому операцію обчислення різницевих відношень називають некоректною?

3. Чому дорівнює оптимальний крок при апроксимації першої похідної правим (лівим) різницевим відношенням?

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

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

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

7. Як будуються формули чисельного диференціювання, які засновані на вживанні інтерполяційного многочлена?

8. Який порядок апроксимації забезпечують ці формули чисельного диференціювання?

Додаток 5.1

/*Обчислення похідної функції по її визначенню на прикладі функції y = cosx */

#include <stdio.h>

#include <conio.h>

#include <cmath>

float derivative(float, float);

void main()

{

float deltax,der1,der2,e,e1,x;

const int a=10;

printf ("Enter the value of x and accuracy of epsilon\n");

scanf_s("%f%f",&x,&e);

deltax = 0.1; der1 = derivative(x,deltax);

do

{

deltax = deltax/a;

der2 = derivative(x, deltax);

e1 = fabs(der1-der2);

der1 = der2;

}

while (e1>=e);

printf ("\n\nx = %f Derivative y'= %f",x,der2);

printf ("\nApproach error= %f\n",e1);

printf("\nPress any key for continuation...");

_getch();

}

//функція

float derivative(float x, float y)

{

float f;

f = (cos(x+y) - cos(x))/y;

return f;

}

Додаток 5.2

/*Обчислення похідних першого й другого порядків з однаковою похибкою

залежно від кроку за формулами чисельного диференціювання*/

#include <stdio.h>

#include <conio.h>

#include <cmath>

void main ()

{

int i,n=15;

double a,b,h,h1,h2,x,y1,y2;

double *y=new double[n];;

printf ("Enter n \n");// n - число розбіття відрізку [a,b]

scanf_s("%i",&n);

if((n>=3)&&(n<=15))

{

printf ("Enter the coordinates а, b\n");

//a, b - координати краєвих крапок

scanf_s("%lf%lf",&a, &b);

printf ("Enter the values of function y(i) in knots,");

printf ("thus y(0) = f(a), y(n) =f(b)\n");

for (i = 0; i<=n; i++)

scanf_s("%lf", &y[i]);

printf ("Enter the value of x\n");

scanf_s("%lf", &x);

h=(b-a)/n;

i=floor((x-a)/h+h/2);

h1=2*h;

h2=h*h;

if(i==0)

{

y1=(-3*y[0]+4*y[1]-y[2])/h1;

y2=(2*y[0]-5*y[1]+4*y[2]-y[3])/h2;

};

if((i>0)&&(i<n))

{

y1=(-y[i-1]+y[i+1])/h1;

y2=(y[i-1]-2*y[i]+y[i+1])/h2;

};

if(i==n)

{

y1=(y[n-2]-4*y[n-1]+3*y[n])/h1;

y2=(-y[n-3]+4*y[n-2]-5*y[n-1]+2*y[n])/h2;

};

printf ("x = %f derivative1 = %f",x,y1); //перша похідна

printf ("derivative2 = %f",y2); //друга похідна

};

printf("\nPress any key for continuation...");

_getch();

delete []y;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]