Matlab | 画出高中数学卷子上的几何题图

一、代码功能

科研的时候,想用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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值