//Первый сценарий–функция 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 последних элементов
// Вектор mas 2 содержит индексы найденных элементов
mas2=find(mas(k-n+1:$)==m);
// Кол-во найденных элементов = длине созданного массива
Kol=length(mas2);
endfunction
//Конец сценарияpoisk_m_vect.sce=========================================
//Второй сценарий Pr 1_3_1. sce для решения 1-й задачи
// Реализует загрузку сценария poisk_m_vect.sce,ввод исходных данных,
// обращение к функции poisk_m_vectи вывод результатов
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);
//Вывод массива mas 2 с индексами
disp(mas2,"Индексы найденных элементов в новом векторе");
// Вывод результата решения задачи
mprintf('Среди последних %1d элементов исходного массива \n',n);
mprintf('кол-во чисел =%1d равно %3d',m,kol);
//Конец сценария Pr 1_3_1. sce===============================================
-->// Сессия Командного окна:
-->//Практическое занятие 1.3 по теме-->// «Матричные операции создания, доступа, извлечения
-->// и модификации»
-->// Вариант 0, задание 1
-->// Выполнил: Студент группы БИН1801 Иванов И.И.
-->//Вызов и выполнение сценария Pr 1_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
-->//Конец сессии 1-го задания ===========================================
Пример выполнения задания 2
1) Решить 2-ю задачу: Найти среднее арифметическое первого столбца матрицы и заменить этим значением элементы последней строки матрицы.
2) Решение 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 ==========================================
//Второй сценарий Pr 1_3_2. sce для решения 2-й задачи
// Реализует загрузку сценария obrab _ matr.sce, ввод исходных данных,
// формирование матрицы A , вызов функции zamena и вывод результатов
clear;// Очистка окна Обозреватель данных
clc; // Очистка Командного окна
//Загрузка сценария обработки матрицы
exec('obrab _ matr.sce');
N=input("Введите размер матрицы NxN ");
//Генерация матрицы размером NxN и значениями от 0 до 100
A=grand(N,N,"uin",0,10);
disp(A,"Исходная матрица: ");
[sred,A]= zamena(A); //Вызов функции решения задачи
//Вывод результатов на экран
mprintf('Среднее арифметическое первого столбца равно %f',sred);
disp(A,"Полученная матрица после замены : ");
// Конец сценария Pr 1_3_2. sce ==============================================
-->// Сессия командного окна:
-->// Практическое занятие 1.3 по теме-->// «Матричные операции создания, доступа, извлечения
-->// и модификации. Векторизация и индексирование»
-->// Вариант 0, задание 2
-->// Выполнил:Студент группы БИН1801 Иванов И.И.
-->//Вызов и выполнение сценария Pr 1_3_2. sce
--> exec('Pr1_3_2.sce');
Введите размер матрицы NxN 5
Исходная матрица:
10. 0. 1. 5. 4.
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
-->//Конец сессии 2-го задания ===========================================
Содержание отчета
1) Титульный лист
2) Название и цель практического занятия
3) Общее задание
4) Сценарии, вначале которых должна быть введена информация в виде комментариев:
· имя и назначение каждого сценария;
· номер задания и формулировка решаемой задачи и/или краткое перечисление действий, реализуемых в сценарии.
5) Протокол сессии Командного окна, вначале которого должна быть введена информация в виде комментариев:
· название практического занятия;
· вариант индивидуального задания и номер задания;
· ФИО студента, номер группы;
· краткое перечисление действий, выполняемых во время сессии.
1.3.6. Контрольные вопросы по теме
1) Способы создания векторов и матриц.
2) С использованием какой функции можно определить длину вектора?
3) С использованием каких функций Scilab можно определить в матрице число строк, число столбцов и общее количество элементов матрицы?
4) С какого числа начинается индексация вектора?
5) Какую матрицу создает операция ones?
6) Каким образом в Scilab могут быть объединены две матрицы?
7) Назначение и формат функции cat?
8) Каким образом создается вектор с постоянным шагом?
9) Можно ли создать матрицу, элементы строки которой изменяются с постоянным шагом?
10) Каким образом удалить из матрицы определенный столбец?
11) Что такое векторизация?
12) Стандартное индексирование векторов и матриц.
13) Что такое векторное индексирование матриц.
14) Что такое логическое индексирование матриц.
15) Что такое поэлементные действия (операции с точкой) и где они используются?
16) Каким образом можно транспонировать вектор или матрицу?
17) Требуется ли при работе с векторами и матрицами предварительное объявление их размера?
18) Какой символ используются для разделения элементов матрицы в строке, а какой для разделения ее строк?
19) Какие команды предназначены для заполнения матрицы случайными числами, распределенными по равномерному или нормальному закону распределения?
20) Формат команд выбора минимального и максимального значения элемента матрицы.
1.
Дата: 2019-11-01, просмотров: 1061.