Автор работы: Пользователь скрыл имя, 13 Апреля 2014 в 15:37, лабораторная работа
Задание 1
Дан вектор произвольной длины, заполненный произвольными числами. Необходимо 1)определить каких чисел больше отрицательных или положительных. 2)каждое второе положительное число заменить на 100.
Задание 2
Дан вектор произвольной длины(>5 чисел), с произвольными числами и произвольное заданное число. Необходимо из данного вектора найти 3 числа, среднее арифметическое которых ближе всего расположено к заданному числу.
Задание 3.
Используя операторы plot, hold on, hold off, fill нарисовать и запустить модель работающего светофора, он должен состоять из трех кругов трех цветов, а круги должны помешаться в прямоугольник, затем они все должны поочередно зажигаться как настоящий светофор!
Проверил: Миркин Е. Л. |
Задание 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_
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)+((
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)
% растояние от центра окружности до каждой точки
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