尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

球面上的测地线

球面上的测地线 球面上的测地线本文节选自geomstats官方教程https://geomstats.github.io/notebooks/04_practical_methods__from_vector_spaces_to_manifolds.html。球面最容易理解的流形就是二维球面毕竟我们每天都要打交道的地球就是个二维球面下面调用geomstats自带的数据绘制地球上的若干城市代码如下importgeomstats.backendasgs gs.random.seed(2020)importgeomstats.datasets.utilsasdata_utils data,namesdata_utils.load_cities()importmatplotlib.pyplotasplt plt.rcParams[font.sans-serif]Times New Romanaxplt.subplot(projection3d)importgeomstats.visualizationasvis vis.plot(data[15:20],axax,spaceS2,labelnames[15:20],s80,alpha0.5)ax.set_title(Cities on the earth.)plt.show()球面上的向量众所周知向量可以理解为从一个点出发指向另一个点的箭头。ags.array([0,1])bgs.array([1,2])vb-a axplt.subplot()ax.scatter(a,b,labelPoints)ax.arrow(gs.to_numpy(a[0]),gs.to_numpy(a[1]),dxgs.to_numpy(v[0]),dygs.to_numpy(v[1]),width0.008,length_includes_headTrue,colorblack)ax.legend()plt.show()geomstats提供了一种更加便捷的箭头绘制函数可以在三维流形上绘制从某点出发的向量parisdata[19]vectorgs.array([1,0,0.8])axplt.subplot(projection3d)axvis.plot(paris,axax,spaceS2,s200,alpha0.8,labelParis)arrowvis.Arrow3D(paris,vectorvector)arrow.draw(ax,colorblack)ax.legend()plt.show()测地线当球面上向量与其起始点处的球面相切的时候那么对于这一点附近的人来说这个向量几乎就在球面内部。比如从巴黎出发画一个地球的切向量那么对于巴黎的人来说这只是一个平平无奇的路标而已。但是如果他行动力超强沿着这个路标走那问题就大了他会直接走出地球。而现实中他必须紧贴着地球前进而他的轨迹则是一条测地线如下图所示。绘图代码如下fromgeomstats.geometry.hypersphereimportHypersphere sphereHypersphere(dim2)parisdata[19]vectorgs.array([1,0,0.8])tvsphere.to_tangent(vector,base_pointparis)# 切线resultsphere.metric.exp(tv,base_pointparis)geodesicsphere.metric.geodesic(initial_pointparis,initial_tangent_vectv)tracegeodesic(gs.linspace(0.0,1.0,30))axplt.subplot(projection3d)axvis.plot(paris,axax,spaceS2,s100,alpha0.8,labelParis)axvis.plot(result,axax,spaceS2,s100,alpha0.8,labelEnd point)axvis.plot(trace,axax,spaceS2,colorblack,labelGeodesic)arrowvis.Arrow3D(paris,vectortv)arrow.draw(ax,colorblack)ax.legend()plt.show()【Hypersphere】是超球面类维度为2时就是三维空间中的二维球面。上述代码中调用了很多Hypersphere中的方法。【metric.exp】为黎曼几何中的指数映射其功能是将切空间平坦的局部近似中的向量映射回流形弯曲的全局空间上的点。【metric.geodesic】则是根据起始点和切向量生成一条测地线函数这个函数可以将实数映射为测地线上的点。
返回列表