КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Оператор for. Оператор цикла for имеет видОператор цикла for имеет вид for x=xn:hx:xk операторы end Здесь x - имя скалярной переменной - параметра цикла, хn - начальное значение параметра цикла, xk - конечное значение параметра цикла , hx - шаг цикла . Если шаг цикла равен 1, то hx можно опустить, и в этом случае оператор for будет таким. for x=xn:xk операторы end Выполнение цикла начинается с присвоения параметру начального значения (x=xn). Затем следует проверка, не превосходит ли параметр конечное значение (x>xk). Если x>xk, то цикл считается завершенным, и управление передается следующему за телом цикла оператору. Если же x≤xk , то выполняются операторы в цикле (тело цикла). Далее параметр цикла увеличивает свое значение на hx (x=x+hx). После чего снова производится проверка значения параметра цикла, и алгоритм повторяется. Пример. Протабулировать функцию y=xln2x.Х принимает значения от 1 до с шагом 0,2. clc for x=1:.2:2 y=x*log(x)^2; printf("%1.1f %2.2f",x,y) disp('') end 1.0 0.00 1.2 0.04 1.4 0.16 1.6 0.35 1.8 0.62 2.0 0.96 Циклы while и for могут быть прерваны с помощью оператора break.
Обработка массивов и матриц в Scilab
Массив – это совокупность однородных элементов, имеющих одно имя. Одномерный массив – это вектор . Двумерный массив – это матрица размерности n*m. В системе Scilab принято элементы массивов записывать следующим образом: a(1), a(n), b(3, 7), b(n, m). Для того, чтобы определить количество элементов в одномерном массиве x, используют функцию length вида n=length(x) Для того, чтобы определить количество строк (n) и столбцов (m) матрицы b, можно воспользоваться функцией size: [n, m]=size(b) Рассмотрим возможности sci-языка для обработки массивов и матриц. Особенностью программирования задач обработки массивов (одномерных, двумерных) на sci-языке является возможность как поэлементной обработки массивов (как в любом языке программирования), так и использование функций Scilab для работы массивами и матрицами. Рассмотрим основные алгоритмы обработки массивов и матриц и их реализацию на sci-языке. Ввод-вывод массивов и матриц Ввод массивов и матриц может быть организован как в режиме диалога: clc N=input('N='); disp("Ввод вектора Х"); for i=1:N x(i)=input('X='); end disp(x); //Ввод матрицы N=input('N='); M=input('M='); disp(' Ввод матрицы '); for i=1:N for j=1:M a(i,j)=input(''); end end disp(a); N=-->3 Ввод вектора Х X=-->4 X=-->-3 X=-->46 4. - 3. 46. N=-->2 M=-->3 Ввод матрицы -->-1 -->6 -->0 -->34 -->3 -->65 - 1. 6. 0. 34. 3. 65.
так и непосредственно в программе: x=[4 -3 46]; a=[-1, 6, 0;34, 3,65]; Вычисление суммы и произведения элементов массива (матрицы) Рассмотрим алгоритм нахождения суммы, который заключается в следующем: вначале сумма равна 0 (s=0), затем к s добавляем первый элемент массива и результат записываем опять в переменную s, далее к переменной s добавляем второй элемент массива и результат записываем в s и далее аналогично добавляем к s остальные элементы массива. При нахождении суммы элементов матрицы последовательно суммируем элементы всех строк. Алгоритм нахождения произведения следующий: на первом начальное значение произведения равно 1 (p=1), затем последовательно умножаем p на очередной элемент, и результат записываем в p и т.д. Программа вычисления суммы элементов массива //Записываем в переменную s число 0. s=0; //Перебираем все элементы массива for i=1:length(x) //накопление суммы s=s+x(i); end Программа вычисления произведения элементов массива p=1; for i=1:length(x) p=p*x(i); end Программа вычисления суммы элементов матрицы s=0; //Вычисляем количество строк n и столбцов m матрицы a. [n,m]=size(a); for i=1:n for j=1:m s=s+a(i,j); end end disp(s); Программа вычисления произведения элементов матрицы //Начальное значение произведение (p) равно 1. p=1; //Вычисляем количество строк N и столбцов M матрицы a. [N,M]=size(a); //Перебираем все строки матрицы. for i=1:N //Перебираем все столбцы матрицы. for j=1:M Умножаем значение p на текущий элемент матрицы. p=p*a(i,j); end end
Поиск максимального (минимального) элемента массива (матрицы) Алгоритм решения задачи поиска максимума и его номера в массиве следующий. Пусть в переменной с именем Max хранится значение максимального элемента массива, а в переменной с именем Nmax - его номер. Предположим, что первый элемент массива является максимальным и запишем его в переменную Max, а в Nmax - его номер (1). Затем все элементы, начиная со второго, сравниваем в цикле с максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную Max, а в переменную Nmax - текущее значение индекса i. Фрагмент программы поиска максимума: Реализация алгоритма поиска максимума //Записываем в Max значение первого элемента массива. Max=a(1); //Записываем в Nmax номер максимального элемента //массива, сейчас это число 1. Nmax=1; //Перебираем все элементы массива, начиная со второго. for i=2:N //Если текущий элемент массива больше Max, if x(i)>Max //то текущий элемент массива объявляем максимальным, Max=x(i); //а его номер равен i. Nmax=i; end; end; Алгоритм поиска минимального элемента в массиве будет отличаться от приведенного выше лишь тем, что в операторе if знак поменяется с > на <. Программа поиска минимального элемента матрицы и его индексов: Nmin - номер строки , min - номер столбца минимального элемента. Обратите внимание, что при поиске минимального (максимального) элемента матрицы циклы по i и j начинаются с 1. Если написать с двух, то при обработке элементов будет пропущена первая строка или первый столбец при сравнении a(i , j) с min. Программа поиска минимального элемента матрицы и его индексов //Записываем в Min a(1,1), в Nmin и Lmin число 1. Min=a(1,1); Nmin=1; Lmin=1; for i=1:N for j=1:M //Если текущий элемент матрицы меньше Min, if a(i,j)<Min //то текущий элемент массива объявляем минимальным, Min=a(i,j); //а его индексы равны i и j. Nmin=i; Lmin=j; end; end; end;
Другие примеры. Пример: вычислить количество отрицательных элементов вектора x=(-2, 5, -7, 9, -15). Решение. x=[-2, 5, -7, 9, -15]; n=length(x); k=0; for i=1:n if x(i)<0 then k=k+1; end end t= k
Пример: вычислить произведение положительных элементов матрицы
Решение. a=[1 3 5 7 9 -2 0 5]; [n, m]=size(a); s=1; for i=1:n for j=1:m if a(i, j)>0 then s=s*a(i, j); end end end s
|