ОиТ - Лекции / Лек 7 MatLab
.docПосле первого нажатия клавиши <↑> в строке ввода отобразится последняя введенная команда, при втором нажатии – предпоследняя и т.д. Клавиша <↓> осуществляет прокрутку команд в противоположном направлении.
В случае со sqr можно просто набрать правильное выражение или воспользоваться редактором (клавиша <↑>) и добавить t. Выражение примет следуюший вид:
>> sqrt(2)
ans =1.4142
Второй способ повторного исполнения команд – копирование из содержимого текстового поля.
В текстовом поле можно выделить с помощью мыши любую информацию и копировать ее в буфер обмена операционной системы Windows, а затем вставить ее либо в документ текстового редактора (например, Word), либо в командную строку. Выделение и вставка производится теми же средствами, что и в других Windows – программах. Вставленная в командную строку команда может быть отредактирована и отправлена на на выполнение нажатием клавиши <Enter>.
Третий способ повторного исполнения команд – копирование из Command History.
Если окно командного режима сильно «засорено», то можно применить команду clc, которая очищает экран и рамещает курсор в левом верхнем углу пустого экрана. Ранее введенные команды автоматически образуют список, который выводится в окне Command History (рис.1.1). Если появилась необходимость повторить ранее выполненную команду, то надо отыскать ее в Command History и дважды щелкнуть по ней левой кнопкой мыши. Для активизации окна Command History необходимо выбрать вкладку с одноименным названием и щелкнуть на ней левой кнопкой мыши. Если щелкнуть на какой – либо команде окна Command History левой кнопкой мыши, то данная команда становится текущей (на синем фоне). Можно выделить нужную последовательность команд при помощи комбинации клавиш <Shift>+<↑>, <Shift>+<↓>. При щелчке правой кнопкой мыши на выделенной области окна Command History появляется всплывающее меню. Выбор пункта Copy приводит к копированию выделенной последовательности в буфер Windows. При щелчке правой кнопкой мыши на области окна Command Window (если надо, это окно предварительно активизируется по вкладке MATLAB) появляется всплывающее меню. Выбор пункта Paste приводит к вставке скопированной последовательности команд в командную строку. Весь вставленный в командную строку набор команд отправляется на выполнение нажатием клавиши <Enter>. До нажатия клавиши <Enter> содержимое набора можно редактировать, используя обычные приемы редактирования, общие для Windows – программ, в том числе с помощью мыши. Можно вносить в команды необходимые изменения, удалять лишние команды и добавлять новые. При редактировании клавиши <↑> и <↓> могут использоваться для перемещения между строками набора.
Содержимое окна Command History не теряется после выхода из системы и выключения компьютера, т.е. можно использовать «историю» команд из предыдущих сеансов работы.
Предположим, что требуется вычислить значение следующего выражения:
e-3?sin3,1? - .
Введите в командной строке это выражение в соответствии с правилами MATLAB и нажмите <Enter>.
>> exp(-3)*sin(3.1*pi)-sqrt((log(2.5)^2+tan(3.8))/(cos(3.4*pi)+exp(1+sin(1))))
ans =
-0.5340
Если теперь требуется вычислить значение второго выражения, похожего на предыдущее, например
e-3?sin3,1? +,
то необязательно снова набирать его в командной строке. Вычислите данное выражение, проделав следующие шаги.
1. Нажмите клавишу <↑>, при этом в командной строке появится введенное ранее выражение.
2. Внесите в него необходимые изменения, заменив минус на плюс и квадратный корень на возведение в квадрат (для перемещения по строке с выражением служат клавиши <←> , <→>, <Home>, <End>).
3. Вычислите измененное выражение, нажав <Enter>.
Получается
>> exp(-3)*sin(3.1*pi)+((log(2.5)^2+tan(3.8))/ (cos(3.4*pi)+exp(1+sin(1))))^2
ans =0.0570
Если необходимо получить более точный результат первого выражения, то следует выполнить команду format long, а затем нажимать клавишу <↑> до тех пор, пока в командной строке не появится требуемое выражение, и вычислить его, нажав <Enter>.
>> format long
>> exp(-3)*sin(3.1*pi)-sqrt((log(2.5)^2+tan(3.8))/ (cos(3.4*pi)+exp(1+sin(1))))
ans =-0.53403847303554
В качестве примера на использование переменных найдем значение следующего выражения (в формате short)
ln.
Поскольку ранее переменная ans получила значение выражения, стоящего в скобках, следует изменить формат командой short, а затем набрать в командной строке log(ans) и нажать <Enter>:
>> format short
>> log(ans)
ans =-0.6273 + 3.1416i
Так как аргумент логарифма ans=-0,5340<0, то результат логарифмирования – комплексное число.
Замечание
Редактор MATLAB не в состоянии отыскать все ошибки при наборе в командной строке сложного выражения. Он не может обнаружить так называемые семантические ошибки, например, когда пользователь вместо одного оператора или функции ошибочно применяет другие. Если выражение набрано неправильно в этом смысле, то принажатии на клавишу <Enter> мы вычислим значение другого выражения, даже не подозревая об этом. Правильность ввода сложного выражения, например,
F = ,
можно проверить с помощью функции pretty из пакета символьной математики Symbolic Math Toolbox. Если установлен этот пакет , то символьное выражение можно создать при помощи команды sym, входным аргументом которой является строка с выражением, заключенным в апострофы. Ввведите команды
>> F=sym('(log(abs(x))+1/y)/(sqrt(x)+tan(sin(5)/ (1+y^2)))')
F =(log(abs(x))+1/y)/(x^(1/2)+tan(sin(5)/(1+y^2)))
>> pretty(F)
log(| x |) + 1/y
--------------------
1/2 sin(5)
x + tan(--------)
2
1 + y
В командном окне отобразилось введенное выражение в виде, близком к обычному математическому, что позволяет обнаружить семантические ошибки. Если они есть, то надо отредактировать выражение и ввести снова.
В данном случае видим, что выражение F введено правильно. Теперь можно заменить в F переменные x, y на нужные числовые и вычислить его . Вычислим F, например, при x=0,1, y=0,2. Введем
>> x=.1;y=.2;
Затем нажимаем клавишу <↑> до тех пор, пока в командной строке не появится выражение
>> F=sym('(log(abs(x))+1/y)/(sqrt(x)+tan(sin(5)/(1+y^2)))')
Уберем в нем sym(' ') и вычислим, нажав <Enter>
>> F=(log(abs(x))+1/y)/(sqrt(x)+tan(sin(5)/(1+y^2)))
F =-2.6904
Очевидно, что так, можно проверить правильность ввода любого вычисляемого выражения.
