Задание №4 М-файлы и функции




Работа с М-файлами и пользовательскими функциями.

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]Шрифт кода программы должен отличаться от основного текста



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-07-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: