
1 семестр_1 / ЛА / Модуль3 / МП-12_Николаев_Олег_БДЗ3
.docxВариант 16
Привести уравнение кривой 2‐го порядка к каноническому виду с помощью поворота системы координат и параллельного переноса. Отметить в старой системе координат центр кривой С и направления осей новой системы координат Х’ и Y’. Построить кривую. Отметить на графике фокусы и директрисы.
%функция округляет число до целого, если оно является целым, но Матлаб не
%понимает этого
function x=rnd(x)
if(abs(x-round(x))<1e-10)
x=round(x);
end
end
%функция осуществляет сдвиг на dx по оси х, сдвиг на dy по сои у
%и поворот на угол phi
function [x,y]=phirotate(x0,y0,phi,dx,dy)
x=dx+x0*cos(phi)+y0*sin(phi);
y=dy+y0*cos(phi)-x0*sin(phi);
end
А)
grid on;hold on;axis equal;
%коэффициенты в старой СК
a=5;b=6;c=5;d=-16;e=-16;f=-16;
%угол поворота СК
phi=acot((a-c)/b)/2;
%коэффициенты в новой СК
u=rnd(a*cos(phi)^2+b*cos(phi)*sin(phi)+c*sin(phi)^2);
v=rnd(a*sin(phi)^2-b*sin(phi)*cos(phi)+c*cos(phi)^2);
p=rnd(d*cos(phi)+e*sin(phi));
q=rnd(e*cos(phi)-d*sin(phi));
%сдвиг на dx,dy
dx=rnd(-p/(2*u));
dy=rnd(-q/(2*v));
%число в правой части уравнения
H=rnd(u*dx^2+v*dy^2-f);
%отметим центр кривой C
[x,y]=phirotate(-dx,-dy,phi,dx,dy);
plot(x,y,'*r');
text(x+0.5,y,'C');
x=[-10 10];y=[0 0];
plot(x,y,'k');plot(y,x,'k');
[x,y]=phirotate(x,y,phi,dx,dy);
plot(x,y,'r');
x=[0 0];y=[-10 10];
[x,y]=phirotate(x,y,phi,dx,dy);
plot(x,y,'r');
%вычисляем знаменатели в каноническом уравнении
A=H/u;B=H/v;
syms x y;
[x,y]=phirotate(x,y,phi,-dx,-dy);
ezplot(x^2/A+y^2/B-1);
%отметим фокусы
c=sqrt(B-A);
[x,y]=phirotate(-c,0,phi,dx,dy);
plot(x,y,'*k');
plot(y,x,'*k');
text(x+0.4,y,'F_1');
text(y+0.5,x,'F_2');
%построим директрисы
[x,y]=phirotate(B/c,[-10 10],phi,dx,dy);
plot(x,y);
[x,y]=phirotate(-B/c,[-10 10],phi,-dx,-dy);
plot(x,y);
title('x^2/4+y^2/16=1');
Б)
grid on;hold on;axis equal;
%коэффициенты в старой СК
a=9;b=-12;c=4;d=0;e=0;f=-1;
%угол поворота СК
phi=acot((a-c)/b)/2;
%коэффициенты в новой СК
u=rnd(a*cos(phi)^2+b*cos(phi)*sin(phi)+c*sin(phi)^2);
v=rnd(a*sin(phi)^2-b*sin(phi)*cos(phi)+c*cos(phi)^2);
p=rnd(d*cos(phi)+e*sin(phi));
q=rnd(e*cos(phi)-d*sin(phi));
%отметим центр кривой C
[x,y]=phirotate(0,0,phi,0,0);
plot(x,y,'*r');
text(x+0.5,y,'C');
x=[-10 10];y=[0 0];
plot(x,y,'k');plot(y,x,'k');
[x,y]=phirotate(x,y,phi,0,0);
plot(x,y,'r');
x=[0 0];y=[-10 10];
[x,y]=phirotate(x,y,phi,0,0);
plot(x,y,'r');
%вычисляем знаменатели в каноническом уравнении
A=1/13;
syms x y;
[x,y]=phirotate(x,y,phi,0,0);
ezplot(13*x^2-1);
%отметим фокусы
c=1/13;
[x,y]=phirotate(-c,0,phi,0,0);
plot(x,y,'*k');
plot(y,x,'*k');
text(x+0.4,y,'F_1');
text(y+0.5,x,'F_2');
%построим директрисы
[x,y]=phirotate(A/c,[-10 10],phi,0,0);
plot(x,y,'g');
[x,y]=phirotate(-A/c,[-10 10],phi,0,0);
plot(x,y,'g');
title('x^2/(1/13)+0*y^2=1');