русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Математичні функції


Дата додавання: 2014-11-27; переглядів: 936.


 

Взагалі кажучи, задача наближеного обчислення значення деякої математичної функції (наприклад, сінуса) не є елементарною. Її, як правило, не можна вирішити за допомогою алгоритму, подібного до алгоритму додавання дробів, тобто виконуючи фіксоване число арифметичних дій над цілими числами. Тому спеціалізований виконавець, орієнтований на математичні розрахунки, „знає” алгоритми наближеного обчислення деякого набору математичних функцій. До їх числа, як правило, входять такі елементарні функції, як sin(x), cos(x), ln(x), arctg(x), exp(x), sqrt(x), функції округлення, виділення цілої і дробової частини.

Розглянемо кілька обчислювальних алгоритмів.

Задача 1.4. Побудувати математичну модель і скласти програму обчислень координат матеріальної точки, кинутої з початковою швидкістю V0 у напрямку вектора а = (X0,Y0) у момент часу t.

Рішення.

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

x = t*V0*Cos(Alfa)

y = t*V0*Sin(Alfa) – g*t2/2

 

Проекції одиничного вектора напрямку на координатні осі обчислюються за формулами:

Cos(Alfa) = x0/sqrt(x02 + y02)

Sin(Alfa) = y0/sqrt(x02 + y02)

Тому

x = V0*t *x0/sqrt(x02 + y02)

y = V0*t*y0/sqrt(x02 + y02) – g*t2/2

 

Ці формули вирішують математично поставлену задачу, тобто представляють її математичну модель. Програміст, реалізуючи відповідний алгоритм, повинен подбати про економію ресурсів виконавця. Простіше кажучи, він має так розписати обчислення, щоб виконавець не робив ту саму роботу двічі. У нашому випадку це досягається попереднім обчисленням значення виразу V0/sqrt(x02 + y02), що входить у кожну з формул.

 

A = V0/sqrt(x0*x0 + y0*y0)

x = A*t*x0

y = A*t*y0 – g*t2/2

 

Наступне спрощення менш очевидне. Якщо у виразі для y винести за дужки t, однією операцією множення стане менше.

A*t*y0 – g*t2/2 = (A*y0 – g*t /2)*t

Турбота про економію ресурсів виконавця приводить до наступної послідовності обчислень:

A = V0/sqrt(x0*x0 + y0*y0)

x = A*t*x0

y = (A*y0 – g*t /2)*t

Алгоритм Рух точки;

Вхід

V0, x0, y0, t: Дійсні числа;

Вихід

x, y: Дісні числа;


<== попередня лекція | наступна лекція ==>
Кінець. | Константа


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн