Добавил:
19-КСУ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика 2 семестр / obrazets_vypolnenia_laboratornykh_rabot_2_semestr

.pdf
Скачиваний:
2
Добавлен:
16.09.2022
Размер:
2.94 Mб
Скачать

Метод трапеций

 

 

 

 

 

 

 

 

 

 

 

 

 

Итерационная формула

 

(

( ) (

)

( ))

 

 

 

 

 

 

 

 

 

 

(

( )

( )

 

( ))

 

(

( ) ( )

( )

( )

( )

 

 

 

 

 

 

( )

( )

( )

 

( ))

(

 

 

 

 

 

(

) (

)

 

 

 

 

 

 

(

)

 

 

 

)

 

 

 

 

 

 

 

 

 

 

Вычислим погрешности вычислений Абсолютная погрешность

Относительная погрешность

F(x)

15.39

7,36

 

3,51

S7

S8

 

 

 

S1

1,75

S6

 

 

 

-0,56

S4

 

- 1,44

S5

- 2,21

S3

S2

 

Рисунок Метода трапеций

Метод парабол

 

 

 

 

 

 

 

 

 

 

 

 

Итерационная формула

 

 

 

 

(

(

)

 

 

( ))

 

 

 

 

 

 

Где

( )

 

 

 

 

 

 

 

 

 

 

∑ (

)

 

 

 

 

 

 

 

 

 

(

(

)

 

 

 

( ))

 

 

 

 

 

 

 

 

 

 

 

 

(

)

 

(

)

(

)

 

(

)

(

 

)

 

 

(

)

 

(

)

 

(

)

(

)

(

)

 

 

 

 

(

(

)

(

 

 

 

 

(

))

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычислим погрешности вычислений

 

 

 

 

Абсолютная погрешность

 

 

 

 

 

 

 

 

31

Относительная погрешность

F(x)

25.84

7.36

 

S4

S1

S2

S3

 

 

 

-0.56

 

 

 

-1.44

 

 

 

 

 

x

 

 

 

 

 

 

 

Рисунок Метода парабол

Метод центральных прямоугольников

Составим таблицу значений интегрируемой функции в центральных точках каждого интервала.

 

 

xzr

 

 

 

 

 

 

 

f(xzr)

 

 

 

 

xzr1=-1,45

 

 

 

 

xzr12 – 3* xzr1=(-1,45)2 -3*(-1,45)=6,452

 

 

xzr 2= xzr 1+h=-1,45+1,1=-

xzr 22 – 3* xzr 2=(-0,35)2 -3*(-0,35)= 1,172

 

 

0,35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xzr 3= xzr 2+h=-0,35+1,1=0,75

xzr 32 – 3* xzr 3=0,752 -3*0,75= -1,688

 

 

 

xzr 4= xzr 3+h=0,75+1,1=1,85

xzr 42 – 3* xzr 4=1,852 -3*1,85= - 2,127

 

 

 

xzr 5= xzr 4+h=1,85+1,1=2,95

xzr 52 – 3* xzr 5=2,952 -3*2,95= - 0,148

 

 

 

xzr 6= xzr 5+h=2,95+1,1=4,05

xzr 62 – 3* xzr 6=4,052 -3*4,05= 4,253

 

 

 

 

 

 

 

 

xzr 7= xzr6+h=4,05+1,1=5,15

xzr 72 – 3* xzr 7=5,152 -3*5,15=11,073

 

 

 

xzr 8= xzr7+h=5,15+1,1=6,25

xzr 82 – 3* xzr 8=6,252 -3*6,25= 20,313

 

 

 

Итерационная формула

 

 

(

)

 

 

 

 

 

 

 

 

 

(

)

( (

)

(

)

(

)

(

)

(

)

(

)

(

)

(

))

 

(

 

 

(

 

) (

 

)

 

(

)

 

 

 

 

)

 

 

 

 

 

 

 

 

 

Вычислим погрешности вычислений

 

 

 

 

 

 

 

 

 

Абсолютная погрешность

 

 

 

 

 

 

 

 

 

 

Относительная погрешность

F(x)

20.313

 

11.073

 

 

 

 

6.452

 

 

S8

 

4.253

 

 

S7

 

 

 

 

S1

1.172

 

 

S6

 

 

 

 

-0.148

 

S4

 

 

 

 

 

 

-1.688

 

S5

 

 

-2.127

S3

x

 

 

 

 

S2

 

 

 

Рисунок Метода центральных прямоугольников

Реализация в MS Excel

33

Реализация метода в Mcad

35

Программа на языке СИ

#include “stdafx.h” #include <iostream> #include <math.h> using namespace std; double f(double x)

{ double Y; Y=pow(x,2)-3*x;

return Y;}

void main()

{setlocale (LC_ALL,”Russian”);

double h,a,b,x[10],y[10],S,ILP,IPP,ITR,C1,C2,IPR,xzr[10],yzr[10],IZR,IT,D,O; int i,n;

cout<<”Введи n,a,b\n”; cin>>n>>a>>b;

cout<<”Введи точное значение интеграла\n”; cin>>IT;

h=(b-a)/n;

cout<<”шаг “<<h<<endl;

cout<<”Таблица значений подынтегральной функции\n”; cout<<”\tx\tf(x)\n”;

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

{x[i]=a+i*h;

y[i]=f(x[i]); printf(“%9.3f\t%6.3f\n”,x[i],y[i]);} cout<<”Метод левых прямоугольников\n”;

S=0;

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

S=S+f(x[i]);

ILP=h*S;

printf(“ILP= %6.3f\n”,ILP);

cout<<”Абсолютная и относительная погрешность метода левых прямоугольников\n”;

D=fabs(ILP-IT); O=D/fabs(IT)*100;

printf(“D= %6.3f\tO=%6.3f\n”,D,O); cout<<”Метод правых прямоугольников\n”;

S=0;

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

S=S+f(x[i]);

IPP=h*S;

printf(“IPP= %6.3f\n”,IPP);

cout<<”Абсолютная и относительная погрешность метода правых прямоугольников\n”;

D=fabs(IPP-IT); O=D/fabs(IT)*100;

printf(“D= %6.3f\tO=%6.3f\n”,D,O); cout<<”Метод трапеций\n”;

S=0;

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

S=S+f(x[i]);

ITR=h*((f(x[0])+f(x[n]))/2+S); printf(“ITR= %6.3f\n”,ITR)

cout<<”Абсолютная и относительная погрешность метода трапеций\n”;

37

D=fabs(ITR-IT); O=D/fabs(IT)*100;

printf(“D= %6.3f\tO=%6.3f\n”,D,O); cout<<”Метод парабол\n”;

C1=0;

for(i=1;i<n;i=i+2)

C1=C1+f(x[i]);

C2=0;

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

C2=C2+f(x[i]);

IPR=h/3*(f(x[0])+4*C1+2*C2+f(x[n])); printf(“IPR= %6.3f\n”,IPR);

cout<<”Абсолютная и относительная погрешность метода парабол\n”;

D=fabs(IPR-IT); O=D/fabs(IT)*100;

printf(“D= %6.3f\tO=%6.3f\n”,D,O);

cout<<”Таблица значений подынтегральной функции для метода центральных прямоугольников\n”;

cout<<”\txzr\tf(xzr)\n”; for(i=0;i<n;i++) {xzr[i]=a+(i+0.5)*h; yzr[i]=f(xzr[i]);

printf(“%9.3f\t%6.3f\n”,xzr[i],yzr[i]);} cout<<”Метод центральных прямоугольников\n”;

S=0;

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

S=S+f(xzr[i]);

IZR=h*S;

printf(“IZR= %6.3f\n”,IZR);

cout<<”Абсолютная и относительная погрешность метода центральных прямоугольников\n”;

D=fabs(IZR-IT); O=D/fabs(IT)*100;

printf(“D= %6.3f\tO=%6.3f\n”,D,O);

}

Лабораторная работа №4 Тема: «Аппроксимация и интерполяция»

Постановка задачи: Дана таблично заданная функция {xi,yi}

i

0

1

2

3

4

x

0,2

0,4

0,7

0,85

1

y

0,1

0,5

0,6

0,9

0,7

Аппроксимировать точки полиномом 1 и 2 степени

Интерполировать точки (методом неопределѐнных коэффициентов) полиномом 1 и 2 степени

Аппроксимация

Название метода

Система для нахождения коэффициентов

Ответ

 

 

 

 

 

 

полинома

 

 

 

 

 

 

Метод

 

 

 

 

полином 1 степени

 

 

 

P1(x)=a0+a1*x

наименьших

 

 

 

n a0 a1 xi yi

 

 

 

квадратов

 

 

 

 

 

 

 

 

 

 

 

i

 

i

 

 

 

 

(аппроксимация)

 

 

 

 

 

 

 

xi yi

 

 

 

 

 

xi a0 a1 xi 2

 

 

 

 

 

 

i

 

 

 

i

 

i

 

 

 

 

 

 

 

 

 

полином 2 степени

 

 

 

 

 

 

 

 

n a 0

x i a1

x

2

a

2 y i

 

 

P2(x)=a0+a1*x+a2*x2

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

i

i

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x i a 0

x i 2 a1

x

3

a 2 x i y i

 

 

 

 

 

 

i

 

 

i

 

 

i

i

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

a 0

x i

3

a1

 

4

 

2 x i

2

y i

 

 

x i

 

 

x i

a

 

 

 

i

 

 

 

i

 

 

i

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ручной счет.

Аппроксимация полиномом 1 степени

Зададим общий вид полинома 1 степени P1(x)=a0+a1*x. Для нахождения коэффициентов полинома необходимо решить систему линейных уравнений, где i= 0..4

 

n a0 a1 xi yi

 

 

 

 

 

i

i

 

 

 

 

 

a1 xi 2 xi yi

 

 

 

xi a0

 

 

 

i

 

i

i

 

 

 

Вычислим значения xi , xi2 , yi , xi yi .

 

 

i

i

i

i

 

xi

x0

x1 x2 x3 x4

 

xi 0,2 0,4 0,7 0,85 1 3,15

i

 

 

 

 

i

 

xi2 x02 x12 x22 x32

x42 xi

2 0,22 0,42 0,72 0,852 12 2,413

i

 

 

 

 

i

 

 

 

 

 

 

 

yi y0

y1 y2

y3 y4

yi 0,1 0,5 0,6 0,9 0,7 2,8

i

 

 

 

 

i

 

xi yi x0 y0 x1y1 x2 y2 x3 y3 x4 y4 i

xi yi 0,2 0,1 0,4 0,5 0,7 0,6 0,85 0,9 1 0,7 2,105 i

Получаем систему:

5 a0 3,15a1 2,83,15 a0 2,413a1 2,105

Запишем систему в матричном виде.

 

5

3,15

a

0

 

 

2,8

 

 

 

 

 

 

 

3,15

2,413

a1

 

2,105

Решим систему методом Гаусса.

39

 

 

 

 

 

 

 

 

5

3,15

2,8

 

 

 

 

 

 

 

 

 

 

Выполним деление 1-е уравнение на 5,а 2-е уравнение на 3,15. В результате

 

3,15 2,413

2,105

 

 

 

 

 

 

 

 

 

 

 

 

получаем систему.

 

1

0,63

 

0,56

 

 

 

 

 

 

 

 

 

 

 

 

 

Перепишем 1- е уравнение без изменений, а из 2-е уравнения вычтем 1-е

 

 

 

 

 

 

 

 

 

1

0,766

 

0,668

 

 

 

 

 

 

 

 

 

 

 

1

0,63

0,56

уравнения и результат запишем на место второго уравнения. Получим систему

 

 

 

.

 

0

0,136

0,108

 

 

 

 

 

 

Запишем полученные данные в виде системы линейных уравнений: a0 0,63a1 0,56 .

0,136a1 0,108

уравнения найдѐм a

0,108

. Получим a

0,797 . Из 1-го уравнения найдѐм a

0,56

 

1

0,136

 

1

0

 

 

 

 

 

 

a0 0,56 0,63 0,797

a0 0,058.

 

 

 

Запишем найденное уравнение P1(x) 0,058 0,797 x .

 

Найдѐм отклонения полученного полиномаP1(x) от заданных точек y.

В 0-ой точке

O0 P1( x0 ) y0

P1(x0 ) 0,058 0,797 x0

P1(0,2) 0,217

O0 0,217 0,1 0,117

Из 2-го

0,63 a1 .

В 1-ой точке

O1 P1( x1 ) y1

P1(x1 ) 0,058 0,797 x1

P1(0,4) 0,377

O1 0,377 0,5 0,123

В 2-ой точке

O2 P1( x2 ) y2

P1(x2 ) 0,058 0,797 x2

P1(0,7) 0,616

O2 0,616 0,6 0,016

В 3-ей точке

O3 P1( x3 ) y3

P1(x3 ) 0,058 0,797 x3

P1(0,85) 0,735

O3 0,735 0,9 0,165

В 4-ой точке

O4 P1( x4 ) y4

P1(x4 ) 0,058 0,797 x4

P1(1) 0,855

O4 0,855 0,7 0,155

Построим график функции P1( x ) и отметим исходные точки на этом же графике.