Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Составление программ. Глобальные и локальные переменные

Читайте также:
  1. I. 1-11. Откровение Вьясадевы и составление Шримад Бхагаватам
  2. IV. Глобальные проблемы современности.
  3. VI. Составление договоров подряда.
  4. VII. Составление отчета
  5. XI. СОСТАВЛЕНИЕ СВОДНОЙ КОРРЕКТИРОВОЧНОЙ ТАБЛИЦЫ
  6. В. И. Тарханов, Р. М. Садриев, составление,1991
  7. Вопрос № 37 Составление баланса доходов и расходов.

 

Рассмотрим вопросы составления программ. Простейшая программа может представлять собой заключенную в скобки последовательность операторов, разделенных знаком “;”. Подобная программа дана в примере 8.3. Рассмотрим еще один пример.

Пример 8.8.

Составим программу для вычисления значения экспоненты с заданной точностью. Будем последовательно вычислять сумму членов Маклорена до тех пор, пока очередное слагаемое не станет меньше допустимой погрешности. Для этого напишем следующую программу:

In[ ]: = ex[x_, eps_]:= (For[ u=1.; e=1.; k=1, Abs[u]>eps, u=u*x/k; e=e+u; k++ ]; e)

Если мы теперь напишем вопрос: In[ ]: = ex[1., 10^-5], то получим ответ: Out[ ] = 0.367882. Можем убедиться, что погрешность действительно не превышает , вычислив разность:

In[ ]: = ex[1, 10^-5] - E Out[ ] =

В программах подобного типа все переменные являются глобальными. Их значения доступны из любого места рабочего документа. Например, на вопрос In[ ]: = k получим ответ“10” – количество членов ряда, обеспечивающее в данном случае требуемую точность.

Наличие глобальных переменных таит в себе возможность ошибки из-за конфликтов между значениями переменных. Поэтому более надежный путь – создание программ с локальными переменными. Синтаксис такой программы:

Module[{x, y, …}, expr].

В этом выражении {x, y, …} – список локальных переменных, expr – тело программы. Список может включать инициализацию переменных: {x=x0, y=y0,…}. Названия локальных переменных могут совпадать с именами глобальных, так как при каждом обращении к программе вместо объявленных локальных имен создаются новые имена. Тело программы может включать несколько команд. Каждая команда за исключением последней, включающей результат работы программы, отделяется от последующей точкой с запятой. (Вспомним, что точка с запятой является знаком запрета вывода результата.)

Использование локальных и глобальных переменных проиллюстрируем следующим примером рабочего сеанса. Введем вначале глобальную, а затем локальную переменную с тем же именем. In[1]: = t=5;

In[2]: = Module[ {t=10}, t ] Out[2] = 10

Глобальная переменная сохраняет свое значение:

In[3]: = t Out[3] =5

Введем локальную функцию с тем же именем t:

In[4]: = f[x_]:= Module[ {t}, t[x] = x^2 ]

In[5]: = f[x] Out[5] = x2

Можно убедиться, что глобальная переменная t по-прежнему сохраняет свое значение

Пример 8.9.

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

In[]: = ex1[x_, eps_]:= Module[ {w=1., s=1., i=1}, While[ Abs[w]>eps, w=w*x/i; s=s+w; i++ ]; s ]

В этой программе все переменные являются локальными.

Пример 8.10.

Вычисление квадратного корня числа “x” с помощью процесса Герона. Алгоритм представляет собой итерационный процесс. Сначала задается некоторое начальное приближенное значение, например, y0 = x +1. Затем это значение уточняется в ходе последовательных итераций по формуле: yn+1 = (yn + x/yn)/2. Процесс вычислений заканчивается, если два последующих значения отличаются не более чем на величину допустимой погрешности. Поскольку при данном выборе начального значения процесс итераций описывает монотонно убывающую последовательность: y0 > y1 > y2 > …, – то нет необходимости в использовании функции Abs[ ]. Программа имеет вид:

In[ ]: = root2[x_, eps_]:= Module[ {u, v},

For[ u = x + 1.; v = (u + x / u) / 2, u –v > eps, u = v; v = (v + x / v) / 2 ]; v ]

Примеры более сложных программ приведены в приложении

 


Дата добавления: 2015-07-08; просмотров: 191 | Нарушение авторских прав


Читайте в этой же книге: Точные и приближенные вычисления. Численные и аналитические операции | Рабочий документ и ячейки. Основные команды | Правила написания. Основные встроенные функции | Функции комплексного аргумента | Цикл Do | Матричные функции | Массивы | Двумерные графики | Изображения трехмерных объектов | Анимация |
<== предыдущая страница | следующая страница ==>
Немедленное и задержанное присваивание| Прерывание вычислений

mybiblioteka.su - 2015-2024 год. (0.007 сек.)