数学是一门美丽的学科,是美丽的,也充满悲剧的!
本文要点:
1.直角坐标系与极坐标方程
2.科学运算基本三大库Matplotlib,Numpy,Pandas
3.一个浪漫又悲情的爱情故事——笛卡尔心形线
4.执子之魂,与子共生——玫瑰线
5.给我一个支点——阿基米德螺线
1.直角坐标与极坐标方程
比较直角坐标系方程y=x,它表示平面上的一条线,而极坐标方程ρ=θ表示螺线。用极坐标系描述的曲线方程称作极坐标方程,通常用来表示ρ为自变量θ的函数(ρ,θ)=0。
两坐标系之间的转换
极坐标系中的两个坐标r和θ可以由下面的公式转换为直角坐标系下的坐标值。
x = rcos(θ),
y = rsin(θ),
由上述二公式,可得到从直角坐标系中x和y两坐标如何计算出极坐标下的坐标:
总结如下:
2.科学运算三大基本库
基本知识点参考我的GitHub
补充一点:PYTHON使用MATPLOTLIB绘图时出现的中文乱码问题,设置代码如下
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
3.一个浪漫又悲情的爱情故事——笛卡尔心形线
【转载】
1650年,斯德哥尔摩的街头,52岁的笛卡尔邂逅了18岁的瑞典公主克里斯汀。
那时,落魄、一文不名的笛卡尔过着乞讨的生活,全部的财产只有身上穿的破破烂烂的衣服和随身所带的几本数学书籍。生性清高的笛卡尔从来不开口请求路人施舍,他只是默默地低头在纸上写写画画,潜心于他的数学世界。
一个宁静的午后,笛卡尔照例坐在街头,沐浴在阳光中研究数学问题。他如此沉溺于数学世界,身边过往的人群,喧闹的车马队伍。都无法对他造成干扰。
突然,有人来到他旁边,拍了拍他的肩膀,“你在干什么呢?”扭过头,笛卡尔看到一张年轻秀丽的睑庞,一双清澈的眼睛如湛蓝的湖水,楚楚动人,长长的睫毛一眨一眨的,期待着他的回应。她就是瑞典的小公主,国王最宠爱的女儿克里斯汀。
她蹲下身,拿过笛卡尔的数学书和草稿纸,和他交谈起来。言谈中,他发现,这个小女孩思维敏捷,对数学有着浓厚的兴趣。
和女孩道别后,笛卡尔渐渐忘却了这件事,依旧每天坐在街头写写画画。
几天后,他意外地接到通知,国王聘请他做小公主的数学老师。满心疑惑的笛卡尔跟随前来通知的侍卫一起来到皇宫,在会客厅等候的时候,他听到了从远处传来的银铃般的笑声。转过身,他看到了前儿天在街头偶遇的女孩子。慌忙中,他赶紧低头行礼。
从此,他当上了公主的数学老师。
公主的数学在笛卡尔的悉心指导下突飞猛进,他们之间也开始变得亲密起来。笛卡尔向她介绍了他研究的新领域——直角坐标系。通过它,代数与几何可以结合起来,也就是日后笛卡尔创立的解析几何学的雏形。
在笛卡尔的带领下,克里斯汀走进了奇妙的坐标世界,她对曲线着了迷。每天的形影不离也使他们彼此产生了爱慕之心。
在瑞典这个浪漫的国度里,一段纯粹、美好的爱情悄然萌发。
然而,没过多久,他们的恋情传到了国王的耳朵里。国王大怒,下令马上将笛卡尔处死。在克里斯汀的苦苦哀求下,国王将他放逐回国,公主被软禁在宫中。
当时,欧洲大陆正在流行黑死病。身体孱弱的笛卡尔回到法国后不久,便染上重病。在生命进入倒计时的那段日子,他日夜思念的还是街头偶遇的那张温暖的笑脸。他每天坚持给她写信,盼望着她的回音。然而,这些信都被国王拦截下来,公主一直没有收到他的任何消息。
在笛卡尔给克里斯汀寄出第十三封信后,他永远地离开了这个世界。此时,被软禁在宫中的小公主依然徘徊在皇宫的走廊里,思念着远方的情人。
这最后一封信上没有写一句话,只有一个方程:r=a(1-sinθ)。
国王看不懂,以为这个方程里隐藏着两个人不可告人的秘密,便把全城的数学家召集到皇宫,但是没有人能解开这个函数式。他不忍看着心爱的女儿每天闷闷不乐,便把这封信给了她。
拿到信的克里斯汀欣喜若狂,她立即明白了恋人的意图,找来纸和笔,着手把方程图形画了出来,一颗心形图案出现在眼前,克里斯汀不禁流下感动的泪水,这条曲线就是著名的“心形线”。
国王去世后,克里斯汀继承王位,登基后,她便立刻派人去法国寻找心上人的下落,收到的却是笛卡尔去世的消息,留下了一个永远的遗憾……
这封享誉世界的另类情书,至今,还保存在欧洲笛卡尔的纪念馆里。
————————————————
4.三大曲线图像展示
极坐标方程:
心形线:r=a(1-cosθ) (a>0)
玫瑰线:r=asin(3θ) (a>0)
阿基米德螺线:r=aθ(a>0,θ>=0)
成品展示
源代码:
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def draw():
plt.title("数学其实很美")
pi = np.pi
a = 1
# 生成0到2pi的数据集
datas = np.linspace(0, 2 * pi, 100)
# 绘制极坐标r = a(1-cosθ)(a>0)的心形图
x = a * (1 - np.cos(datas)) * (np.cos(datas))
y = a * (1 - np.cos(datas)) * (np.sin(datas))
plt.plot(x, y, label='心形线', color='red', linewidth='1.0')
# 绘制极坐标r = a(1-cosθ)(a>0)的心形图
x1 = a * (np.sin(3 * datas)) * (np.cos(datas))
y1 = a * (np.sin(3 * datas)) * (np.sin(datas))
plt.plot(x1, y1, label='玫瑰线', color='blue', linewidth='2.0', linestyle="--")
# 绘制极坐标r = a(1-cosθ)(a>0)的阿基米德螺线图
x2 = a * datas * (np.cos(datas))
y2 = a * datas * (np.sin(datas))
plt.plot(x2, y2, label='阿基米德螺线', color='black', linewidth='1.0', linestyle="-.")
# # 使用plt.xlim设置x坐标轴范围:
# plt.ylim((-10, 10))
# # 使用plt.ylim设置x坐标轴范围:
# plt.ylim((-10, 10))
# 定义x轴名称
plt.xlabel('x轴')
# 定义y轴名称
plt.ylabel('y轴')
new_ticks = np.arange(-5, 10, 1)
# 使用plt.xticks设置x轴刻度:范围是(-2,2);个数是8.
plt.xticks(new_ticks)
"""
plt.gca获取当前坐标轴信息. 使用.spines设置边框;使用.set_color设置边框颜色
"""
# 坐标轴中移
ax = plt.gca()
# 隐藏上边和右边
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 移动另外两个轴
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
plt.legend()
plt.savefig("math.png")
plt.show()
if __name__ == '__main__':
draw()