Основные этапы решения задач с использованием математического моделирования.
Математическая постановка задачи, т. е. её изложение на языке математических понятий. Она включает в себя:
- описание исходных данных;
- формулировку цели решения.
Подготовка расчетной схемы.
Построение (основной) математической модели реального объекта, т. е. его формальное описание в математических терминах, что позволяет свести его исследование к решению математической задачи. В случае получения сложной математической модели целесообразна разработка еще одной или нескольких математических моделей, отличающихся степенью детализации описания свойств объекта. Желательно, чтобы в числе этих моделей были такие, которые позволяют получать известные результаты, а также проводить ручные проверочные расчеты.
Анализ. Целью анализа является выявления причины возникновения существенной разницы в результатах моделирования. Разработка или выбор метода решения математической задачи, учитывающего особенности модели.
Составление алгоритма, позволяющего реализовать используемый метод решения задачи. Часто алгоритмы записывают в виде схем
Запись алгоритма на языке программирования.
Ввод в компьютер текста программы и значений исходных данных.
Отладка программы, т.е. обнаружение и исправление ошибок в ней.
Решение задачи на компьютере.
Анализ и интерпретация полученных результатов и их оформление.
Методический пример решения задачи с использованием математического моделирования. Программирование линейных алгоритмов .
Формулировка задачи (не является математической): определить величину значения сопротивления r данного резистора постоянному току. Для проведения измерений использовать источник тока, реостат, амперметр, вольтметр, а для расчетов на компьютере.
Для подготовки к математической постановке задачи нужно осуществить следующие действия:
а) выбрать измерительные приборы необходимого класса точности и собрать схему для проведения измерений (рис. 1);
Рисунок 1
б) при помощи реостата установить такие значения тока и напряжения, чтобы стрелки измерительных приборов находились в как можно более правой части шкалы (это позволяет уменьшить погрешность измерений);
в) измерить значение тока i, проходящего через резистор, а также падение напряжения на нем.
Результаты измерений будут использованы в качестве исходных данных при математической постановке задачи. Цель решения сформулирована ранее.
Этапы решения данной задачи.
Математическая постановка задачи.
По известным значениям постоянного тока i (А) и напряжения u (В) на резисторе, рассчитать с помощью ЭВМ значение его сопротивления r (Ом).
В качестве математической модели резистора будем использовать закон Ома, согласно которого r= u / i , Ом.
Метод решения математической задачи - расчет по известной формуле.
Составление схемы алгоритма (рис. 2).
Рисунок 2
Запись алгоритма на языке программирования в рассматриваем случае на языке программирования Паскаль.
Лучше сразу выбрать директорию сохранения этого файла:
Fail – Change dir (предварительно создав на диске С папку на английском языке Pascal, в ней свою папку на английском языке)
Текст программы:
program tok;
var u,i,r:real;
begin
write('напряжение u(B)=');
readln(u);
write('ток i(A)=');
readln(i);
r:=u/i;
writeln('Исходные данные: u=', u:3:1, ',В i=', i:3:1,',А');
writeln('Результаты: r=', r:3:1, ',Ом');
writeln('...');
writeln('Пpогpамма завершена. Нажмите Enter’);
readln
end.
Переход на русскую раскладку клавиатуры в правой части клавиатуры Chift+Ctrl, возврат на английскую раскладку осуществляется нажатием тех же клавиш Chift+Ctrl только слева.
Часто имеют место следующие синтаксические ошибки: "ожидается ;", "неизвестный идентификатор", " несоответствие количества слов begin и end", "несоответствие типов", "количество открывающихся скобок не равно количеству закрывающихся", а также логические: "не инициализировано значение переменной", "программа не соответствует правильной блок-схеме" и др.
Для учащихся 9 класса, у которых другая программа по физике (они не знают тему «Электричество») задачу даём на движение.
Определить значение скорости v автомобиля, который проходит одно и тоже расстояние из одного города до другого за разное время t.
Для подготовки к математической постановке задачи нужно осуществить следующие действия: нарисовать схему движения для проведения измерений (рис. 3);
Рисунок 3
Этапы решения данной задачи.
Математическая постановка задачи.
По известным значениям постоянного расстояния S(км) и меняющемуся времени автомобиля t(час), рассчитать с помощью компьютера значение его скорости v(км/ч).
В качестве математической модели будем использовать формулу движения S= v*t или v= S/ t
Метод решения математической задачи - расчет по известной формуле.
Составление схемы алгоритма (рис. 4).
Рисунок 4
Запись алгоритма на языке программирования Паскаль.
Лучше сразу выбрать директория сохранения этого файла:
Fail – Change dir (предварительно создав на диске С папку на английском языке Pascal, в ней свою папку на английском языке).
Переход на русскую раскладку клавиатуры в правой части клавиатуры Chift+Ctrl, возврат на английскую раскладку осуществляется нажатием тех же клавиш Chift+Ctrl только слева.
Текст программы:
program skorost;
var S,v,t:real;
begin
write('С клавиатуры введите расстояние S(км)=');
readln(S);
write('с клавиатуры введите время t(ч)=');
readln(t);
v:=S/t;
writeln( 'Исходные данные были : S=', S:3:1, ',км t=', t:3:1,',ч');
writeln('Результаты получили такие: v=', v:3:1, ',км/ч');
writeln('...');
writeln('Пpогpамма завершена. Нажмите Enter’);
readln
end.
Сохраняем этот файл в своей папке.
Анализ текста данной программы
Рассмотрим использование словаря (алфавита) языка программирования. В состав алфавита входят ключевые (служебные) слова и символы. В рассматриваемой программе используются служебные слова: program, var, real, begin, end, integer. Символы подразделяются на буквы, арабские цифры, знаки арифметических операций, знаки операций сравнения, разделители (знаки препинания, скобки, апострофы, :=).
Комментарии помещаются в программу только для программистов и пользователей программы. Текст комментария заключается в фигурные скобки и компьютером не анализируется. В программе запрещается использовать вне комментария русские буквы, за исключением вывода строки символов.
Первая строка является заголовком программы. Имя программы skorost или tok. Она находится в файле C:\pascal\ Ivanov\ tok.pas.
В данной программе используются имена (идентификаторы): переменных - u , i , r и стандартных подпрограмм - write, writeln, readln. Стандартными называются подпрограммы, входящие в комплект программного обеспечения языка программирования. Идентификаторы должны начинаться с буквы, за которой могут следовать цифры.
В общем случае используемые в программе подпрограммы, константы, типы переменных и переменные должны быть описаны (объявлены). Это делается либо непосредственно в программе в соответствующем разделе описаний, либо с помощью указания в предложении uses имен модулей типа Unit, в которых эти описания выполнены. Исключением являются описания, выполненные в стандартном модуле System, которые всегда доступны программе. Так процедурами, описанными в этом модуле, и используемыми в программе являются: write, writeln, readln.
При описании переменных (см. строку 2) должен быть указан их тип. Используются такие стандартные типы данных как геаl (действительный (синоним - вещественный) ), integer (целочисленный), char (символ). С помощью типа real, в отличие от типа integer, описываются переменные, при записи значений которых используются цифры после десятичной точки.
Следует уделять внимание размещению текста программы. Использование пробелов и отступов позволяет улучшить наглядность программы. Количество используемых строчек для записи каждого оператора и количество операторов в каждой строке не ограничивается и выбирается из соображений удобства чтения программы человеком. Однако нельзя разделять пробелами части одного идентификатора или размещать их на разных строках. Там, где можно по синтаксису языка поставить один пробел, там можно поставить произвольное количество пробелов.
Операторы отделяются друг от друга символом ";".Для задания границ каждого блока программы служат слова begin и end. Для простых программ, в отличие от сложных, обычно достаточно одной такой пары. Последнее слово end программы должно заканчиваться точкой. После набора этой точки необходимо не забыть нажать на клавишу "Ввод".
Ввод и вывод значений переменных.
На экране пользователя появится (после завершения программы skorost) следующий текст:
Укажите расстояние S(км)=
укажите время t(ч)=
Исходные данные были : S= км t= ч
Результаты получили: v= км/ч
………………………………………………….
Программа завершена. Нажмите Enter.
Как видно из приведенного примера оператор вызова стандартной процедуры вывода writeln (сокр. от write line) обеспечивает вывод строки. Т. е. после того как будут напечатаны данные, указанные в скобках в списке параметров этой подпрограммы, будет осуществлен переход курсора на следующую строку. Таким образом, при выполнении следующего оператора вызова процедуры вывода, вывод будет производиться уже на новую строку.
В случае использования процедуры write указанный переход курсора на новую строку не производится. При выполнении следующего оператора вызова процедуры вывода, вывод будет осуществляться в ту же строку. Аналогичная разница существует между операторами вызова стандартных процедур ввода данных readln ("введи строку") и read.
При выводе данных могут указываться форматы в виде одного (":количество выводимых символов") или для действительных переменных двух (":общее количество выводимых символов: количество цифр после десятичной точки") чисел.
Пользователь должен следить, чтобы тип значения, полученного в результате выполнения выражения А, не конфликтовал с типом переменной V. Так, например, не должен иметь место оператор присваивания, в котором в левой части была бы переменная типа integer, а в правой части результат типа real. Это может получиться, например, в случае, если одна целочисленная переменная делится (с помощью операции /) на другую целочисленную переменную, или хотя бы одна переменная в выражении A имеет действительный тип.