Основы теории оптимального управления

Автор работы: Пользователь скрыл имя, 13 Апреля 2014 в 15:37, лабораторная работа

Описание работы

Задание 1
Дан вектор произвольной длины, заполненный произвольными числами. Необходимо 1)определить каких чисел больше отрицательных или положительных. 2)каждое второе положительное число заменить на 100.
Задание 2
Дан вектор произвольной длины(>5 чисел), с произвольными числами и произвольное заданное число. Необходимо из данного вектора найти 3 числа, среднее арифметическое которых ближе всего расположено к заданному числу.
Задание 3.
Используя операторы plot, hold on, hold off, fill нарисовать и запустить модель работающего светофора, он должен состоять из трех кругов трех цветов, а круги должны помешаться в прямоугольник, затем они все должны поочередно зажигаться как настоящий светофор!

Файлы: 1 файл

Дан вектор произвольной длины.docx

— 35.27 Кб (Скачать файл)

Проверил: Миркин Е. Л.



 

Задание 1

Дан вектор произвольной длины, заполненный произвольными числами. Необходимо 1)определить каких чисел больше отрицательных или положительных. 2)каждое второе положительное число заменить на 100

%очищаем  экран

clc

%обнуляем  переменные

clear all

%задаем  вектор произвольной длины

x=[45 -96 -416 78 23 -12 -32 -4 45 12];

% находим длину вектора

k=length(x);

%задаем  и обнуляем счетчики

positive=0;

negative=0;

%проверяем  положительные значения, перебирая  каждый элемент вектора

for i=1:k,

    if x(i)>0

    positive=positive+1;%если значение >0, то добавляем к счетчику положит. значений +1

else

    negative=negative+1;%в обратном случае, к счетчику отрийательных +1

end

%заменяем  второе положительное число на 100 и обнуляем счетчик

if positive==2;

    positive=0;

x(i)=100;

end

end

%проверяем каких значений больше положит или отриц.

if positive>negative

    disp ('more positive')%если полож больше, то выводим на экран 'more positive'

else

    disp ('more negative')%если отриц, то 'more negative'

end

x%выводим на экран, измененный вектор 
Задание 2

Дан вектор произвольной длины(>5 чисел), с произвольными числами и произвольное заданное число. Необходимо из данного вектора найти 3 числа, среднее арифметическое которых ближе всего расположено к заданному числу.

x=[12 86 -9 -78 56 -1 -2 56 41 32]

y=34

k=length(x)

min=abs(y-(x(1)+x(2)+x(3))/3);

for i=1:(k-2)

    for j=(i+1):(k-1);

        for m=(j+1):k;

            srednee=(x(i)+x(j)+x(m))/3;

            dif=abs(y-srednee);

            if dif<=min

            min=dif;

            x1=x(i);

            x2=x(j);

            x3=x(m);

            srednee1=srednee;

           end

       end

    end

end

x(i), x(j), x(m), srednee1

 

Задание 3

Два числа a и b называются дружественными если сумма делителей одного из них равна сумме делителей другого, кроме него самого и 1. Найти все дружественные числа от 200 до 300

function summa_delitelei =newf(x)

summa_delitelei=0;

k=length(x)

for i=2:(x-1),

    if (x/i)-fix(x/i)==0;

        summa_delitelei=summa_delitelei+i;

    end

end

создаем новый M-file, где и запускается программа

clc

clear all

l=200:300;

k=length(l);

s=[];

for j=1:(k-1);

    for i=(j+1):k;

        if newf(l(i))== newf(l(j)),

            s=[s; x(i) x(j)];

        end

    end

end

 

Задание 4

Заданы n точек произвольно расположенных на плоскости (x;y). Необходимо охватить их окружностью минимально-возможного радиуса (координаты центра и радиус). И нарисовать это изучив оператор “plot”

clc

clear all

n=fix(100*rand(1));% кол-во точек

 if n==1

x=(20*rand(1)-10);% заполнение х

y=(20*rand(1)-10);% заполнение у  

plot(x,y,'.')

disp('rad = 0')

 

else

   

for i=1:n

x(i)=(20*rand(1)-10);% заполнение х

y(i)=(20*rand(1)-10);% заполнение у

end

plot(x,y,'.')

hold on

 

rasst1=0;

 

for i=1:n

    for j=1:n

        if i~=j

% расчитываем расстояние между точками

        rasst=sqrt(((x(j)-x(i))^2)+((y(j)-y(i))^2));

            if rasst>rasst1

            rasst1=rasst;

 

% координаты центра

            x0=((x(i)+x(j))/2);     

            y0=((y(i)+y(j))/2);

            r=rasst1/2;% длина радиуса

            end

        end

    end

end

 

for i=1:n

      rass(i)=sqrt((x(i)-x0)^2+(y(i)-y0)^2);

% растояние от центра окружности до каждой точки

end

% определение длины радиуса

if max(rass)>r

    rad=max(rass)

else

    rad=r

end

 koordinati_centra = [x0 y0]

 

fi=0:pi/1000:2*pi;

x2=rad*cos(fi)+x0;

y2=rad*sin(fi)+y0;

plot(x2,y2,'k')

axis equal

end. 
Задание 5

Дан вектор произвольной длины, заполненный произвольными числами. Необходимо найти 1)неубывающую (возрастающую) последовательность чисел максимально возможной длины 2)невозрастающую(убывающую) последовательность чисел максимально возможной длины. 3)проиллюстрировать эти последовательности графически

 

Задание 6

Заполнить квадратную матрицу целыми числами по следующему шаблону: 1)закручивающаяся модель 2)раскручивающаяся спираль

clc

clear all

n=4

%закручиваем спираль

f=flipud((n^2+1)-spiral(n))

%раскручиваем спираль

m=flipud(spiral(n)) 

Задание 7

Используя операторы plot, hold on, hold off, fill нарисовать и запустить модель работающего светофора, он должен состоять из трех кругов трех цветов, а круги должны помешаться в прямоугольник, затем они все должны поочередно зажигаться как настоящий светофор!

clear all %очищаем Workspace

clc %очищаем Command Window

r=1; %задаем радиус круга

a=0:pi/100:2*pi; %аргумент изменяется 0 до 2-х Пи

x=r*cos(a);

y=r*sin(a); %х и у - координаты для желтого круга

q=r*cos(a);

w=r*sin(a)+2.2; %q и w - координаты для красного круга

e=r*cos(a);

p=r*sin(a)-2.2; %e и p - координаты для зеленого круга

e1=0.9*cos(a);

p1=0.9*sin(a)-2.2; %e1 и p1 - координаты для меньшего зеленого круга

X=[-1.3 -1.3 1.3 1.3 -1.3];

Y=[-3.4 3.4 3.4 -3.4 -3.4]; %Х и У задаются как координаты замкнутой прямоугольной области - корпус светофора

title('Светофор') %название рисунка

hold on %для того, чтобы нарисовать круги в одной системе координат

axis off %убирается система координат

axis equal %одинаковый масштаб для горизонтального и вертикального осей

fill(X,Y,'K') %заполняется корпус светофора черным цветом

fill(q,w,[70/256 0 0]) %заполняется 1-ый круг красным цветом

fill(x,y,[70/256 70/256 0]) %2-ой круг - желтым цветом

fill(e,p,[0 70/256 0]) % 3-ий круг - зеленым

pause(1) %задержка на 1 секунду

for i=1:2 %можно поставить бесконечность - inf

    fill(q,w,'r') %загорается красный

    pause(5) %и горит 5 секунд

    fill(q,w,[70/256 0 0]) %затем затухает

    fill(x,y,'y') %желтый загорается

    pause(2) %и горит 2 секунды

    fill(x,y,[70/256 70/256 0]) %затем затухает

    fill(e,p,'g') %загорается зеленый

    pause(5) %и горит 5 секунд

    for j=1:3 %после 5 секунд зеленый начинает мигать в виде кольца 3 раза

        fill(e,p,[0 70/256 0])

        pause(0.5)

        fill(e,p,'g')

        fill(e1,p1,[0 70/256 0])

        pause(0.5)

    end

    fill(e,p,[0 70/256 0]) %затем зеленый затухает

    pause(0.5) %пауза на 0.5 секунд для плавного перехода после мигания

    fill(x,y,'y') %снова загорается желтый

    pause(2) %и горит 2 секунды

    fill(x,y,[70/256 70/256 0]) %затем затухает и переходит на красный цвет

end

hold off

 

 


Информация о работе Основы теории оптимального управления