Практикум БСМП Scilab. Практикум Москва, 2019 г. 2 Scilab
![]()
|
1.2.4. Содержание отчета 1) В форме комментариев: Название лабораторной работы ФИО студента, номер группы № варианта Индивидуальное задание 2) Протокол вычислений (сессии) в Командном окне и содержимое окна редактора SciNotes, снабженное соответствующими комментариями. 1.2.5. Пример выполнения задания 2. Решить задачу вычисления арифметических выражений 2 2 cos ln y x e y x x z y x и 5 ) cos( 2 2 2 xy xy x f в соответствии с п.п.3-10 общего задания. 4 x 3 2y 2 e | sin y | d 10 2,5cos x 2 2 2 2 (yx 1) с (cos y sin x ) 2 2 2 y 208 lg x x h x y e 2 x 5 2xy a 10 lg 0.8x e 2 3 x y b sin(tg x) 0,2x xy 2 2 (1 e ) d 0,7lg 1 x 13 3. Результаты выполнения задания (сценарии и протоколы сессии) //СценарийPr1_2_1.sce вычисления выражений //Определение функции для вычисления первого выражения Functionz=f1(x, y) z=(x+sqrt(abs(x.*y)))./(exp(x+y).*log(x).^2)-cos(y.^2); endfunction //Определение функции для вычислениявторого выражения functionz=f2(x, y) z=2*x.^2+cos(x.*y)-x.*y.^2+5; endfunction //Конец сценарияPr1_2_1.sce============================================== -->//Протокол сессииКомандного окна: -->// Практическое занятие 1.2 по теме -->// «Основные объекты системы Scilab» -->// Вариант 0, задание 1 -->//Присвоение значений,вычисление выражений и вывод результатов -->// Выполнил:Студент группы БИН1801 Иванов И.И. --> -->clear // Очистка окна Обозревателя данных -->clc // Очистка Командного окна -->//Загрузка первого сценарияPr1_2_1и вызов функций, встроенных в сценарий -->exec('Pr1_2_1.sce', 0);//Загрузка сценария Pr1_2_1.sceиз текущей папки --> --> //Задание начальных значений x и y -->x=2;y=0.1; --> //Вызов функцийf1 и f2, встроенных в сценарий --> z=f1(x,y) z = -0.3762115 --> f=f2(x,y) f = 13.960067 // Конец сессии=========================================================== // Сценарий Pr1_2_1mod.sce вычисления выражений //Определение функции первого выражения Functionz=f1(x, y) z =(x+sqrt(abs(x.*y)))./(exp(x+y).*log(x).^2)-cos(y.^2); endfunction //Определение функции второго выражения functionz=f2(x, y) z =2*x.^2+cos(x.*y)-x.*y.^2+5; endfunction 14 //Вводисходныхданных х=input("Введитех= "); y=input("Введитеy= "); //Вычислениезначенийфункций z = f1 ( x,y ) ; f = f2 ( x,y ) ; //Форматирование вывода результата format(6); //Вывод результатов вычисления выражений на экран disp(z,"z="); disp(f,"f="); // Конец сценарияPr1_2_1mod.sce============================================ -->// Протокол сессии в Командном окне: -->// Практическое занятие 1.2 по теме -->// «Основные объекты системы Scilab» -->// Вариант 0, задание 1 (модифицированное) -->//Ввод исходных данных,вычисление выражений и вывод результатов -->// Выполнил:Студент группы БИН1801 Иванов И.И. --> -->clear // Очистка окна Обозревателя данных -->clc // Очистка Командного окна -->//Загрузка второго сценарияPr1_2_1mod -->exec('Pr1_2_1mod.sce', 0); // Загрузка сценария из текущей папки Введите х= 2 Введите y= 0.1 z= -0.376 f= 13.96 // Конец сессии============================================================= 3.1.1. Контрольные вопросы по теме 1) Каким образом открыть новое окно редактора SciNotes? 2) Как в окне Обозреватель файлов сделать нужный каталог текущим? 3) Каким образом открыть в SciNotes ранее созданный файл? 4) Что такое сценарий? 5) Имеет ли сценарий параметры? 6) Допускается ли в SciNotes при вводе текущей строки сценария вернуться к редактированию в предыдущих строках? 7) Какова последовательность действий при сохранении нового сценарий в sce -файле? 8) Каким образом сохранить исправленный текст sce -сценария? 15 9) Как в редакторе SciNotes осуществляется переход между открытыми окнами, содержащими разные сценарии? 10) Можно ли из одного сценария обращаться к другому? 11) Какой командой, файл, созданный в редакторе SciNotes загрузить в оперативную память? 12) Каким образом в команде exec указывается путь к загружаемому файлу со сценарием? 13) Как и где можно установить текущую папку? 14) Что такое глобальные переменные и когда они используются? 15) Если переменная создана в Командном окне, является ли она видимой для загруженного сценария? 16) Какие переменные являются локальными? 17) Формат оператора ввода данных input ? 18) Формат оператора ввода данных x_dialog ? 19) Как с использованием оператора disp осуществить вывод значения переменной или текста можно? 20) Можно ли выполнить сценарий из редактора SciNotes? 16 3.2. Лабораторная работа по теме «Матрицы – создание, доступ, матричные операции и функции» 3.2.1. Вопросы, подлежащие изучению 1) Создание векторов и матриц различного типа. 2) Индексация матриц: векторная, матричная и линейная. 3) Доступ к элементам вектора и матрицы. 4) Матричные операции: арифметических, логических и операций отношения. 5) Функции обработки элементов матриц. 6) Матричная и логическая индексация массивов. 3.2.2. Общее задание 1) Изучите материал учебника (п.1.3). 2) Выберете вариант индивидуального задания из табл. 1.3-1. 3) Выполните команды clear и clc для очистки окна Обозревателя переменных и Командного окна. 4) Откройте новое окно редактора SciNotes. 5) Перед программой, предназначенной для обработки массивов, создайте для первой части задания одномерные массивы (вектора), а для второй— двумерные массивы (матрицы). 6) Введите программу отработки массивов согласно вашему индивидуальному заданию. Программа должна быть универсальной, т. е. выполняться для произвольного количества элементов исходного вектора и произвольного числа строк и столбцов исходной матрицы, все действия над векторами и матрицами должны быть выполнены с использованием матричных функций, и снабжены комментариями. Для вывода отдельных значений и пояснений следует использовать функцию mprintf , а для вывода числовых массивов— функцию disp . 7) Сохраните sce -сценарий в файле, исправьте ошибки и выполните. 8) Сохраните sce -сценарий под другим именем и выполните, загрузив его в Командное окно. 9) Сохраните все результаты для отчета. 10) Предоставьте результаты работы преподавателю, ответьте на поставленные вопросы. 11) Оформите отчет по выполненной работе. 17 3.2.3. Варианты индивидуальных заданий Таблица 1.3-1 № Задание 1 Ввести 3 вектора разной длины и найти сумму отрицательных элементов каждого из них. 2 Элементы каждой строки матрицы, значения которых больше среднеарифметического значения данной строки, заменить этим значением. 3 Найти сумму положительных элементов введенного вектора, стоящих на местах, кратных числу n. 4 Все отрицательные элементы матрицы С(3х4) умножить на х1, а положительные – разделить на х2. Подсчитать количество нулевых элементов. 5 Найти сумму отрицательных элементов введенного вектора, расположенных на нечетных местах. 6 Найти произведение элементов введенного вектора, больших или равных, введенному значению х. 7 Элементы квадратной матрицы ниже главной диагонали уменьшить на х1, а элементы выше главной диагонали увеличить на х2. 8 Среди n первых элементов введенного вектора найти сумму отрицательных элементов. 9 В матрице А(4x5)определить столбцы, в которых все одинаковые элементы. 10 Подсчитать количество элементов введенного вектора, принадлежащих интервалу[a,b]. 11 Максимальный элемент каждой строки матрицы D(4,4)заменить числом х. 12 Найти количество элементов введенного вектора, меньших единицы. 13 В каждой строке матрицы К(mxn) найти количество элементов больше х1 и заменить их на значение последнего элемента строки. Вывести полученную матрицу по столбцам. 14 Найти произведение ненулевых элементов вектора. 15 Минимальный элемент в каждом из столбцов матрицы заменить нулевым значением. 16 Определить среднее значение всех отрицательных элементов вектора Р. 17 Найти сумму элементов вектора, не попавших в интервал [a,b]. 18 Найти сумму отрицательных элементов вектора на четных местах. 19 Найти среднее арифметическое значений элементов матрицы A(nxn)и заменить этим значением элементы последней строки. 20 Определить количество элементов вектора, кратных x. 21 Найти максимальное значение среди элементов вектора между номерами n1 и n2. 21 Найти общее количество элементов вектора, равных х1и х2. 22 Найти предпоследний отрицательный элемент введенного вектора Х. 23 В матрице определить произведения элементов, расположенных на четных местах в каждом столбце. 24 Определить номер минимального по модулю элемента вектора-столбца. 25 Найти наибольший отрицательный элемент вектора. 26 Найти количество элементов матрицы С(5х5), лежащих в интервале [a,b] и заменить этим значением элемента, лежащие на главной диагонали. 27 Вывести значение и номер последнего нечетного отрицательного элемента 18 вектора. 28 Найти произведение положительных элементов главной диагонали квадратной матрицы А. 29 Ввести квадратную матрицу и получить из ее элементов другую, каждый элемент которой умножен на значение ее определителя. 30 В векторе Х поменять местами минимальное и максимальное значения элементов. 3.2.4. Содержание отчета 1) В форме комментариев: Название лабораторной работы ФИО студента, номер группы № варианта Индивидуальное задание 2) Протокол вычислений (сессии) в Командном окне и содержимое окна редактора SciNotes, снабженное соответствующими комментариями. 1.3.4. Примеры выполнения заданий 1) Задание с использованием векторов: Среди n последних элементов вектора найти количество элементов, равных вводимому числу m 2) Решение задачи (сценарии и протоколы сессии) //Первый сценарий–функция poisk_m_vect.sceдля обработки вектора //Среди n последних элементов вектораmasфункция poisk_m_vect // находит количествоэлементов, равных вводимому числу m // Исходные данные: входные параметрычисла m,n и векторmas; //выходные параметры функцииmas2 и kol function [mas2,kol]=poisk_m_vect(mas,m,n) k=length(mas);//Кол-во элементов в векторе mas //Поиск числа mсреди n последних элементов // Вектор mas2содержитиндексы найденных элементов mas2=find(mas(k-n+1:$)==m); // Кол-во найденных элементов = длине созданного массива kol=length(mas2); endfunction //Конецсценарияpoisk_m_vect.sce========================================= //Второй сценарийPr1_3_1.sce для решения первой задачи // Реализуетзагрузку сценария poisk_m_vect.sce,ввод исходных данных, // обращение к функцииpoisk_m_vectи вывод результатов 19 clear;// Очистка окна Обозреватель данных clc; // Очистка Командного окна //Загрузка сценария обработки вектора exec('poisk_m_vect.sce'); // Создание вектора и вводисходных данных для его обработки n=input("Введите число n ="); m=input("Введите искомое число m ="); k=input("Введите количество элементов вектора "); a=input("Введите начальное значение диапазона для вектора "); b=input("Введите конечное значение диапазона для вектора "); //Созданиевектора в заданном диапазоне mas=grand(1,k,"uin",a,b); //Вывод исходного массива на экран disp(mas,"Исходный массив:"); //Обращениек функции для обработки вектора [mas2,kol]= poisk_m_vect(mas,m,n); //Вывод массива mas2 с индексами disp(mas2,"Индексы найденных элементов в новом векторе"); // Вывод результата решения задачи mprintf('Среди последних %1d элементов исходного массива \n',n); mprintf('кол-во чисел =%1d равно %3d',m,kol); //Конец сценарияPr1_3_1.sce=============================================== -->// Сессия Командного окна: -->//Практическое занятие 1.3 по теме -->// «Матричные операции создания, доступа, извлечения -->//и модификации» -->// Вариант 0, задание 1 -->// Выполнил:Студент группы БИН1801 Иванов И.И. -->//Вызов и выполнение сценарияPr1_3_1.sce --> -->clear // Очистка окна Обозревателя данных -->clc // Очистка Командного окна -->exec('Pr1_3_1.sce', 0); Введите число n =4 Введите искомое число m =3 Введите кол-во элементов вектора 10 Введите начальное значение диапазона для вектора 2 Введите конечное значение диапазона для вектора 4 Исходный массив: 2. 3. 4. 3. 4. 3. 4. 4. 3. 4. Индексы найденных элементов в новом массиве 3. Среди последних 4 элементов исходного массива кол-во чисел =3 равно 1 -->//Конец сессии первого задания=========================================== 20 1) Задание с использованием матриц: Найти среднее арифметическое первого столбца матрицы и заменить этим значением элементы последней строки матрицы. 2) Решение второй задачи (сценарии и протокол сессии): //Первыйсценарий – функция obrab_matr.sceдля решениязадачи 2 //Функция находит среднее арифметическое первого столбца матрицыA //и заменяет этим значением элементы последней строки матрицы function [sred, A]=zamena(A) sred=mean(A(:,1));// Среднее арифметическое первого столбца матрицы [Nr,Nc]=size(A);//Определение числа строк и столбцов матрицы A(Nr,:)=sred;//Замена элементов последней строки endfunction //Конец сценарияobrab_matr.sce========================================== //Второй сценарийPr1_3_2.sce для решения второй задачи // Реализует загрузку сценарияobrab_matr.sce, ввод исходных данных, // формирование матрицыA, вызов функции zamenaи выводрезультатов clear;// Очистка окна Обозреватель данных clc; // Очистка Командного окна //Загрузка сценария обработки матрицы exec('obrab_matr.sce'); N=input("Введите размер матрицы NxN "); //Генерация матрицы размером NxN и значениями от 0 до 10 A=grand(N,N,"uin",0,10); disp(A,"Исходная матрица: "); [sred,A]= zamena(A);//Вызов функции решения задачи //Вывод результатов на экран mprintf('Среднее арифметическое первого столбца равно %f',sred); disp(A,"Полученная матрицапосле замены : "); //Конец сценарияPr1_3_2.sce============================================== -->// Сессия командного окна: -->//Практическое занятие 1.3 по теме -->// «Матричные операции создания, доступа, извлечения -->//и модификации. Векторизацияи индексирование» -->// Вариант 0, задание 2 -->// Выполнил:Студент группы БИН1801 Иванов И.И. -->//Вызов и выполнение сценарияPr1_3_2.sce -->exec('Pr1_3_2.sce'); Введите размер матрицы NxN 5 Исходная матрица: 10. 0. 1. 5. 4. 21 7. 3. 3. 10. 6. 4. 10. 10. 1. 8. 10. 10. 1. 8. 7. 2. 5. 0. 10. 3. Среднее арифметическое первого столбца равно 6.600000 Полученная матрица после замены: 10. 0. 1. 5. 4. 7. 3. 3. 10. 6. 4. 10. 10. 1. 8. 10. 10. 1. 8. 7. 6.6 6.6 6.6 6.6 6.6 -->//Конец сессии второго задания =========================================== 3.2.5. Контрольные вопросы по теме 1) Способы создания векторов и матриц. 2) С использованием какой функции можно определить длину вектора? 3) С использованием каких функций можно определить в матрице число строк, число столбцов и общее количество элементов матрицы? 4) С какого числа начинается индексация вектора? 5) Какую матрицу создает операция |