Лабораторная работа №3 Арифметические операции и математические функции



Скачать 77.52 Kb.
Дата26.07.2014
Размер77.52 Kb.
ТипЛабораторная работа
Лабораторная работа №3

Арифметические операции и математические функции
Цель работы:

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



Общие сведения:

Арифметическое выражение - это совокупность констант, переменных и функций, объединенная знаками арифметических действий и круглыми скобками таким образом, чтобы данное выражение имело математический смысл.


Арифметические операции

операция

действие

тип операндов

тип результата

+

сложение

целый, вещественный

целый, вещественный

-

вычитание

целый, вещественный

целый, вещественный

*

умножение

целый, вещественный

целый, вещественный

/

деление

целый, вещественный

вещественный

DIV

целочисленное деление

целый

целый

MOD

остаток от деления

целый

целый

Правила записи арифметических выражений:

1. Арифметическое выражение записывается в строку.

2. Нельзя ставить подряд два знака арифметических операций.

3. Нельзя опускать знак умножения.

4. Можно использовать только круглые скобки.

5.

Приоритет выполнения арифметических операций следующий:

  1. Действия в скобках;

  2. Вычисление функций;

  3. Умножение, деление, DIV, MOD;

  4. Сложение, вычитание;

Cтандартные математические функции



обращение

тип аргумента

тип результата

функция

Abs(х)

целый, вещественный

целый, вещественный

модуль аргумента

|x|


Sin(х)

целый, вещественный

вещественный

синус (х)

Cos(х)

целый, вещественный

вещественный

косинус (х)

Arctan(х)

целый, вещественный

вещественный

арктангенс (х)

Exp(х)

целый, вещественный

вещественный

ех - экспонента

Frac(х)

целый, вещественный

вещественный

дробная часть х

Int(х)

целый, вещественный

вещественный

целая часть х

ln(х)

целый, вещественный

вещественный

натуральный логарифм ln(x)

Random (х)

целый

целый

псевдослучайное число [0,х]

Round(х)

вещественный

целый

округление до ближайшего целого

Trunc(х)

вещественный

целый


округленное число, отбрасывая дробную часть числа x.

Sqr(х)

целый, вещественный

вещественный

x2

Sqrt(X)

целый, вещественный

вещественный

корень квадратный из х

Например, запишем по правилам Паскаля следующее математическое выражение:



На Паскале это выглядит так:



Возведение в произвольную степень на Паскале

Стандартная функция sqr умеет возводить только во вторую степень.


Требуется вычислить значение с = ab. В зависимости от значений основания a и показателя степени b, вычисление степени может быть реализовано по-разному.
Если a > 0, а b может принимать произвольные вещественные значения, используем известную формулу ab = exp (b * ln a):

c:=exp(b*ln(a));


Если b - целое число (вообще говоря, "не слишком большое" по модулю), а a - любое (не равное нулю при b < 0), возведение в степень может быть реализовано с помощью цикла:

var i:integer;

{...}

c:=1;


for i:=1 to abs(b) do c:=c*a; {перемножение одинаковых сомножителей b раз}

if b<0 then c:=1/c; {учёт знака показателя}


Для целого b и не равного нулю a выгоднее считать с помощью экспоненты и логарифма, не забывая о том, что не существует логарифмов от отрицательных чисел:

c:=exp(b*ln(abs(a))); {степень положительного основания}

if (odd(b)=true) and (a<0) then c:=-c; {если основание отрицательно, а показатель нечетный, то меняем знак}
Вычисление корня произвольной степени на Паскале

Стандартная функция sqrt умеет извлекать только квадратный корень.


Извлечь корень степени n (где n - натуральное) из числа a можно всегда, кроме случая, когда a < 0 и при этом n четно. Извлечь корень степени n из числа a означает возвести число a в степень 1/n. При этом знак корня совпадает со знаком a. Ниже приводится код функции, вычисляющей корень произвольной степени n от своего аргумента a:

function root(a:real;n:word):real;

{Тип word здесь указывает, что n положительно}

var r: real;

begin

r:=exp(ln(abs(a))/n); {корень из модуля}



if a<0 then root:=-r else root:=r {учет знака}

end;
Вычисление логарифмов на Паскале

Стандартная функция ln вычисляет только натуральный логарифм. Для вычисления логарифмов по другим основаниям можно применить формулу log a b = ln b / ln a:

c:=ln(b)/ln(a);

В частности, для вычисления десятичного логарифма lg b можно записать:

c:=ln(b)/ln(10);


Порядок выполнения работы:

Составьте программу, которая подсчитывает и выводит значение t1 и t2 по формулам, которые приведены в Вашем варианте индивидуального задания (номер варианта совпадает с номером в списке журнала). Определите области допустимых значений параметров формул и задайте произвольные значения из этих областей. Значения параметров с именами x и y должны вводиться с клавиатуры, значения остальных - задаваться как начальные значения при объявлении соответствующих переменных. Допускается (и даже желательно) упростить / разложить формулы для того, чтобы обеспечить минимизацию объема вычислений.



Пример

3.1. Разработка алгоритма решения.

3.1.1. Основной алгоритм

Алгоритм решения задачи - линейный и состоит из:



  • ввода значений x и y;

  • вычисления значения t1;

  • вычисления значения t2;

  • вывода значений t1 и t2.


3.1.2. Оптимизация алгоритма

Перед непосредственным программированием алгоритма проанализируем, как в нем можно изменить объем вычислений.



  1. Выражение a*x встречается один раз в первой формуле и дважды - во второй. Следовательно, можно один раз произвести умножение a*x, а потом использовать этот результат.

  2. Во второй формуле дважды встречается умножение квадратного корня на тангенс - это вычисление можно так же сделать один раз.

  3. Выражение c2-b2 можно разложить на (c+b)*(c-b). До разложения в выражении было две операции умножения (возведение в степень 2) и одна - сложения. После разложения - два сложения и одно умножение, что выгоднее для вычислений.


3.1.3. Ограничения на значения параметров

  1. Аргумент функции, которую вычисляет логарифм, не может быть 0 или меньше. Отсюда вытекают требования к значениям: a * x + b > 0; y * x + d > 0

  2. Аргумент функции извлечения квадратного корня не может быть меньше 0, отсюда: c2 - b2 >= 0

  3. В знаменателе выражения не может быть 0, отсюда:

  4. кроме того:


3.2. Определение переменных программы

Для решения задачи нам понадобятся переменные для представления каждого параметра формул - a, b, c, d, x, y и результатов - t1, t2. Кроме того, придется ввести дополнительную переменную a*x для хранения промежуточного результата, необходимого для оптимизации. Тип всех переменных - double.


3.3. Отладка программы

При отладке программы можно проверять правильность выполнения каждой операции. Для этого сложные операторы-выражения, разбиваются на последовательность операторов-выражений, в каждом из которых выполняется только одна операция. Результат каждой такой операции выводится на экран или отслеживается в пошаговом режиме.


4.4. Результаты работы программы

При работе программы на экран было выдано следующее:

Введите x, y >3.3 1.1

t1 = 0.348897



t2 = 0.0133405
Варианты заданий:

1





2





3





4





5





6





7





8





9





10





11





12





13





14





15





16





17





18





19





20





21





22





23





24





25





26





27





28





29





30





31





Похожие:

Лабораторная работа №3 Арифметические операции и математические функции icon«Исследование элементарных функций»
Функции с (постоянная), xⁿ, аПрименяя к этим функциям арифметические действия или операции функции от функции, мы будем получать...
Лабораторная работа №3 Арифметические операции и математические функции iconЛабораторная работа № Арифметические выражения
Арифметические выражения строятся из операндов, арифметических операций и круглых скобок
Лабораторная работа №3 Арифметические операции и математические функции iconВопросы к экзамену по дисциплине «Программирование»
Базовые математические операции и стандартные математические функции в Turbo Pascal. Запись математических выражений
Лабораторная работа №3 Арифметические операции и математические функции iconКомплексные числа. Комплексные числа и арифметические операции над ними
Арифметические операции над действительными числами ( сложении е, вычитание, умножение и деление на число, отличное от нуля) снова...
Лабораторная работа №3 Арифметические операции и математические функции iconИсследование изучение строения и физиологические процессы. Эксперимент серия опытов. Лабораторная работа
Совокупность относительно однородных приемов, операции освоения действительности ( теоретические- практические) подчиненных расширению...
Лабораторная работа №3 Арифметические операции и математические функции iconЛабораторная работа №1 Работа в Oracle Database Express Edition 1 Лабораторная работа №6
Лабораторная работа Выполнение расчетов с использованием программирования в среде Visual Basic for Applications
Лабораторная работа №3 Арифметические операции и математические функции iconЛабораторная работа №1 Цель. Познакомиться с пакетом «Matlab»
Цель. Познакомиться с пакетом «Matlab». Научиться выполнять простейшие математические операции в диалоговом режиме, научиться использовать...
Лабораторная работа №3 Арифметические операции и математические функции iconПрограммирование арифметических операций
Различные арифметические операции значительно различаются по быстродействию. Самыми быстрыми являются операции сложения и вычитания....
Лабораторная работа №3 Арифметические операции и математические функции iconЛабораторная работа № Машинные коды
...
Лабораторная работа №3 Арифметические операции и математические функции iconЛабораторная работа №1 Функции Win32 api для работы с файлами Лабораторный практикум Математический факультет
Создать приложение, в котором работа с файлами и каталогами организована через системные вызовы (функции Win32 api)
Разместите кнопку на своём сайте:
ru.convdocs.org


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