лаба4. Лабораторная_работа_2_MATLAB (1). Лабораторная работа 2 Работа с матрицами в Matlab
Скачать 379.5 Kb.
|
Листинг 6. Файл-функция для вычисления кусочно-заданной функцииfunction f=pwf(x) if x<-1 f=1-exp(-1-x); elseif x<=2 f=x^2-x-2; else f=2-x; end Ход работы программы может определяться значением некоторой переменной (переключателя). Такой альтернативный способ ветвления программы основан на использовании оператора переключения switch. Переменная-переключатель помещается после switch через пробел. Оператор switch содержит блоки, начинающиеся со слова case, после каждого case записывается через пробел то значение переключателя, при котором выполняется данный блок. Последний блок начинается со слова otherwise, его операторы работают в том случае, когда ни один из блоков case не был выполнен. Если хотя бы один из блоков case выполнен, то происходит выход из оператора switсh и переход к оператору, следующему за end. Предположим, что требуется найти количество единиц и минус единиц в заданном массиве и, кроме того, найти сумму всех элементов, отличных от единицы и минус единицы. Следует перебрать все элементы массива в цикле, причем в роли переменной-переключателя будет выступает текущий элемент массива. Листинг 7 содержит файл-функцию, которая по заданному массиву возвращает число минус единиц в первом выходном аргументе, число единиц — во втором, а сумму — в третьем. Листинг 7. Файл-функция mpsum function [m,p,s]=mpsum(x) m=0; p=0; s=0; for i=1:length(x) switch x(i) case -1 m=m+1; case 1 p=p+1; otherwise s=s+x(i); end end Блок case может быть выполнен не только при одном определенном значении переключателя, но и в том случае, когда переключатель принимает одно из нескольких допустимых значений. В этом случае значения указываются после слова case в фигурных скобках через запятую, например: case {1,2,3}. Досрочное завершение цикла while или for осуществляется при помощи оператора break. Пусть, например, требуется по заданному массиву x образовать новый массив y по правилу до первого нулевого элемента , т.е. до тех пор, пока имеет смысл операция деления. Номер первого нулевого элемента в массиве x заранее неизвестен, более того, в массиве x может и не быть нулей. Решение задачи состоит в последовательном вычислении элементов массива y и прекращении вычислений при обнаружении нулевого элемента в x. Файл-функция, приведенная на листинге 8, демонстрирует работу оператора break. Листинг 8. Использование оператора break для выхода из циклаfunction y=div(x) for k=1:length(x)-1 if x(k)==0 break end y(k)=x(k+1)/x(k); end Практическая частьНаписать файл-функции для решения поставленных далее задач. Сохранить их в отдельных m-файлах. Вызвать созданные файл-функции из командной строки. Задание 1.Введите матрицы и найдите значения следующих выражений. Варианты:
|