Отчет по практике по PASCAL и MathCad
Отчет по практике, 09 Марта 2013, автор: пользователь скрыл имя
Описание работы
Закрепить умения решать задачи с использованием математического пакета MathCad и языка программирования Pascal.
Ход работы
MathCad:
Первый пункт задания. Функция одной переменной. Для этого нужно ввести заданное уравнение, в панели графиков выбрать X-Y график и подписать метки-заполнители.
Содержание
1 Цель работы 3
2 Ход работы 4
3 Список использованной литературы 15
4 Заключение 16
5 Приложение 17
Работа содержит 1 файл
отчет в п.docx
— 419.29 Кб (Скачать)Министерство образования и науки Российской Федерации
Томский университет систем управления и радиоэлектроники
(ТУСУР)
Кафедра физической электроники (ФЭ)
Отчет по практике по PASCAL и MathCad
Выполнил:
студент группы 321
Берков Илья__________
_____________ 2012 год
Проверил:
Ассистент кафедры АСУ
Колотаев И.В.
Дата: _______________
Подпись: ____________
.
Оглавление
1 Цель работы 3
2 Ход работы 4
3 Список использованной литературы 15
4 Заключение 16
5 Приложение 17
Цель работы
Закрепить умения решать задачи с использованием математического пакета MathCad и языка программирования Pascal.
Ход работы
- MathCad:
- Первый пункт задания. Функция одной переменной. Для этого нужно ввести заданное уравнение, в панели графиков выбрать X-Y график и подписать метки-заполнители.
Рис. 2.1.Функция одной переменной
- Второй пункт задания. Построение графика поверхности. Задается двумерный массив (от -5 до 5) и в панели графиков выбрать график поверхности подписать метки-заполнители
Рис. 2.2. График поверхности
- Третий пункт задания. Построение параметрически заданной функции. Для этого нужно определить параметр и в панели графиков выбрать график X-Y и в окне построения графика в качестве аргумента введем x(t), в качестве функции y(t).
Рис. 2.3. Параметрически заданной функции
- Четвертый пункт задания. Для решения кусочно-непрерывной функции необходимо задать значения в виде одномерной матрицы. В операторе Add Line записываются данные уравнения, в панели графиков выбрать X-Y график и подписать метки-заполнители.
Рис 2.4. Кусочно-непрерывная функция
- Пятый пункт задания. Для решения СЛАУ методом Крамера нужно вызвать панель векторов и матриц, добавить матрицу, заполнить ее. Выбрать функцию Kram(A,b), а затем в цикле со счетчиком i от 0 до n, производится вычисление каждого неизвестного по правилу Крамера.
Рис 2.5. Метод Крамера
- Пятый пункт задания. Для решения СЛАУ методом Гаусса нужно вызвать панель векторов и матриц, добавить матрицу, заполнить ее. Выбрать функцию Gaus(A,b), далее с помощью функции augment объеденим матрицы A и b. Затем функцией rref сведем основную матрицу к единичной.
Рис. 2.6. Метод Гаусса
- Шестой пункт задания. Матричные операции.
- Определяем матрицы и автоматически заполняем случайными значениями.
Рис. 2.7. Определение и заполнение матриц
- Вычисляем заданное матричное выражение
Рис. 2.8. Вычисление матричного выражения
- Для результирующей матрицы складываем каждый элемент со скаляром Х1
Рис 2.9. Сложение матрицы со скаляром Х1
- Для результирующей матрицы вычитаем из каждого элемента скаляр Х2
Рис 2.10. Вычитание из матрицы скаляра Х2
- Вычисление определителя матрицы
Рис 2.11. Определитель матрицы
- Поиск обратной матрицы и проверка результата
Рис. 2.12. Обратная матрица
- Поиск собственных чисел, собственных векторов и проверка результата
Рис. 2.13. Собственные числа, вектора и проверка результата
- Вычисление ранга матрицы
Рис. 2.14. Ранг матрицы
- Вычисление модуль каждого вектора
Рис. 2.15. Модуль вектора
- Вычисление орт каждого вектора
Рис. 2.16. Орт вектора
- Вычисление суммы координат
Рис.2.17. Сумма координат
-
Вычисление количество положительных и отрицательных
координат вектора
Рис. 2.18. Координаты вектора
- Вычисление скалярного произведения векторов
Рис 2.19. Скалярное произведение векторов
- Вычисление синуса и косинуса между векторами
Рис 2.20. Синус и косинус между векторами
- Вычисление векторного произведения
Рис. 2.21. Векторное произведение
- Вычисление вектора, координаты которого являются произведение координат исходных векторов
Рис.2.22. Координаты вектора произведения исходных векторов
Седьмой пункт задания. Для решения определенного интеграла необходимо задать подынтегральную функцию и в панели графиков выбрать X-Y график и подписать метки-заполнители.
Рис.2.23.Определенный интеграл
- Восьмой пункт задания. Для решения неопределенного интеграла необходимо под знаком неопределенного интеграла задать решаемый интеграл и поставить символический знак равенства. (Первый интеграл MathCad вычислил без проблем, а второй не вычисляет)
Рис.2.24. Неопределенный интеграл
- Девятый пункт задания. Чтобы найти производную функции необходимо задать начальное значение при х и используя встроенные функции, вычислим первую и вторую производную.
Рис.2.25. Дифференцирование
- Десятый пункт задания. Для решения сплайн-интерполяции необходимо записать x и y по векторам, отсортировать по координате х (объединить (augment), отсортировать по первому столбцу(csort) и вновь разъединить), линейно построить точки(lspline), определить первую функцию fl(x)-(interp), построить график. [Аналогично интерполируется параболическим и кубическим сплайном(pspline,cspline) и строится все три сплайна на одном графике].
Рис.2.26. Сплайн-интерполяция
- Pascal:
- Ознакомление с задачей: «Крестики-нолики». При игре в крестики-нолики, выигрывает тот, кто первым выстраивает пять крестиков (или ноликов) подряд по горизонтали, вертикали или диагонали. Запрограммировать игру в крестики-нолики на прямоугольном клеточном поле для: двух игроков или одно игрока и компьютера.
- В программе используется 2 основных алгоритма работы: их описание представим в виде блок-схемы:
Конец
dva_igroka
Odin_igrok
no
yes
N=1?
Ввод n
Начало
Запрос данных
Данные запрашиваются для выбора режима игры:1 или 2 игрока
Рис. 2.27 «Основная программа»
Начало
Error=false
Pole
Error=false
Och mod 2=1
no
yes
Вызов процедуры вырисовывания сетки для игры
Res<>true
Pole
Random (i1, j1)
I1, J1
O
Х
Вывод победителя
Конец
Рис. 2.28. «Процедура для игры с компьютером»
- В программе подключается 2 дополнительных внешних модуля: crt и graphabc (для версии ABCpascal)
- Модуль Crt является одним из стандартных модулей. В нем описаны и определены функции для работы с текстовой информацией на дисплее (изменение цвета текста, управление курсором и др.).
- Модуль Graph содержит типы, константы, переменные и подпрограммы, позволяющие программисту создавать изображения с использованием широкого набора графических адаптеров, которые разбивают экран на пиксели и позволяют работать с каждым пикселом отдельно.
Рис.2.29. «Вид начального окна при выборе режима игры»
Рис.2.30. «Окно игры с компьютером»
Рис.2.31. «Окно вывода победы 1 игрока»
Список использованной литературы
- Inc.(2008). 16.4. Модуль Graph Statsoft. Web: http://www.5byte.ru/tp7pub/
0198.php - Беркова В.Н. Программирование на языке Паскаль / В.Н. Беркова. - М.: Семипалатинск, 2006. - 90 с.
- ТУСУР, Методические указания по выполнению вычислительной практики / Томск, 2004. – 66 с
Заключение
Во время работы очень понравилось, что Mathcad интегрирует и сохраняет все тексты и комментарии, «живые» вычисления и графику, необходимые для однозначной фиксации принятых допущений в уравнениях и результатах ключевых инженерных вычислений.
При работе с Паскалем значительно улучшают динамику написание и последующего выполнения программы возможность в программе создание подпрограмм, которые пишутся отдельно от основной части, но вызов происходит непосредственно в основной программе.
В подпрограммах структура аналогична, что и в основной программе (объявление переменных, использование циклов, функций и процедур)
Также переменные нужно явно объявлять, что способствует избежанию проблем по их использованию, а Бейсике нет необходимости их описывать, потому что программа автоматически выделяет им место в памяти.
Приложение
Листинг программы игры «Крестики-Нолики»:
uses crt,graphabc;
var MN:array[1..5,1..5] of char;
i,j,x,x1,y,y1,n,v1,v2,i1,j1,
procedure Pole;
begin
setpenColor(clBlue);
X:=16; y:=80;
For I:=1 to 4 do
begin
Line(x,y,x+148,y);
y:=y+35;
end;
X:=45; y:=50;
For I:=1 to 4 do
begin
Line(x,y,x,y+170);
x:=x+31;
end;
end;
function error:boolean;
begin
error:=false;
If (mn[i1,j1]='X') or (mn[i1,j1]='O') then error:=true;
end;
function res:boolean;
begin
res:=false;
for I:=1 to 5 do
begin
If (mn[i,1]='X') and (mn[i,2]='X')
and (mn[i,3]='X') and (mn[i,4]='X') and (mn[i,5]='X') then begin
if (mn[i,1]='O') and (mn[i,2]='O') and (mn[i,3]='O') and (mn[i,4]='O') and (mn[i,5]='O') then begin res:=true; V2:=1; end;
end;
for j:=1 to 5 do
begin
If (mn[1,j]='X') and (mn[2,j]='X') and (mn[3,j]='X') and (mn[4,j]='X') and (mn[5,j]='X') then begin res:=true; V1:=1; end else
if (mn[1,j]='O') and (mn[2,j]='O') and (mn[3,j]='O') and (mn[4,j]='O') and (mn[5,j]='O') then begin res:=true; V2:=1; end;
end;
If ((mn[1,1]='X') and (mn[2,2]='X') and(mn[3,3]='X') and(mn[4,4]='X') and (mn[5,5]='X')) or
((mn[5,1]='X') and (mn[4,2]='X') and(mn[3,3]='X') and(mn[2,4]='X') and (mn[1,5]='X')) then begin res:=true; V1:=1; end;
If ((mn[1,1]='O') and (mn[2,2]='O') and(mn[3,3]='O') and(mn[4,4]='O') and (mn[5,5]='O')) or
((mn[5,1]='O') and (mn[4,2]='O') and(mn[3,3]='O') and(mn[2,4]='O') and (mn[1,5]='O')) then begin res:=true; V2:=1; end;
If och>25 then begin res:=true; v1:=2; end;
end;
procedure odin_igrok;
begin
ClearWindow(clCream);
och:=0;
While res<>true do
begin
inc(och);
If och mod 2 = 1 then
begin