Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сука лаби.docx
Скачиваний:
17
Добавлен:
12.05.2015
Размер:
848.39 Кб
Скачать

Результат виконання

a = -20 b = 20

bit complement a,b

a = ffffffec b = 14

bit inverse a

a =ffffffeb

Примітка

Оператор cout виконує неявне перетворення систем числення згідно опису типу змінної. Для явного перетворення використовуються параметри : dec (decimal) – у десяткову , hex (hexadecimal) - у шістнадцяткову .

Лабораторна робота № 2

РОЗРАХУНОК ЗНАЧЕНЬ АРИФМЕТИЧНИХ ВИРАЗIВ

Мета роботи - створення програми для розрахунку значень ариф­- метичних виразiв,оцiнка похибок розрахункiв

Порядок виконання роботи

А.При пiдготовцi:

1.Ознайомитися з програмою (файл LAB2.CPP),яка забезпечує розрахунок значень арифметичного виразу

a = xy - y2 + 7,2

з одинарною,подвiйною та пiдвищеною точностями та виразу

z = sin(x)

з подвiйною точнiстю.

2.Написати програму розрахунку значень арифметичних вира­зiв a i z iз таблицi.Значення a обчислити з одинарною, подвiйною та пiдвищеною точностями, щоб потiм порiвняти результати з точним значенням та оцiнити похибку округлення при розрахунках на ПК.

3.Обчислити найбiльш можливу похибку розрахунку значення виразу a на ПК.

В.У лабораторii:

1.Ввести програму у ПК та виконати ii.

2.Порiвняти отриманi результати з розрахунками на паперi.

У разi потреби скористуватися програмою з лабораторноi роботи № 1 (файл LAB1.CPP) для пояснення розбiжностей мiж отриманими значеннями та точним значенням виразу a.

Змiст звiту:

1.Програма.

2.Оцiнка похибок розрахункiв.

3.Результати виконання програми з поясненнями.

4.Висновки по роботi.

варіанту

Арифметичні вирази

Значення

змінних

1

x=4,3

y=2,1

2

x=3,5

y=1,5

3

x=5,2

y=2,6

4

x=3,45

y=1,15

5

x=2,7

y=1,35

6

x=2,4

y=1,5

7

x=1,2

y=2,1

8

z=31lg(x+4)-2,1arctg(sin0,7x)+0,00027cos0,7x

a=xxy+2yy-1

x=-2,3

y=3,1

9

x=2,4

y=0,6

10

x=-5,1

y=1,7

11

x=3,4

y=0.85

12

x=6,3

y-0,7

13

x=6,2

y=3,1

14

x=4,2

y=2,1

15

x=1,2

y=0,6

16

x=0,5

y=1,5

17

x=1,4

y=0,7

18

x=1,1

y=0,7

19

x=2,1

y=1,1

20

x=5

y=1,5

21

x=1,5

y=4,5

22

x=1,5

y=0,9

23

x=1,4

y=2,5

24

x=1,7

y=1,7

25

x=1,15

y=2,3

26

x=0,25

y=0,1

27

x=3,3

y=6,6

28

x=0,4

y=-0,8

29

x=0,7

y=1,4

30

x=1,6

y=0,8

31

x=3,2

y=1,6

Програми

/*Лабораторна робота 2 (файл LAB2.СPP)*/

/*Розрахунок значень арифметичних виразiв*/

#include <iostream.h>

#include <math.h>

#include <conio.h>

int main ()

{

/* значення a, x, y, z з пiдвищеною точнiстю */

long double a1, x1, y1;

/* значення a, x, y, z з подвiйною точнiстю */

double a2, x2, y2, z;

/* значення a, x, y з одинарною точнiстю */

float a3, x3, y3;

clrscr ();

/*Розрахунок значення арифметичного виразу

a=xy – y2 + 7.2 */

cout << "Введiть значення x (2.4) три рази\n";

cin >> x1 >> x2 >> x3;

cout << "\nВведiть значення y (1.5) три рази\n";

cin >> y1 >> y2 >> y3;

a1 = x1*y1*y1 - y1 + 7.2l;

a2 = x2*y2*y2 - y2 + 7.2;

a3 = x3*y3*y3 - y3 + 7.2f;

cout.precision(8);

cout<<"\n Одинарна точнiсть \n "<<"a3="<<a3<<" x3="<<x3<<" y3="<<y3;

cout.precision(17);

cout<<"\n Подвiйна точнiсть \n "<<"a2="<<a2<<" x2="<<x2<<" y2="<<y2;

cout.precision(20);

cout<<"\n Пiдвищена точнiсть \n "<<"a1="<<a1<<" x1="<<x1<<" y1="<<y1;

getch ();

/* арифметичний вираз z=sin(x)*/

z = sin(x2); cout.precision(17);

cout << "\n\n z=" << z;

getch(); return 0;

}

Додаток

Математичні функції бібліотеки math.h

Функція математики

Функції С/С++

Функція математики

Функції С/С++

arc cos x

acos(x)

ln x

log(x)

arc sin x

asin(x)

lg x

log10(x)

arc tg x

atan(x)

xy

pow(x,y)

cos x

cos(x)

sin x

sin(x)

Ch x

cosh(x)

sh x

sinh(x)

ex

exp(x)

√ x

sqrt(x)

| x |

fabs(x)

tg x

tan(x)

Th x

tanh(x)

Наведені у таблиці функції є функціями подвійної точності (тип double ) , аргумент х також типу double . Функції підвищеної точності мають суфікс l у імені функції, наприклад, sinl(x) , cosl(x) , tanl(x) ,sqrtl(x) , аргумент х також типу long double .

Функція abs(x) повертає абсолютне цілочислове значення (тип int ) для цілочислового (тип int ) аргумента х .

Функція labs(x) повертає абсолютне цілочислове значення (тип long int ) для цілочислового (тип long int ) аргумента х .

Функція pow10(i) повертає значення типу double 10i для аргумента типу int .

Для функції √ (x2 + y2) є функція типу double hypot(x,y) для аргументів типу double .

Корисні для використання у програмах наведені у бібліотеці округлені до 21 десяткової цифри поширені у математиці константи

/* Constants rounded for 21 decimals. */

І’мя константи

Значення

Позначення у програмі

E

2.71828182845904523536

M_E

log2 e

1.44269504088896340736

M_LOG2E

lg e

0.434294481903251827651

M_LOG10E

ln 2

0.693147180559945309417

M_LN2

ln 10

2.30258509299404568402

M_LN10

Π

3.14159265358979323846

M_PI

π/2

1.57079632679489661923

M_PI_2

π/4

0.785398163397448309616

M_PI_4

1/ π

0.318309886183790671538

M_1_PI

2/ π

0.636619772367581343076

M_2_PI

1/√ π

0.564189583547756286948

M_1_SQRTPI

2/√ π

1.12837916709551257390

M_2_SQRTPI

√ 2

1.41421356237309504880

M_SQRT2

1/√ 2

0.707106781186547524401

M_SQRT_2

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

Приклад.

… float x,y; y = sin(x); //неявне перетворення типів float до типів double .

ПОХИБКИ РОЗРАХУНКIВ НА ЕОМ

1.ОСНОВНI ПОНЯТТЯ

_ _ _ _

x=x+ex бx=ex/x ; y=y+ey бy=ey/y ;

_ _

x,y - точнi значення, x,y -наближенi значення;

ex,ey -абсолютнi похибки, бх,бy- вiдноснi похибки.

2.ВIДНОСНА ПОХИБКА ОКРУГЛЕННЯ НА ПЕОМ

Розрахунки з одинарною точнicтю

б0 <= 2-23 = 1.2*10-7 .

Розрахунки з подвiйною точнiстю

б0 <= 2-52 =2.2*10-16 .

3.ПОШИРЕННЯ ПОХИБОК ПРИ ВИКОНАННI ОПЕРАЦIЙ

3.1. ДОДАВАННЯ

_ _

x y

z=x+y; ez=ex+ey; бz=бx----- + бy----- .

_ _ _ _

x + y x + y

3.2. ВIДНIMАННЯ

_ _

x y

z=x-y; ez=ex-ey; бz= бx ------ + бy --------.

_ _ _ _

x – y y - x

3.3.MНОЖЕННЯ

_ _

z=x*y; ez=ex*y + ey*x ; бz = бx + бy .

3.4. ДIЛЕННЯ

_ _ 2

z=x/y; ez=ex/y - ey/y ; бz = бx - бy.

m

3.5. z=x ; бz = m*бx.

__

3.6. z=Vx ; бz = 0.5*бx.

4. ПОХИБКА ПРИ ВИКОНАННI ОПЕРАЦII НА ПЕОМ

Z = X <операцiя> Y ; бZ <= бZ + б0

операцiя округлення

5.ПРИКЛАД РОЗРАХУНКУ ПОХИБКИ ОТРИMАННЯ ЗНАЧЕННЯ ВИРАЗУ НА ЕОМ

Вираз z = (x + y)/v*x + w.Змiннi x, y, v, w мають точнi значення,

наприклад, x = 4.3, y = 2.4, v = 3, w = 7.6 ,тобто, ex=ey=ev=ew=0;

точне значення виразу z = 17.06.

Розрахунок з одинарною точнiстю.

5.1.Перша опера

a = x + y; бa <= б0 =1.2*10-7 ; бx=бy=0.

5.2.Друга операцiя:

b=a/v; бb <= бa - бv + б0 =1.2*10-7 + 1.2*10-7 = 2.4*10-7 ;

бv = 0.

5.3.Третя операцiя:

c=b*x; бc <= бb + бx + б0 = 2.4*10-7 + 0 + 1.2*10-7 =3.6*10-7 .

5.4.Четверта операцiя:

_ c w

z=c+w; бz <= бc ------ + бw ------ + б0 = 3.6*10-7 *9.46/(9.46+7.6)+

c + w c + w

+ 0 + 1.2*10-7 = 1.9996*10-7 + 1.2*10-7 =3.196*10-7 .

dz - гранична абсолютна похибка;

_ _

z - dz <= z <= z +dz ;

_

dz = z * бz =17.06 3.196*10-7= 5.45*10-6 ;

17.05999455 <= z <= 17.06000545.

Виконані за допомогою програми LAB2.СPP розрахунки дають такі значення z :

z = 17.06000137 (з одинарною точнiстю),

z = 17.05999999999999872 (з подвiйною точнiстю) ,

z = 17.06000000000000000168 (з пiдвищеною точнiстю) .

Розрахунки у системі Mathcad дають такі результати :

Лiтература

Д.Мак-Кракен,У.Дорн Численные методы и программирование

на Фортране.-М.;Мир,1977

Розрахунок значення виразу у Mathcad

1.Введення аргументів та їх значень

Введіть з клавіатури ім’я аргументу , натисніть „ : ” або „ := „ із табло Calculator .Додайте числове значення (можливий вираз) і натисніть Enter .

Наприклад,

x x: x:= x:=3.5 Enter  x:=3.5

2.Розрахунок виразу

Введіть з клавіатури потрібний вираз і натисніть „ = ” і отримайте значення виразу (усі змінні у виразу перед розрахунком повинні мати значення).

Щоб задіяти стандартну функцію, ввійдіть у меню Insert ,виберіть Function (Ctrl+E) ,з’являється вікно Insert Function .Введіть ім’я змінної,у підвікні Function Name виберіть потрібну функцію і натисніть Insert .

Наприклад

x:=3.5 x*sin(x)= -1.228 Enter

3.Щоб змінити формат результату ,треба тицьнути на ньому.З’явиться вікно Result format ,у якому вибрати потрібний із

General – звичайний,неявний,з порядком ,коли він більше або дорівнює 3 ,

Decimal - із заданою кількостю десяткових цифр після крапки,

Scientific - значення з порядком ,

Engineering – технічний формат.

(Найбільша кількість цифр – 17 ,тобто розрахунки виконуються з подвійною точністю).

Наприклад,

12345.6789*105 + 3432.345667*103 = 1.338002*109 (General з 7 цифрами , Scientific, Engineering) , 1238000235.6670001 (Decimal )

Лабораторна робота № 3

ВИВЧЕННЯ ПЕРЕТВОРЕННЯ ТИПIВ У ВИРАЗАХ ПРИСВОЮВАННЯ

Мета роботи - вивчення змiн значень та форматiв зображення у пам'ятi ЕОМ даних у виразах присвоювання