Способы ввода данных и вывода результатов
Основы программирования в MATLAB
Оператор цикла for for count = start:step:final команды MatLab end
Здесь count – переменная цикла; start – её начальное значение; final – конечное значение; step – шаг на который увеличивается (или уменьшатся) переменная count. Если шаг равен 1, то его можно не указывать. Например, создадим матрицу Q, размера , элементы которой вычисляются по формуле: , для этого в М-файле hil создадим цикл: ------------------------------------------------------------------------------------------------------------------------ % Задание размера матрицы Q n = 4; % Инициализируем матрицу Q и заполняем её нулями Q = zeros(n); % Вычисляем элементы матрицы Q for i = 1:n for j = 1:n Q(i, j) = 1/(i + j - 1); end end % Отображаем матрицу на экране disp('Матрица Q = ') disp(Q) ------------------------------------------------------------------------------------------------------------------------ Оператор цикла while while условие цикла команды MatLab end В условии цикла используются операции отношения или логические операторы:
Найдем сумму диагональных элементов матрицы Q. Набираем команды внимательно, чтобы не произошло зацикливание программы. В случае зацикливания надо принудительно прервать выполнение M-файла. Для этого следует нажать клавиши Ctrl+C или Ctrl+Break. Продолжаем М-файл hil. ------------------------------------------------------------------------------------------------------------------------ s = 0; k = 1; while k <= n s = s + Q(k, k); k = k+1; end % Отображаем сумму на экране disp('Сумма диагональных элементов матрицы Q = ')
disp(s); ----------------------------------------------------------------------------------------------------------------------- У цикла while нет переменной цикла, в отличие, от цикла for, поэтому пришлось до начала цикла присвоить переменной k значение нуль, а затем увеличивать k на единицу.
Оператор ветвления if Оператор if может применяться в простом виде if условие команды MatLab end Например, напишем файл-функцию Rfun для вычисления выражения проверяющую значение аргумента. ------------------------------------------------------------------------------------------------------------------------ function f = Rfun(x); if abs(x) < 1 warning ('результат комплексный') end f = sqrt(x^2-1); ----------------------------------------------------------------------------------------------------------------------- Команда warning служит для вывода предупреждения в командное окно. Теперь вызов Rfun от аргумента, меньшего единицы по модулю, приведет к выводу в командное окно предупреждения: >> y = Rfun(0.2) Warning: результат комплексный y = 0 + 0.9798i
В общем виде оператор ветвления представляет конструкцию If - elseif – else
Напишем файл-функцию ifdem, демонстрирующую работу if - elseif – else. ----------------------------------------------------------------------------------------------------------------------- function ifdem(a); if (a == 0) disp('a равно нулю') elseif a == 1 disp('a равно 1') elseif a == 2 disp('a равно 2') elseif a >= 3 disp('a больше или равно 3') else disp('a меньше 3, но не равно 0, 1, 2') end ---------------------------------------------------------------------------------------------------------------------- В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else. Вызовем функцию ifdem с аргументом 1.2: >> ifdem(1.2) a меньше 3, но не равно 0, 1, 2 При организации циклических вычислений следует, позаботься о том, чтобы внутри цикла не возникало ошибок, и не было зацикливания программы. Для досрочного прерывания цикла можно использовать команду break. Оператор break прерывает цикл и происходит выполнение операторов, расположенных в строках следующих за последним end.
Например, напишем программу prch, определяющую является ли заданное число N простым. ------------------------------------------------------------------------------------------------------------------------ N = input('Ведите число: ') или function prch(N); % Предполагаем, что число простое (pr=1) pr = 1; % Перебираем все возможные делители числа N от 2 до N/2 for i=2:N/2 % Если N делится на i, if mod(N,i) == 0 % то число N не является простым (pr=0) pr =0; % и прерывается выполнение цикла break; end end % Если pr равно 1, то N - простое число if pr == 1 disp('ПРОСТОЕ ЧИСЛО') else disp('НЕ ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ') end ------------------------------------------------------------------------------------------------------------------------ Прервать не только цикл, но и программу можно также оператором error. Например, изменим начало программы prch. ------------------------------------------------------------------------------------------------------------------------ N = input('Ведите число: ') ost = round(N)- N; if (N > 0) & (ost == 0) % Предполагаем, что натуральное число простое (pr=1) pr = 1; else error('ЧИСЛО N НЕ ЯВЛЯЕТСЯ НАТУРАЛЬНЫМ') end % Перебираем все возможные делители числа N от 2 до N/2
........ ------------------------------------------------------------------------------------------------------------------------ Теперь, если ввести число, не являющимся натуральным, то программа прервется и укажет об ошибке ввода.
4. Оператор альтернативного выбора switch Одним из способов организации разветвлений является оператор switch, имеющий следующую структуру switch параметр case значение1 операторы 1 case значение2 операторы 2 case значение3 операторы 3 .... otherwise операторы end
Если значение параметра равно значению 1, то выполняются операторы 1, иначе, если параметр равен 2, то выполняются операторы 2 и т.д. Если значение параметра не совпадает ни с одним из значений в группах case, то выполняются операторы, которые идут после слова otherwise. Например, выведем на экран название дня недели, соответствующее заданному числу D, при условии что в месяце 31 день и 1-ое число – понедельник. ------------------------------------------------------------------------------------------------------------------------ D = input('ВВЕСТИ ЧИСЛО ОТ 1 ДО 31: ') или function day_week(D) md = mod(D,7); %ВЫЧИСЛЕНИЕ ОСТАТКА ОТ ДЕЛЕНИЯ D НА 7 switch md case 1 disp('ПОНЕДЕЛЬНИК') case 2 disp('ВТОРНИК') case 3 disp('СРЕДА') case 4 disp('ЧЕТВЕРГ') case 5 disp('ПЯТНИЦА') case 6 disp('СУББОТА') otherwise disp('ВОСКРЕСЕНЬЕ')
end ------------------------------------------------------------------------------------------------------------------------
Функции от функций MatLab предоставляет возможность написания файл-функции, входными аргументами которых, наряду с обычными переменными, являются и другие файл-функции. При этом имя файл-функции передается в строковой переменной, а её вычисления производиться при помощи команды feval. Например, напишем файл-функцию, которая проверяет попадает ли значение функции в точке в заданный интервал . ------------------------------------------------------------------------------------------------------------------------ function str = znach (’fname’, ymin, ymax, x) % проверка входных аргументов if ymin >= ymax error('нижняя граница должна быть меньше верхней') end y = feval(fname, x) if (y >= ymin) & (y <= ymax) str = 'значение функции попадает в заданный интервал'; else str = 'значение функции не попадает в заданный интервал'; end ------------------------------------------------------------------------------------------------------------------------ Замечание. В этой программе str – строковая переменная и её значения набирают в апострофах. В качестве исследуемой функции может выступать как встроенная функция MatLab, так и функция с одним входным аргументом, созданная пользователем. Например, наберем в командной строке последовательность операторов: >> r = znach('sin', 0.2, 0.5, pi/5) y = 0.58779 значение функции не попадает в заданный интервал
Способы ввода данных и вывода результатов Ввод данных: 1. Исходные данные можно задавать с помощью оператора присваивания. ------------------------------------------------------------------------------------------------------------------------ % Исходные данные: a = -2.5; b = 1.32; Fi = 3.89e-3; A = [1.2 3.2 4.5; 2.3 7.8 4.4]; . . . ----------------------------------------------------------------------------------------------------------------------- 2. Интерактивный ввод осуществляется с помощью команды input – запрос на ввод с клавиатуры. Если в M-файле набрать команду ------------------------------------------------------------------------------------------------------------------------ a = input('Ведите значение a = ') % ввод значения с клавиатуры и занесение введенного значения в а . . ------------------------------------------------------------------------------------------------------------------------ то, в командном окне появится надпись
Ведите значение a = |
далее следует ожидание ввода пользователем значения a. Вывод результатов. 1. Вывод на экран можно осуществить с помощью команды disp. ------------------------------------------------------------------------------------------------------------------------ . . . disp(' Решение x = ') disp(x) ------------------------------------------------------------------------------------------------------------------------ Результат на экране будет выведен в том формате, который был выбран заранее или по умолчанию. 2. Функция fprintf позволяет управлять видом записи чисел. Схема использования fprintf для вывода на экран при работе с числовыми переменными такова: fprintf('формат', список переменных). Например, требуется записать значения переменных и в формате с плавающей точкой, оставляя четыре цифры после десятичной точки для и шесть цифр – для : ------------------------------------------------------------------------------------------------------------------------ x = pi/4; y = sin(x); fprintf('x = %7.4f, y = %11.8f\n', x, y) ------------------------------------------------------------------------------------------------------------------------ В результате, в командном окне увидим x = 0.7854, y = 0.70710678 >> Последовательность %7.4f задает формат вывода переменной x, которая расположена первой в последовательности вывода. Знак процента указывает на начало формата, цифра 7 обозначает, что всего под значение переменной x отводится 7 позиций (включая знак и десятичную точку), цифра 4 после разделителя-точки обеспечивает точность отображения результата ─ четыре цифры после десятичной точки. Спецификатор f указывает на то, что следует вывести число в формате с плавающей точкой. Аналогичным образом работает формат %11.8f для вывода y. Для вывода целого числа используется формат %d. Завершение строки с форматами символом \n приводит к последующему выводу данных с новой строки. Формат fprintf работает с матрицей по столбцам. Например, напечатаем таблицу значений функции sin(x). ------------------------------------------------------------------------------------------------------------------------ clear all clc %Печать заголовка таблицы fprintf(' ТАБЛИЦА ЗНАЧЕНИЙ ФУНКЦИИ sin(x)\n') fprintf(' -----------------------------\n') fprintf(' | x | y |\n') fprintf(' -----------------------------\n') %создание вектора значений аргумента x = 0:pi/4:2*pi; %конструирование матрицы, первая строка которой содержит значение аргумента %вторая - значение функции M = [x; sin(x)]; fprintf(' | %8.5f | %8.5f |\n', M) fprintf(' -----------------------------\n') ------------------------------------------------------------------------------------------------------------------------
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|