Программирование арифметических выражений и построение кусочного графика функции с помощью среды MATLAB

Российский государственный университет

нефти и газа имени И.М.Губкина

 

Кафедра «Информатики»

 

 

 

 

Реферат на тему:

"Программирование арифметических  выражений и построение кусочного графика функции с помощью среды MATLAB"

 

 

 

Выполнил:

Студент гр. РБ 13-01

Шевцов Д.М.

Проверила:                                                      

 профессор кафедры информатики

Храброва Оксана Юрьевна

 

 

 

 

 

 

 

 

 

                                                

 

 

 

 

Москва-2013

Оглавление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ 

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

MATLAB предназначен прежде всего  для программирования численных  алгоритмов. Он разрабатывается  уже более 15 лет и возник на  основе более ранних прикладных  пакетов LINPACK и EIGPACK, созданных в 1970-е  гг. в США, и в свою очередь  повлиял на появление таких  систем, как MathCad, MAPLE и Mathematica. Совершенствование системы MATLAB происходило как в связи с достижениями в вычислительной математике, так и в связи с изменениями в архитектуре персональных компьютеров и развитием общесистемных средств. Со временем MATLAB был дополнен целым рядом уже упоминавшихся приложений (toolboxes), далеко раздвинувших границы его применимости. Далее речь пойдет лишь о ядре MATLAB'а, которое мы будем называть системой, и конкретно о ее версии 5.2, выпущенной фирмой MathWorks в январе 1998 г.

MATLAB - система программирования  высокого уровня, работающая как  интерпретатор и включающая большой  набор инструкций (команд) для выполнения  самых разнообразных вычислений, задания структур данных и  графического представления информации. Команды эти разбиты на тематические  группы, расположенные в различных  директориях системы. Теперь в  системе около 800 команд, и примерно  половина из них вполне доступна  начинающему пользователю. Команды  с большим возможным объемом  вычислений написаны на С, но  много и таких команд, которые  представлены в терминах этих  первых. Поэтому система оказывается  почти открытой для пользователя. Имеются большие возможности  для вывода двумерной и трехмерной  графики и средства управления  ею. Пользователь может без особых  затруднений добавлять свои команды  и писать программы в терминах  уже существующих команд; несколько  сложнее делать это в рамках  Фортрана и С. Можно обмениваться  данными с программами на этих  языках, а из них обращаться  к системе. Краткость и наглядность  программирования и исключительные  возможности визуализации результатов  делают систему очень эффективной  при поисках и апробации новых  алгоритмов, при проведении разовых  расчетов и в учебном процессе, поскольку ее можно осваивать без предварительного знакомства с основами программирования и выполнять такие сложные примеры, которые невозможно делать с использованием других систем.

 

 

MATLAB — программный продукт, нацеленный на разработку и отладку алгоритмов расчета. MATLAB применяется, главным образом, в инженерных расчетах.

Достоинства:

  1. «элегантная поддержка матриц»;
  2. удобный графический интерфейс;
  3. простота в работе.

 

Недостатки:

  1. дороговизна лицензий;
  2. неполная поддержка статистических функций;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание задания №1

 

 

1) Рассчитать целочисленные  выражения U и R.

2) Разработать блок-схему  для арифметических выражений  A и B и параметра F.

3) Заполнить таблицу

Вид данных:

вх / вых данные

Математическое обозначение

Соответствующий индикатор

Тип данных

       
       

 

4) В MATLAB создать приложение согласно разработанной блок-схеме. В программе предусмотреть вывод всех исходных и вычисленных значений через интерфейс. Вывести значения A, B и F в двух форматах (с плавающей и фиксированной точкой). Проверить работоспособность программы в режиме отладки. В заголовке указать ФИО автора, группу и вариант.

*значения  X и Y вводятся с клавиатуры.


 

 

 

 

 

 

 

 

 

 

 

 

 

Подготовка программы для выполнения задания

1) Открываем приложение  MATLAB.

2) В меню создаем New script.

 

3) Сохранение script.

В появившемся окне Editor нажимаем на кнопку "Run"    При нажатии кнопки Run наш скрипт сохраняется. Сохраняем наш файл в нужную папку и называем файл, используя только латиницу.

4) Для последующей работы  в Commander Window очищаем сообщение с помощью команды clc (Clear Command Window).

Выполнение задания

 

1. Расчет U и R.

По заданию нам необходимо рассчитать значения U и R. Для начала преобразуем формулы для среды MATLAB. Они будут выглядеть следующем образом.

U=fix(26/9) - 5

R=27 - rem(16,3)

Записываем в редактор Editor формулы U и R. Результаты выводятся в Command Window.

Ответ: U=-3; R=26;

2. Алгоритм расчетов выражений.

Логическая структура для расчетов выражений А и В будет следование.

Следование - последовательность операторов (групп операторов), выполняемых друг за другом в порядке следования в тексте программы

Ниже представлен алгоритм расчетов арифметических выражений А и В.

 





 

 


 


 

Логическая структура для расчета параметра F будет ветвление.

Ветвление - управляющая структура, которая в зависимости от выполнения заданного условия определяет выбор для исполнения одного из двух или более заданных в этой структуре групп операторов;



 

 

 

 

 

 

 

                 ДА НЕТ



3. Заполнение таблицы.

Вид данных:

вх / вых данные

Математическое обозначение

Соответствующий индикатор

Тип данных

Входные

X

X

Real

Входные

Y

Y

Real

Входные

U

U

Integer

Входные

R

R

Integer

Входные

d

d

Real

Входные

z

z

Real

Выходные

A

A

Real

Выходные

B

B

Real

Выходные

F

F

Real




 

4. Создание приложения в MATLAB

1. Создание интерфейса.

 

В Command Window прописываем команду clc, а затем создаем графический интерфейс с помощью команды guide. 

При запуске команды guide появляется окно GUIDE Quick Start.

 

 

 

 

 

 

 

 

 

 

 

Нажимаем на флажок Save new figure as и сохраняем в нужную папку и нажимаем кнопку "ОК". Имя файлы обязательно писать только на Латинице.  
*для открытия существующего файла нужно перейти на вкладку Open Existing GUI и выбрать путь к этой папке.

 

После нажатия кнопки "ОК" появляется окно редактора GUI Layout Editor

 

В этом редакторе можно вручную создавать все элементы интерфейса: панели, кнопки и т.д.

2. Подготовка интерфейса.

 

На этом этапе нам необходимо подготовить интерфейс для работы приложения. Для этого нам понадобятся следующие компоненты:

  • кнопка Push Button , при нажатии на которую наше приложение будет рассчитывать наши параметры.
  • поле Edit Text , необходимое для ввода X и Y.
  • компонент Static Text . В этот компонент будет выводится значения.

 

 

На следующем рисунке я показал, что получилось у меня после добавления компонентов на интерфейс.

 

 

Для редактирования компонентов нужно нажать на них два раз. В окне Inspector  можно изменять различные параметры, например, положение компонентов, его цвет, текст в нем,  его размеры и т.д.

Для нашего задания изменим параметр FontSize (изменение размера текста), String(редактирование текста на компоненте) и BackgroundColor (цвет заливки компонента).

После редактирования интерфейс выглядит следующим образом:

После подготовки нашего интерфейса, нажимаем "Run" . Открывается рабочее окно, где можно набрать значения в Edit Text или нажать кнопку Push Button. 

* При нажатии кнопки "Run" все наши изменения  с интерфейсом записываются в виде кода в файл, который мы подготовили для интерфейса.

Так как мы не задали никакого действия под кнопку, на интерфейсе ничего не происходит. Поэтому мы закрываем запустившееся окно и переходим непосредственно к его коду.

 

 

 

3. Завершение создания  приложения.

 

На этом этапе нам нужно, чтобы приложение считывало значения из Edit Text при нажатии клавиши, а затем подставляло это значение в наши арифметические выражения.

1) Считывание значений из Edit Text с помощью Get function.

get (handles.tag name, 'tag property')

tag name - имя компонента;

tag property - свойства компонента;

! При использовании текста  из Edit Text  tag property будет 'string'.

Итак, команда для считывания X и Y в нашем приложении будет выглядеть следующим образом:

x = get(handles.edit1, 'string');

y = get(handles.edit2, 'string');

Запишем код в файл в функции Push Button:


2) Преобразование параметра из  string в integer/real.

Программное обеспечение MATLAB берет значение из Edit Text в виде символьной строки. Для использования значений параметров необходимо преобразовать формат значений (из формата string в формат real/integer). Это можно сделать, используя команду

sscanf (variable, format)

То есть с помощью этой команды мы считываем значения в текстовом формате и переводим эти значения в численный формат.

Для нашего приложения изменим формат значений X и Y:

X = sscanf (x, '%f')

Y = sscanf (y, '%f')

 

Запишем код в файл в функции Push Button:

3) Запись арифметических выражений  на языке MATLAB.

 

 

 

 

4) Вывод в компонент Static Text значения A, B и F с помощью команды Set function.

 

set(handles. tag name, 'tag property', variable)

tag name - имя компонента;

tag property - свойства компонента;

variable - параметр, который мы используем.

Итак, команда для считывания X и Y в нашем приложении будет выглядеть следующим образом:

set(handles.text6,'string',A)

set(handles.text7,'string',B)

set(handles.text8,'string',F)

Запишем код в файл в функции Push Button:

 

5) Запуск приложения с помощью  кнопки Run .

 

6) Заполнение заголовка.

По заданию в заголовке нужно записать ФИО, номер группы и вариант. Для этого открываем окно редактора GUI Layout Editor. Кликаем 2 раза на поле фигуры. Меняем параметр Name.

Использование приложения

(ниже представлены примеры работы  программы).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАМЕТКИ

Некоторые моменты, на которые стоит обратить внимание.

1. После входа в программу, необходимо  сразу же сохранится.

2. Если у Вас есть параметр  X и выражение Y, в котором используется параметр X, то необходимо сохранять размер текста параметра. Пусть, Y=sin(X), а параметр X=1. При написании кода в MATLABE будет:

Но если параметр в выражении Y написать с маленькой буквы, то MATLAB выведет ошибку, так как параметр X и x - это разные параметры.

 

Аналогично, если вы будете выводить значение в Static Text , то необходимо указать "настоящее" tag name (имя компонента).

set(handles.text6,'string',A)  -  правильно 
set(handles.Text6,'string',A) -  ошибка

  1. Необходимо учесть ОДЗ (область допустимых значений) для выражений      A и B.

Для арифметического выражения B ОДЗ будет от -∞ до +∞.

Для арифметического выражения A в ОДЗ не входят X=R=26 и Y=0. Если в Edit Text записываются данные значения, то необходимо записать в text6 «значение X/Y не удовлетворяют».  
Чтобы выполнить данное условие, необходимо сделать условия на параметры X и Y.

Код будет выглядеть следующим образом:

if Y==0 set(handles.text6,'string','Значение Y не удовлетворяет!')

elseif X==R set(handles.text6,'string','Значение X не удовлетворяет!')

else set(handles.text6,'string',A)

end

 

                                                                          

 

Содержание задания №2

 

Создать приложение для построения графика кусочной функции f(x), определенной на интервале [a,b] следующим образом:

Начальные значения параметров a,b,c, количество узлов N  и вид функции F1(x), F2(x) заданы:

Ход работы:

1. Создать проект  и сохранить его в отдельной  папке. В заголовке интерфейса  указать ФИО, № группы и вариант.

2. Разместить  компоненты для ввода параметров  a,b,c и количества узлов N. По этим данным рассчитать шаг табуляции h и вывести его на интерфейс.

3. Вывести значения кусочной функции f(x) на заданном интервале [a,b] с шагом h в Command Window.

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнение задания

 

1. Создание интерфейса  и его редактирование.

 

Создаем папку с Вашими ФИО и номером группы. В Command Window прописываем команду guide и сохраняем файл в созданную папку. Более подробнее о создании интерфейса Вы можете прочитать в Задании №1. 

После того, как появляется окно редактора GUI Layout Editor добавляем необходимые нам компоненты.

По заданию необходимо добавить компоненты Edit Text для ввода значений параметров a, b, c, n. Удобнее разместить эти компоненты в Panel . После добавляем кнопку Push Button и область для построения графиков axes .

Результат после добавления всех компонентов на интерфейс можно увидеть на рисунке:

 


 

 

После редактирования интерфейса в меню Inspector внешний вид интерфейса стал следующим:

2. Написание  кода приложения.

Код программы записываем под function PushButton.

Для того, чтобы вывести значения из Edit Text воспользуемся командой get и преобразуем формат значений через команду sscanf:

a = get(handles.edit1, 'string');

a = sscanf(a1,'%f')

b = get(handles.edit2, 'string');

b = sscanf(b1,'%f')

c = get(handles.edit3, 'string');

c = sscanf(c1,'%f')

n = get(handles.edit4, 'string');

n = sscanf(n1,'%f')

 

Следующим действием посчитаем шаг табуляции h. Формула для расчета h


 

Преобразуем формулу h для среды MATLAB и выведем значение в Static Text:

h = (b-a)/(n-1)

set(handles.text6,'string',h)

 

Для того, чтобы построить график F(x) нужно: 
1) задать диапазон значений x с шагом табуляции h.

2) написать формулу функции на языке MATLAB.

3) написать команду для построения  графика на интерфейсе.

4) оформить график на интерфейсе (построение сетки и изменение цвета графика).

 
1) По заданию х находится в интервале [a,b]. В MATLAB диапазон записывается следующим образом:

x = a:h:b 
где a - начало отрезка, b - конец отрезка, h - шаг табуляции.

так как у нас кусочная функция, то x будет находится в двух интервалах.

x1 = a:h:c

x2 = c:h:b

  
2)

Формула для F1:

 y1 = -(x1+3).^2/2+5

 

Формула для F2:

 y2 = exp(x2/3)-5

 

3) Для построения графика можно воспользоваться командой plot(variable(x),variable(y))

Так как у нас кусочная функция, то вид команды будет иметь вид:

plot(x1,y1, x2,y2)

 

 

 

 

После ввода кода в компоненте axes строится графики y1(x1) и y2(x2):

 

4)  
Построение сетки можно осуществить с помощью команды grid on.

Для изменения цвета графиков нужно после параметров, которые задают этот график, в '' написать символ, который отвечает за параметр Color. 
Например:

 

 

Для того, чтобы сделать заголовок над компонентом axes, нужно написать команду title('заголовок')

 

 

 

3. Запуск приложения

 

Так выглядит интерфейс после написания кода в файл, интерфейс будет выглядеть так:


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЗАМЕТКИ

 

1) Для построения более точного графика, нужно увеличить количество узлов n. Соответственно, шаг табуляции h уменьшается и разность между соседними точками уменьшается, тем самым график строится более точно. Пример:

 

2) Построение графиков  можно производить в Command Window без интерфейса, что намного упрощает работу. 
Например, x находится в интервале [-pi;pi], функция y=sin(x); 
Для построения графика, как уже было описано выше нужно задать интервал переменной x, написать функцию на языке MATLAB и записать команду plot(x,y). 
При нажатии Enter в новом окне figure строится график


 

 

 

 

 

 

3) Если поставить после формулы/значения параметра ; то значение этого параметра не будет выводится в Command Window, но все равно сохраняется в окне Workspace

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ЛИТЕРАТУРА

 

  • Кетков Ю. Л., Кетков А. Ю., Шульц М. М., MATLAB 7 Кетков программирование численные методы;
  • Интернет-ресурсы;
  • Лекции;

 


Программирование арифметических выражений и построение кусочного графика функции с помощью среды MATLAB