Программирование арифметических операций



Скачать 56.51 Kb.
Дата20.10.2012
Размер56.51 Kb.
ТипДокументы
Программирование арифметических операций
В случае, когда большая часть работы программы отводится арифметическим вычислениям, повысить скорость работы программы можно путём правильного программирования арифметических (и логических) выражений. Различные арифметические операции значительно различаются по быстродействию. Самыми быстрыми являются операции сложения и вычитания. Более медленным является умножение, затем деление. Относительно много времени тратится на обращение к подпрограммам.

Программируя арифметические выражения, следует выбирать такую форму их записи, чтобы количество “медленных” операций было сведено к минимуму.
Пример
Пусть необходимо вычислить многочлен 4-ой степени



Если вычисление степени производится перемножением основания, например , то в этом выражении содержится 10 умножений (“медленных операций”) и 4 сложения (“быстрые операции”). Однако, это же выражение можно записать в следующем виде:



Такая форма записи называется схемой Горнера. В этом выражении имеется 4 умножения и 4 сложения. Общее количество операций уменьшилось почти в 2 раза, соответственно уменьшится и время вычисления многочлена.

_____________________________________________________________________________

Задание №1
Напишите программу, в которой значение многочлена пятой степени



при заданном значении аргумента вычисляется без использования схемы Горнера и с её использованием. Сравните время вычисления в обоих случаях. Поскольку время, затрачиваемое на вычисление многочлена невелико, оцените время вычисления 10 000 000 значений.

Замечание:

Для вычисления времени выполнения программы можно использовать функцию

GetTime (var hour, minute, second, hund : word) модуля Dos, которая выдаёт текущее время в системных часах. При этом hour– текущий час, minute – минута, second – секунда, hund – сотые доли секунды.

Пример программы, вычисляющей время своей работы:
Program DoForNothing;

Uses Dos;

Var hour1, minute1, second1, hund1, hour2, minute2, second2, hund2 : word ;

i : Longint;

begin

GetTime(hour1, minute1, second1, hund1);

for i:=1 to 5000000 do

begin

i:=i;

end

GetTime(hour2, minute2, second2, hund2);

hour1:=hour2–hour1;

minute1:= minute2–minute1;

second1:=second2–second1;

hund1:=hund2–hund1;

writeln(‘Spending hours - ’, hour1);

writeln(‘Spending minutes - ’, minute1);

writeln(‘Spending seconds - ’, second1);

writeln(‘Spending hunds - ’, hund1);

end.
Входные данные

Отсутствуют
Выходные данные
Время, затраченное на вычисление многочлена по схеме Горнера и время, затраченное на вычисление многочлена без её использования.

_____________________________________________________________________________

Интерполяция
Часто требуется найти все значения функции y(x) на отрезке axb, если известны её значения в некотором конечном числе точек. В результате возникает следующая математическая задача.

Пусть на отрезке axb задана сетка , и в её узлах заданы значения функции y(x), равные , ,…, Требуется построить интерполянту – функцию f(x), совпадающую с y(x) в узлах сетки

, .

Известно, что любая непрерывная функция на отрезке [a,b] может быть хорошо приближена некоторым полиномом Pn­(x)=anxn+an-1xn-1+an-2xn-2+…+a0. Существует единственный полином степени n, совпадающий с y(x) в узлах сетки



Такой вид записи многочлена называют интерполяционным полиномом Лагранжа. Для оценки близости полинома Pn­(x) к функции y(x) предполагают, что существует n+1 производная y(n+1)(x). Тогда имеет место формула оценки погрешности

,

где – произвольная точка из отрезка [a,b].
Пример
Пусть на отрезке 1 ≤ x ≤ 10 задана сетка , , и в её узлах заданы значения функции y(x), равные , ,

Тогда интерполяционный полином Лагранжа имеет вид



Рассмотрим чему равно значение P(x) в точке x=1. Очевидно, что два последних слагаемых равны нулю, поскольку происходит умножение на нулевой множитель (1-1)=0, а дробь в первом слагаемом равна 1. Таким образом, P(1)=2. Аналогично, можно показать, что P(5)=12, P(10)=7.

Задание №2
Пусть на отрезке 1 ≤ x ≤ 10 задана сетка x0 < x1 < x2 и в её узлах заданы значения функции y(x), равные , ,

Напишите программу, вычисляющую значения интерполяционного многочлена Лагранжа.

Найдите с её помощью значение в точке x3. Значения x0, x1 , x2, x3 и y0 . y1, y2. для каждого варианта находятся в файле Approximation.txt

Входные данные

Вещественные значения x0, x1 , x2, x3 и y0 . y1, y2 необходимо вводить с клавиатуры

Выходные данные

Значение интерполяционного многочлена Лагранжа – P(x3) отображать на дисплее

_____________________________________________________________________________

Похожие:

Программирование арифметических операций iconИнформационная безопасность ахборот хавфсизлиги Повышение эффективности выполнения арифметических операций в алгебре с параметром Расулов О. Х., Гуп «unicon. Uz»
В статье предложены методы повышения эффективности выполнения арифметических операций алгебры с параметром, таких как модульное умножение...
Программирование арифметических операций iconДвоичная арифметика
В этой главе рассмотрим выполнение микропроцессором (МП) арифметических операций с двоичными числами
Программирование арифметических операций iconАксиомы вещественных чисел
Простейшие свойства арифметических операций (вывод из аксиом). Определения разности и частного
Программирование арифметических операций iconСложение и вычитание в пределах 10
Цель: закрепление арифметических понятий сложения, вычитания и взаимообратности этих операций
Программирование арифметических операций iconМикропроцессор (МП)
Алу арифметико-логическое устройство, предназначенное для выполнения арифметических и логических операций над данными и адресами...
Программирование арифметических операций iconЭмуляция троичной арифметики
...
Программирование арифметических операций iconВопросы к экзамену по дисциплине «Численные методы»
Источники погрешностей значения величин и их классификация. Погрешности основных арифметических операций и элементарных функций
Программирование арифметических операций icon10 б класс. По горизонтали. Устройство для создания материальных копий электронных документо
Микросхема, обеспечивающая увеличение быстродействия при выполнении арифметических операций
Программирование арифметических операций iconПрограмма на р записывается в виде последовательности символов: заглавные и прописные латинские буквы; арабские цифры
Соблюдается иерархия выполнения арифметических операций: стандартные функции;div, mod; *, /; +
Программирование арифметических операций iconАлгоритм решения
Даны действительные числа u1,u2,v1,v2,w1, Получить2u-7,где u,v,w–комплексные числа u1+iu2,v1+iv2,w1+i (определить процедуры выполнения...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org