在呆板的数学公式中,也有浪漫的一瞬,最近在电影《少年班》中, 又看到了那个心形公式,想到了当年学习matlab画图的时候,就画了这个,于是乎又心血来潮,把他们又画了一遍。
关于心形曲线的由来,有一个浪漫的版本:
1650年,斯德哥尔摩的街头,52岁的笛卡尔邂逅了18岁的瑞典公主克里斯汀。
那时,落魄、一文不名的笛卡尔过着乞讨的生活,全部的财产只有身上穿的破破烂烂的衣服和随身所带的几本数学书籍。生性清高的笛卡尔从来不开口请求路人施舍,他只是默默地低头在纸上写写画画,潜心于他的数学世界。
一个宁静的午后,笛卡尔照例坐在街头,沐浴在阳光中研究数学问题。他如此沉溺于数学世界,身边过往的人群,喧闹的车马队伍。都无法对他造成干扰。
突然,有人来到他旁边,拍了拍他的肩膀,“你在干什么呢?”扭过头,笛卡尔看到一张年轻秀丽的睑庞,一双清澈的眼睛如湛蓝的湖水,楚楚动人,长长的睫毛一眨一眨的,期待着他的回应。她就是瑞典的小公主,国王最宠爱的女儿克里斯汀。
她蹲下身,拿过笛卡尔的数学书和草稿纸,和他交谈起来。言谈中,他发现,这个小女孩思维敏捷,对数学有着浓厚的兴趣。
和女孩道别后,笛卡尔渐渐忘却了这件事,依旧每天坐在街头写写画画。
几天后,他意外地接到通知,国王聘请他做小公主的数学老师。满心疑惑的笛卡尔跟随前来通知的侍卫一起来到皇宫,在会客厅等候的时候,他听到了从远处传来的银铃般的笑声。转过身,他看到了前儿天在街头偶遇的女孩子。慌忙中,他赶紧低头行礼。
从此,他当上了公主的数学老师。
公主的数学在笛卡尔的悉心指导下突飞猛进,他们之间也开始变得亲密起来。笛卡尔向她介绍了他研究的新领域——直角坐标系。通过它,代数与几何可以结合起来,也就是日后笛卡尔创立的解析几何学的雏形。
在笛卡尔的带领下,克里斯汀走进了奇妙的坐标世界,她对曲线着了迷。每天的形影不离也使他们彼此产生了爱慕之心。
在瑞典这个浪漫的国度里,一段纯粹、美好的爱情悄然萌发。
然而,没过多久,他们的恋情传到了国王的耳朵里。国王大怒,下令马上将笛卡尔处死。在克里斯汀的苦苦哀求下,国王将他放逐回国,公主被软禁在宫中。
当时,欧洲大陆正在流行黑死病。身体孱弱的笛卡尔回到法国后不久,便染上重病。在生命进入倒计时的那段日子,他日夜思念的还是街头偶遇的那张温暖的笑脸。他每天坚持给她写信,盼望着她的回音。然而,这些信都被国王拦截下来,公主一直没有收到他的任何消息。
在笛卡尔给克里斯汀寄出第十三封信后,他永远地离开了这个世界。此时,被软禁在宫中的小公主依然徘徊在皇宫的走廊里,思念着远方的情人。
这最后一封信上没有写一句话,只有一个方程:$r=a(1-cosθ)$
国王看不懂,以为这个方程里隐藏着两个人不可告人的秘密,便把全城的数学家召集到皇宫,但是没有人能解开这个函数式。他不忍看着心爱的女儿每天闷闷不 乐,便把这封信给了她。拿到信的克里斯汀欣喜若狂,她立即明白了恋人的意图,找来纸和笔,着手把方程图形画了出来,一颗心形图案出现在眼前,克里斯汀不禁 流下感动的泪水,这条曲线就是著名的“心形线”。
国王去世后,克里斯汀继承王位,登基后,她便立刻派人去法国寻找心上人的下落,收到的却是笛卡尔去世的消息,留下了一个永远的遗憾……
这封享誉世界的另类情书,至今,还保存在欧洲笛卡尔的纪念馆里。
二维心形公式
当然,这个故事后来被证实是虚构的,不过那个心形公式却流传了下来:
$$r=a(1−cosθ)$$
这个公式是用极坐标表示的,用matlab将它画出来的代码为:
theta = 0:0.01:2*pi;
rho = 1-cos(theta);
figure
polar(theta,rho,'--r')
最后得到
经过数学变换,我们可以得到这个公式的其他形式:
- 参数方程形式:$$x(t)=a(1-cos(t))cos(t)$$$$y(t)=asint(t)(1-cos(t))$$
- 直角坐标形式:$$(ax+x2+y2)2=a2(x2+y2)$$
不过,这个方程还不是最像桃心的,还有很多更像桃心的方程,比如:
$$(x2+y2-1)3=x2y^3$$
还有参数方程:
$$x(t)=tsin(\pi\frac{sin(t)}{t})$$
$$y(t)=-|t|cos(\pi\frac{sin(t)}{t})$$
在matlab里将他画出,代码为:
t = linspace(-pi,pi, 350);
X = t .* sin( pi * sin(t)./t);
Y = -abs(t) .* cos( pi * sin(t)./t);
plot(X,Y);
fill(X, Y, 'r');
set(gcf, 'Position', get(0,'Screensize'));
title('Zhaojun's Blog', 'FontSize', 28);
效果为:
我还发现对于画函数图像,geogebra和wolframalpha非常方便,只要输入公式,立马就能得到图像。
三维心形公式
在三维空间里,心形公式为:
$$(x2+\frac{9y2}{4}+z2-1)3-x2z3-\frac{9y2z3}{80}=0$$
在mathmatica里,我们可以将它画出来:
ContourPlot3D[(x^2 + 9/4 y^2 + z^2 - 1)^3 - x^2 z^3 - 9/80 y^2 z^3 ==
0, {x, -1.3, 1.3}, {y, -1.3, 1.3}, {z, -1.3, 1.3}, PlotPoints -> 15,
Axes -> True, ContourStyle -> {RGBColor[1, 0.4, 0.7]}]
在matlab里当然也可以:
clc,clear
[x,y,z]=meshgrid(linspace(-3,3,120));
val=(x.^2+(9*y.^2)./4+z.^2-1).^3-((9*y.^2).*(z.^3))./80-(x.^2).*(z.^3);
isosurface(x,y,z,val,0);
axis equal;view(-10,24);colormap([1 0.2 0.2])
有没有很漂亮啊?
参考文献:
Mathematical equations of love
heart curve
笛卡尔、公主与心形曲线
网友评论