全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
939 6
2022-10-20
悬赏 20 个论坛币 已解决
请问各位,已知二维平面上三个点的坐标,如下,我用了2种方法计算出三角形周长,
问题1:为什么两方法算出来不一样,perimeter函数是怎么算的?
问题2:如何用R快速实现三角形周长的计算?


prob11 <- -180
prob12 <- -20
prob21 <- -140
prob22 <- 55
prob31 <- 10
prob32 <- 0
#method1
dist12 <- sqrt((prob22-prob12)^2+(prob21-prob11)^2)
dist13 <- sqrt((prob32-prob12)^2+(prob31-prob11)^2)
dist23 <- sqrt((prob22-prob32)^2+(prob21-prob31)^2)
(dist123 <- dist12+dist13+dist23) #435.8152
#method2
library(geosphere)
xy <- rbind(c(prob11,prob12), c(prob21,prob22), c(prob31, prob32))
perimeter(xy)  #40005149

最佳答案

llb_321 查看完整内容

矩阵的生成按你给的顺序则如下,结果是一个3X2矩阵,一样的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-10-20 11:40:18
矩阵的生成按你给的顺序则如下,结果是一个3X2矩阵,一样的。

复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-10-20 14:51:30
第一种方法:计算的是直角坐标平面上的三角形周长,两点间距离是在坐标系上的距离。
第二种方法:用的是球面三角学的包,虽然你所给出的参数与上面一样,但在perimeter()函数中,是作为经纬度参与计算的,默认的a和f参数是地球的,而结果是地球表面上的三角周长,单位是米。

至于有没有更简单的计算周长的方法,第一种不是最简单最直接的吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-10-20 21:19:01
llb_321 发表于 2022-10-20 14:51
第一种方法:计算的是直角坐标平面上的三角形周长,两点间距离是在坐标系上的距离。
第二种方法:用的是球 ...
谢谢回复!第二种方法明白,我的主要问题是第一种方法R有函数实现吗?(除了自己把那几行放到自编函数里)是不是有能提升一点速度的算法?在多次运算中还是有用的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-10-21 10:07:02
mengqinqing 发表于 2022-10-20 21:19
谢谢回复!第二种方法明白,我的主要问题是第一种方法R有函数实现吗?(除了自己把那几行放到自编函数里) ...
其实不用自编函数,试试下面的代码
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-10-24 11:59:40
llb_321 发表于 2022-10-21 10:07
其实不用自编函数,试试下面的代码
谢谢回复!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群