心形线汇总-数学曲线的浪漫表白

又到了一年一度的520网络情人节,不知许多朋友们是否因为不知如何以不落窠臼的方式表白而苦恼呢?不用急,今天我们带给大家一组以心形线公式。希望这种独特的数学表白,能够对大家有所启发。

1. 笛卡尔心形线

这是zui经典的心形线,其数学形式简洁明了,相传是笛卡尔向瑞典一个小公国的公主写情书时使用的——不过该典故无法严格考证,毕竟这一类的名人小故事太多了,诸如贝多芬与《月光》、牛顿的苹果树、爱迪生救妈妈、瓦特的烧水壶……要么已被证明是假的,要么是在真实历史的基础上加工而成的。但无论其真实性如何,故事的浪漫与凄美是毋庸置疑的。言归正传,下面给出笛卡尔心形线的方程(极坐标形式,直角坐标请自行推导):

\it{r}\rm{=1-sin(}\it{\theta}\rm{)}

MATLAB作图代码和作图结果如下:

clear; close all;
% 笛卡尔心形线
theta=linspace(0,2*pi,361);
r=1-sin(theta);
x=r.*cos(theta);
y=r.*sin(theta);
equation='$$\it{r}\rm{=1-sin(}\it{\theta}\rm{)}$$';

c=figure;
plot(x,y,'Color','#A2142F','LineWidth',2);
xlabel('\it{x}','FontName','Times New Roman','FontSize',15);
ylabel('\it{y}','FontName','Times New Roman','FontSize',15);
c.InnerPosition=[400 100 400 400];
c.Resize="off";
xlim([-2,2]); ylim([-2.5,1.5]);
xticks(-1.5:0.5:1.5); yticks(-2:0.5:1);
c.CurrentAxes.XAxisLocation='origin';
c.CurrentAxes.YAxisLocation='origin';
c.CurrentAxes.InnerPosition=[0,0,1,1];
c.CurrentAxes.Box='off';
c.CurrentAxes.FontName='Times New Roman';
text(-1.7,1,equation,'Interpreter','latex','FontSize',15);

尽管笛卡尔心形线看起来很“胖”,跟生活中常见的心形也有明显差异,但它具有鲜明的运动学意义——两个匀速圆周运动叠加的轨迹(即摆线)。摆线在机械学、天文学等领域有着重要的应用。

数学领域对心形线并没有严格的定义,因此人们提出了许多其它的心形线方程,形状更加美观逼真,不过也适当牺sheng了曲线的简洁性和数学物理意义。下面介绍几种几种常见形式。

2. 一种参数方程心形线

方程为:

\it{x}\rm{=16sin^{3}\,}\it{t}

\it{y}\rm{=13cos\,}\it{t}\rm{-5cos\,2}\it{t}\rm{-2cos\,3}\it{t}\rm{-cos\,4}\it{t}

MATLAB作图代码和作图结果如下:

clear; close all;
% 心形线
t=linspace(0,2*pi,361);
x=16*(sin(t)).^3;
y=13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
equation={'$$\it{x}\rm{=16sin^{3}\,}\it{t}$$',...
    '$$\it{y}\rm{=13cos\,}\it{t}\rm{-5cos\,2}\it{t}\rm{-2cos\,3}\it{t}\rm{-cos\,4}\it{t}$$'};

c=figure;
plot(x,y,'Color','#A2142F','LineWidth',2);
xlabel('\it{x}','FontName','Times New Roman','FontSize',15);
ylabel('\it{y}','FontName','Times New Roman','FontSize',15);
c.InnerPosition=[400 100 400 350];
c.Resize="off";
xlim([-20,20]); ylim([-20,15]);
xticks(-15:5:15); yticks(-15:5:10);
c.CurrentAxes.XAxisLocation='origin';
c.CurrentAxes.YAxisLocation='origin';
c.CurrentAxes.InnerPosition=[0,0,1,1];
c.CurrentAxes.Box='off';
c.CurrentAxes.FontName='Times New Roman';
text(-18,-17,equation,'Interpreter','latex','FontSize',11);

3. 心形线-上下拼接而成

这种心形线由上下两段拼接而成,分别由不同的函数方程描述,因此几乎没有任何数学意义。但是形状美观,并且比较“苗条”。方程为:

\it{y}\rm{_1=}\sqrt{1-\left(|\it{x}\rm{|-1}\right)^2}

\it{y}\rm{_2=acos}\left(1-|\it{x}\rm{|}\right)-\pi

MATLAB作图代码和作图结果如下:

clear; close all;
% 心形线-上下拼接而成
x=-2:0.01:2;
y1=sqrt(1-(abs(x)-1).^2);
y2=acos(1-abs(x))-pi;
equation={'$$\it{y}\rm{_1=}\sqrt{1-\left(|\it{x}\rm{|-1}\right)^2}$$',...
    '$$\it{y}\rm{_2=acos}\left(1-|\it{x}\rm{|}\right)-\pi$$'};

c=figure;
plot(x,y1,x,y2,'Color','#A2142F','LineWidth',2);
xlabel('\it{x}','FontName','Times New Roman','FontSize',15);
ylabel('\it{y}','FontName','Times New Roman','FontSize',15);
c.InnerPosition=[400 100 500 550];
c.Resize="off";
xlim([-2.5,2.5]); ylim([-3.5,1.5]);
xticks(-2:0.5:2); yticks(-3:0.5:1);
c.CurrentAxes.XAxisLocation='origin';
c.CurrentAxes.YAxisLocation='origin';
c.CurrentAxes.InnerPosition=[0,0,1,1];
c.CurrentAxes.Box='off';
c.CurrentAxes.FontName='Times New Roman';
text(-2.3,-2.4,equation,'Interpreter','latex','FontSize',11);

4. 心形线-半个椭圆及其镜像的拼接

方程为:

5\it{y}\rm{^2-6|}\it{x}\rm{|}\it{y}\rm{+5}\it{x}\rm{^2-128=0}

MATLAB作图代码和作图结果如下:

clear; close all;
% 心形线-半个椭圆及其镜像拼接
x2=[40:(-0.5):(0.5), 0:0.5:40];
x=[-sqrt(40:(-0.5):(0.5)), 0, sqrt(0.5:0.5:40)];
y1=0.6*sqrt(x2)+0.8*sqrt(-x2+40);
y2=0.6*sqrt(x2)-0.8*sqrt(-x2+40);
equation='$$5\it{y}\rm{^2-6|}\it{x}\rm{|}\it{y}\rm{+5}\it{x}\rm{^2-128=0}$$';

c=figure;
plot(x,y1,x,y2,'Color','#A2142F','LineWidth',2);
xlabel('\it{x}','FontName','Times New Roman','FontSize',15);
ylabel('\it{y}','FontName','Times New Roman','FontSize',15);
c.InnerPosition=[400 100 400 350];
c.Resize="off";
xlim([-8,8]); ylim([-6,8]);
xticks(-6:2:6); yticks(-4:2:6);
c.CurrentAxes.XAxisLocation='origin';
c.CurrentAxes.YAxisLocation='origin';
c.CurrentAxes.InnerPosition=[0,0,1,1];
c.CurrentAxes.Box='off';
c.CurrentAxes.FontName='Times New Roman';
text(0,3,equation,'HorizontalAlignment','center','Interpreter','latex','FontSize',15);

关于上述心形线的方程,细心的朋友不难发现,它是中心位于原点、长短轴倾斜45°的椭圆和自身关于坐标轴镜像拼接的结果。下面这段作图代码可以直观地展现这一点。

clear; close all;
% 心形线-半个椭圆及其镜像拼接的演示
x2=[40:(-0.5):(0.5), 0:0.5:40];
x=[-sqrt(40:(-0.5):(0.5)), 0, sqrt(0.5:0.5:40)];
y1=0.6*sqrt(x2)+0.8*sqrt(-x2+40);
y2=0.6*sqrt(x2)-0.8*sqrt(-x2+40);
y3=-y2;
y4=-y1;
equation='$$5\it{y}\rm{^2-6|}\it{x}\rm{|}\it{y}\rm{+5}\it{x}\rm{^2-128=0}$$';

c=figure;
plot(x,y1,x,y2,'Color','#A2142F','LineWidth',2); hold on;
plot(x,y3,x,y4,'Color','#4DDBDF','LineWidth',2,'LineStyle','--');
xlabel('\it{x}','FontName','Times New Roman','FontSize',15);
ylabel('\it{y}','FontName','Times New Roman','FontSize',15);
c.InnerPosition=[400 100 400 400];
c.Resize="off";
xlim([-8,8]); ylim([-8,8]);
xticks(-6:2:6); yticks(-6:2:6);
c.CurrentAxes.XAxisLocation='origin';
c.CurrentAxes.YAxisLocation='origin';
c.CurrentAxes.InnerPosition=[0,0,1,1];
c.CurrentAxes.Box='off';
c.CurrentAxes.FontName='Times New Roman';
text(0,3,equation,'HorizontalAlignment','center','Interpreter','latex','FontSize',15);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值