Работа с М-файлами и пользовательскими функциями.
4.1 Описать и реализовать следующий код, создать файл функцию
//код 12[U6]
x = [0:0.1:10];//создает вектор х в диапазоне [0,10] с шагом 0.1
--> f = exp(-x);//функция f
--> subplot(1, 2, 1)//subplot- устанавливает текущие оси для выбора ячейки текущей разграфлённой фигуры
plot(x, f)//строит график f
--> g = sin(x);//функция g
--> subplot(1, 2, 2) // subplot(m,n,p) виртуально разделяет графическое окно на матрицу
подокон размером m-на-n, и выбирает p-тое подокно для получения графика
--> plot(x, g)//строит график g
Рисунок 34 реализация функции subplot
//код 11 данная программа строит график двух функций и показывает их в
одном окне с разными осями
--> exec(“main.sce”)//как только набираем в консоли эту команду, сразу
появляется графическое окно. Мы создали отдельную файл-функцию main,
которая реализует код 11.
4.2. Постройте график файл-функции myfun с помощью команд plot и fplot2d.
В файле-функции myfun должно рассчитываться следующее выражение:
где
k N, N - номер варианта по списку,
N
T
. В качестве входного
аргумента файл-функция должна принимать вектор
t
, который должен быть
задан на интервале [0, 5] с шагом 0.01. Таким образом, М-файл функции
должен иметь следующее заглавие:
function f = myfun(t)
В командной строке MATLAB вызов этой функции происходит
следующим образом:
--> y = myfun(t)
В результате чего создастся вектор-строка y с тем же числом элементов,
что и вектор
t. После этого можно воспользоваться функцией plot.
Чтобы воспользоваться функцией fplot2d необходимо выполнить
следующую команду:
--> fplot2d(t, myfun),
где t – вектор времени.
//код 12-файл_функция myfun
function y=myfun(t)
N=16//вариант
T=N/50;
k=N;
y=k.*(t-T.*(1-exp(-t./T)));
|
endfunction
Содержание консоли:
--> t=[0:0.01:5]
t =
……………………
--> exec("myfun.sce");
--> y=myfun(t)//создается вектор-строка у
--> plot(t,y)
Рисунок 35 реализация графика plot через файл_ функцию “myfun.sce”
--> fplot2d(t,myfun)
Рисунок 36 реализация графика fplot2d(t,myfan) через файл_ функцию “myfun.sce”
4.3. Напишите файл-функцию root2, которая находит только действительные
корни квадратного уравнения, а при наличии комплексного корня выдает
сообщение об ошибке. В демонстрационных примерах второй коэффициент
квадратного уравнения должен быть равен вашему номеру по списку в
журнале группы.
//код 13
function [y1, y2]=root2//ax^2+bx+c=0
a=input("Введите а:")
c=input("Введите c:")
b=2//номер варианта
D=sqrt(b.^2-a.*c)//дискриминант квадратного уравнения
y1=(-2+D)./2*a//первый корень
y2=(-2-D)./2*a//второй корень
if D<0//функция если
then disp("Ошибка")//тогда
else disp(y1,"Значение у1:")//в противном случае, вывести на экран значения корней
disp(y2,"Значение y2:")
end
endfunction
Содержание консоли:
Рисунок 37 результат программы код 13
>> B = Bezie(P0,P1,P2,P3,step)
В отчёте приведите не менее 5 графиков кривых Безье для различных
комбинаций опорных точек P0,P1,P2,P3.
Решение
//код 14-файл Bezie
function B=Bezie(P0, P1, P2, P3, step)
t=[0:step:1];//вектор t с шагом step
X=((1-t).^3)*P0(1,1)+(3.*t.*(1-t).^2)*P2(1,1)+(3.*t.*t.*(1-t))*P3(1,1)+(t.*t.*t).*P1(1,1)//
координата по Х
Y=((1-t).^3)*P0(2,1)+(3.*t.*(1-t).^2)*P2(2,1)+(3.*t.*t.*(1-t))*P3(2,1)+(t.*t.*t).*P1(2,1)//
координата по У
B=[X;Y];//матрице B задаем координаты ХУ
plot(X,Y)//строит кривую безье
endfunction
//набираем в консоли
--> P0=[1;2]//вектор Р0
P0 =
1.
2.
--> P1=[2;4]//вектор Р1
P1 =
2.
4.
--> P2=[4;1]//вектор Р2
P2 =
4.
1.
--> P3=[2;2]//вектор Р3
P3 =
2.
|
2.
--> step=0.01//шаг вектора t
step =
0.01
--> B=Bezie(P0,P1,P2,P3,step)//вызываем файл_ функцию Bezie
Рисунок 38 график кривой безье Р0,Р1,Р2,Р3
--> B=Bezie(P1,P0,P2,P3,step)//меняем порядок
Рисунок 39 график кривой безье Р1,Р0,Р2,Р3
Рисунок 40 график кривой безье Р0,Р1,Р3,Р2
Рисунок 41 график кривой безье Р3,Р2,Р1,Р0
Рисунок 42 график кривой безье Р0,Р3,Р1,Р2
Вывод:
В ходе лабораторной работы получил базовые знания для работы в
двумерной и трехмерной графикой. В среде MATLAB/SCILAB, научился
создавать графики функций, построил поверхности, также использовал Мфайлы.
[U1]Страницы не пронумерованы. А вообще оформление плохое
[U2]Зачем такие огромное формулы? Переделать
[U3]Это что фотография экрана чтоли? Сделайте нормальные графики здесь и дальше
[U4]Отделить подпись от основного текста. Также нужно отцентровать все подписи
[U5]Что за квадратики слева?
[U6]Шрифт кода программы должен отличаться от основного текста