科研的时候,想用Matlab画出双曲线来看看,上网一搜,发现了可以画出数学卷子里的双曲线大题的代码,尝试加了注释,方便理解一些~
clc;clear;close all;
a=2;
b=1.2;
c=sqrt(a^2+b^2);
C='black'; % 规定颜色
y=-3:.1:3;
xa=sqrt(1+y.^2/b^2)*a;
xd=-sqrt(1+y.^2/b^2)*a;
figure;
plot(xa,y,'linewidth',2,'color',C); % 先画双曲线右边
hold on;
plot(xd,y,'linewidth',2,'color',C); % 再画双曲线左边
ylim([-4,4]); % 规定显示范围
plot([0,0],[-4,4],'linewidth',2,'color',C); % 画纵轴
fill([-0.15,0,0.15],[3.5,4,3.5],'k'); % 加纵轴箭头
plot([-6,6],[0,0],'linewidth',2,'color',C); % 画横轴
fill([5.5,6,5.5],[0.12,0,-0.12],'k') % 加横轴箭头
xf=a^2/c;
plot([xf,xf],[-3.2,3.2],'linewidth',2,'linestyle',':','color',C); % 画一条竖虚线
plot(c,0,'.','color',C,'markersize',16); % 标注一个点
plot(-c,0,'.','color',C,'markersize',16); % 标注一个点
text(5.6,-0.5,'X','fontsize',14,'fontname','宋体'); % 标注X
text(0.4,3.5,'Y','fontsize',14,'fontname','宋体'); % 标注Y
text(-0.3,-0.3,'O','fontsize',14,'fontname','宋体'); % 标注点O
text(c+0.1,-0.3,'F2','fontsize',14,'fontname','宋体'); % 标注点F2
text(-c-0.3,-0.3,'F1','fontsize',14,'fontname','宋体'); % 标注点F1
plot(3,sqrt(9/a^2-1)*b,'.','color',C,'markersize',18); % 标注一个点
plot(xf,1,'.','color',C,'markersize',18); % 标注一个点
x1=3;y1=sqrt(9/a^2-1)*b;x2=xf;y2=1;
P=polyfit([x1,x2],[y1,y2],1);
xt=xf:.1:5;
yt=polyval(P,xt);
plot(xt,yt,'linewidth',2,'color',C); % 作一条斜线
text(3+0.1,sqrt(9/a^2-1)*b-0.2,'P','fontsize',14,'fontname','宋体'); % 标注点P
text(x2-0.5,y2,'P1','fontsize',14,'fontname','宋体'); % 标注点P1
plot(xt(end),yt(end),'.','color',C,'markersize',18); % 标注一个点
text(xt(end)+0.2,yt(end),'A','fontsize',14,'fontname','宋体'); % 标注点A
plot([xf,xt(end)],[yt(end),yt(end)],':','linewidth',2,'color',C); % 画一条斜虚线
plot([c,x1],[0,y1],'linewidth',2,'color',C); % 画一条斜直线
text(-0.4,-4.5,'图1','fontsize',14,'fontname','宋体'); % 给出图题
axis off;set(gcf,'color','w'); % 去掉边框
感觉回到了高中似的,可惜那时候都做不出来这些题o(╥﹏╥)o
代码转载自https://blog.csdn.net/weixin_32211243/article/details/115813380