- •Цель работы
- •Задание на лабораторную работу
- •Задание 1. Нахождение точек пересечения двух кривых
- •Задание 2. Нахождение точки экстремума функции
- •Задание 3. Найти координаты оснований перпендикуляров
- •Задание 4. Основание перпендикуляра, опущенного из точки на окружность
- •Задание 5. Изобразить точки, касательная которых имеет угол наклона
- •Задание 6. Написать программу, которая строит график сферы или пирамиды по выбору пользователя
- •Задание 7. Написать программу, которая строит график прозрачного куба или конуса по выбору пользователя
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
- •Приложение е
- •Приложение ж
- •Приложение и
- •Приложение к
Приложение в
Листинг задания 3
symsXACBD;
syms X AC BD;
syms X1 A1C BD;
x_a = -1;
x_a1 = 2;
y_a = -2;
y_a1 = 2;
x_b = -1;
y_b = 4;
x_c = 5;
y_c = 4;
% построение треугольника АВС
x=[x_a x_b x_c x_a]
y=[y_a y_b y_c y_a]
% построение треугольника А1ВС
x1=[x_a1 x_b x_c x_a1]
y1=[y_a1 y_b y_c y_a1]
k = (y_c-y_a)/(x_c-x_a) % коэффициентнаклонапрямой АС
AC = y_a + k*(X-x_a) % уравнение прямой АС (y-y0=k(x-x0))
BD = y_b - (1/k)*(X-x_b) % уравнение прямой, перпендикулярной АС и проходящей через точку В.
x0 = fsolve(inline(AC-BD) ,1,optimset('Display','off'))
y0 = y_a + k*(x0-x_a)
k1 = (y_c-y_a1)/(x_c-x_a1) % коэффициент наклона прямой АС
AC1 = y_a1 + k1*(X1-x_a1) % уравнение прямой АС (y-y0=k(x-x0))
BD1 = y_b - (1/k1)*(X1-x_b) % уравнение прямой, перпендикулярной АС и проходящей через точку В.
x01 = fsolve(inline(AC1-BD1), 1)
y01 = y_a1 + k1*(x01-x_a1)
% ABC, A1BC, Высота, Точка D, Высота, Точка H
plot(x, y, x1, y1, [x_b x0], [y_b y0], x0, y0, 'g+', [x_b x01], [y_b y01], x01, y01, 'b+', [x_a1, x01], [y_a1, y01], 'r--')
hold on
%обозначениевершин
set(gca,'FontName','Arial','FontSize',10);
text (x0+0.2,y0,'D');
text (x01+0.2,y01,'H');
text (x_a,y_a-0.2,'A');
text (x_a1,y_a1-0.2,'A1');
text (x_b,y_b+0.2,'B');
text (x_c,y_c+0.2,'C');
axis ([-3 6 -3 6]);
xlabel('Ось X');
ylabel('Ось Y');
Title('Задание 3. Нахождение координат основания высоты треугольника')
grid on
legend('Треугольник АВС', 'Треугольник А1BC', 'Перпендикуляр на сторону АС', 'Точка D место падения перпендикуляра BD', 'Перпендикуляр на сторону A1Cx1=0;
y1=0;
x2=3;
y2=0;
x3=3;
y3=10;
% нахождение координат основания перпендикуляра (x4; y4)
r12=sqrt(((x1-x2)^2)+((y1-y2)^2));
r23=sqrt(((x2-x3)^2)+((y2-y3)^2));
r13=sqrt(r12^2+r23^2);
r14=4;
x4=r14*r12/r13
y4=r14*r23/r13
%построение графика окружности
x=-4:0.1:4;
y=sqrt(16-x.*x);
plot(x,y)
hold on
y=-sqrt(16-x.*x);
plot(x,y)
plot(x3,y3,'xg') %точка (3;10)
x=[x1 x3];
y=[y1 y3];
plot(x,y,'r') % построение прямой
plot(x4,y4,'dc') % искомая точка
x=[x3 x2 x1];
y=[y3 y2 y1];
plot(x,y,'k')
x=[x4 x4 x1];
y=[y4 y1 y1];
plot(x,y,'k');
% оформление
axis([-4 11 -4 11])
title('Задание 4. Нахождение основания перпендикуляра');
xlabel('Ось x'); ylabel('Ось y');
legend('Окружность', 'радиуса 4','Точка A(3;10)', 'Перпендикуляр', 'Точка касания');
grid
text (x1-1,y1-0.5,'(0; 0)');
text (x2-1,y2-0.5,'(3; 0)');
text (x3,y3+0.5,'(3; 10)');
text (x4-1.5,y4+0.5,'(x; y)');
', 'Точка H место падения перпендикуляра BH', 4);
str=strcat('x: ', num2str(roundn(x0, -2)));
text(x0*1.2, y0*0.70, str);
str=strcat('y: ', num2str(roundn(y0, -2)));
text(x0*1.2, y0*0.4, str);
str=strcat('x: ', num2str(roundn(x01, -2)));
text(x01*0.8, y01*0.70, str);
str=strcat('y: ', num2str(roundn(y01, -2)));
text(x01*0.8, y01*0.4, str);
axis('equal')
Приложение г
Листинг задания 4
x1=0;
y1=0;
x2=3;
y2=0;
x3=3;
y3=10;
% нахождение координат основания перпендикуляра (x4; y4)
r12=sqrt(((x1-x2)^2)+((y1-y2)^2));
r23=sqrt(((x2-x3)^2)+((y2-y3)^2));
r13=sqrt(r12^2+r23^2);
r14=4;
x4=r14*r12/r13
y4=r14*r23/r13
%построение графика окружности
x=-4:0.1:4;
yd=sqrt(16-x.*x);
yu=-sqrt(16-x.*x);
plot(x, yd);
hold on
plot(x, yu);
hold on
plot(x3,y3,'xg') %точка (3;10)
x0 = -x3;
y0 = -y3;
x=[x0 x1 x3];
y=[y0 y1 y3];
plot(x, y, 'r') % построение прямой
plot(x4, y4, 'dc') % искомая точка
% оформление
axis([-4 11 -4 11])
title('Задание 4. Нахождение основания перпендикуляра');
xlabel('Ось x'); ylabel('Ось y');
legend('Окружность', 'с радиусом 4', 'Точка A(3;10)', 'Перпендикуляр', 'Точка касания');
grid
text (x1-1,y1-0.5,'(0; 0)');
text (x3,y3+0.5,'(3; 10)');
text (x4-1.5, y4+0.5, strcat('(', num2str(roundn(x4-1.5, -2)), ', ', num2str(roundn(y4+0.5), -2), ')'));
axis('equal')
