24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 740  |  回复: 4

astringent

铜虫 (著名写手)

[交流] 【求助】为什么两种写法得到的值不一样? 已有3人参与

有两个点A(x1,y1,z1),B(x2,y2,z2),现在以由点A和B确定的直线为基准轴,我想求的是当以物体由点C(x3,y3,z3)运动到点 D(x4,y4,z4)时,沿AB基准轴方向的位移以及沿垂直于AB基准轴方向的位移。我用两种方法写了程序,一种是用数组,另一种是直接写,可是在试算的时候,两种方法得到的结果有很大差别,请问问什么会有差别呢?哪一种是正确的?
program test
implicit none
real :: x1=1.0,y1=1.0,z1=2.0
real :: x2=1.0,y2=1.0,z2=3.0
real :: x3=1.0,y3=2.0,z3=3.0
real :: x4=2.0,y4=1.0,z4=5.0
real dx1,dx2,dy1,dy2,dz1,dz2
real :: px1,px2,py1,py2,pz1,pz2
real r1,r2,r3,r
real theta,pp

dx1=x2-x1
dy1=y2-y1
dz1=z2-z1
dx2=x4-x3
dy2=y4-y3
dz2=z4-z3
r1=dx1**2+dy1**2+dz1**2
r2=dx2**2+dy2**2+dz2**2
r3=dx1*dx2+dy1*dy2+dz1*dz2
r=r3/(sqrt(r1)*sqrt(r2))

theta=acos(r)
  px1=dx2*cos(theta)
  py1=dy2*cos(theta)
  pz1=dz2*cos(theta)
   px2=dx2*sin(theta)
  py2=dy2*sin(theta)
  pz2=dz2*sin(theta)
write (*,"(f7.5)" dx1
write(*,*) 'dy1',dy1
write(*,*) 'dz1',dz1
write (*,*) 'dx2',dx2
write(*,*) 'dy2',dy2
write(*,*) 'dz2',dz2
write (*,"(f7.5)" px1
write(*,"(f7.5)" py1
write(*,"(f7.5)" pz1
write (*,*) 'px2',px2
write(*,*) 'py2',py2
write(*,*) 'pz2',pz2
end
!采用数组
program test
implicit none
real :: a(3)=(/1.0,1.0,2.0/) !A点坐标
real :: b(3)=(/1.0,1.0,3.0/) !B点坐标
real :: c(3)=(/1.0,2.0,3.0/) !C点坐标
real :: d(3)=(/2.0,1.0,5.0/) !D点坐标
real :: ab(3) !矢量AB
real :: cd(3) 矢量CD
real :: p1(3),p2(3) !投影

ab=b-a
cd=d-c
p1=dot_product(ab,cd)/sqrt(dot_product(ab,ab))
p2=cd-p1
write (*,*) 'ab',ab
write (*,*) 'cd',cd
write(*,*) 'p1',p1
write (*,*) 'p2',p2

end
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by astringent at 2011-01-23 20:18:21:
有两个点A(x1,y1,z1),B(x2,y2,z2),现在以由点A和B确定的直线为基准轴,我想求的是当以物体由点C(x3,y3,z3)运动到点 D(x4,y4,z4)时,沿AB基准轴方向的位移以及沿垂直于AB基准轴方向的位移。我用两种方法写 ...

你得弄清楚 dot_product 是干啥的,它的结果是啥,呵呵……
CODE:
print *, dot_product(ab,cd)
print *, dot_product(ab,ab)
print *, dot_product(cd,cd)
print *, dot_product(ab,cd)/(sqrt(dot_product(ab,ab))*sqrt(dot_product(cd,cd)))

你的第二个程序,与第一个程序相比,只做了一半的工作还不到,呵呵……
2楼2011-01-23 22:14:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)

引用回帖:
Originally posted by snoopyzhao at 2011-01-23 22:14:25:


你得弄清楚 dot_product 是干啥的,它的结果是啥,呵呵……

[code]
print *, dot_product(ab,cd)
print *, dot_product(ab,ab)
print *, dot_product(cd,cd)
print *, dot_product(ab,cd)/(sqrt(dot_p ...

我的两个程序都错了,我改了一下用数组的写法,这个程序应该是正确的吧??
program test
implicit none
real :: a(3)=(/1.0,1.0,2.0/) !A点坐标
real :: b(3)=(/1.0,1.0,3.0/) !B点坐标
real :: c(3)=(/1.0,2.0,3.0/) !C点坐标
real :: d(3)=(/2.0,1.0,5.0/) !D点坐标
real :: ab(3) !矢量AB
real :: cd(3) 矢量CD
real :: p1(3),p2(3) !投影

ab=b-a
cd=d-c
p1=dot_product(ab,cd)*ab/dot_product(ab,ab)
p2=cd-p1
write (*,*) 'ab',ab
write (*,*) 'cd',cd
write(*,*) 'p1',p1
write (*,*) 'p2',p2
end
3楼2011-01-23 22:33:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3): 谢谢参与应助! 2011-02-20 15:57:54
你没有明白我的意思,dot_product 出来的是一个标量,不再是一个向量,那么你的 p1 就不是一个数组了啊……

如果我的直觉没有错的话(当然,我对你的问题不了解),你的第一个程序应该是正确的……
4楼2011-01-24 11:44:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangbiniocas

金虫 (小有名气)

引用回帖:
Originally posted by astringent at 2011-01-23 22:33:57:

我的两个程序都错了,我改了一下用数组的写法,这个程序应该是正确的吧??
program test
implicit none
real :: a(3)=(/1.0,1.0,2.0/) !A点坐标
real :: b(3)=(/1.0,1.0,3.0/) !B点坐标
real :: c(3)=( ...

我也这么觉得
坚持
5楼2011-02-01 08:53:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 astringent 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料调剂 +14 壹贰贰亿 2026-04-04 14/700 2026-04-05 23:31 by 来看流星雨10
[考研] 302分 085601求调剂推荐 +11 zyx上岸! 2026-04-05 11/550 2026-04-05 22:13 by dongzh2009
[考研] 材料工程302分求调剂 +9 zyx上岸! 2026-04-04 9/450 2026-04-05 22:08 by 醉翁wl
[考研] 262求调剂 +7 天下第一文 2026-04-04 8/400 2026-04-05 21:31 by 激流勇渡
[考研] 348求调剂 +3 车厘子zzz 2026-04-05 3/150 2026-04-05 20:30 by 啵啵啵0119
[有机交流] 甲醇/二氯 1:15过柱子 5+3 a哎y呦w喂 2026-03-31 3/150 2026-04-05 10:42 by 88817753
[考研] 353求调剂 +10 MayUxw1 2026-04-03 10/500 2026-04-05 09:23 by 无际的草原
[考研] 278求调剂 +3 依旧! 2026-04-02 4/200 2026-04-04 20:27 by 蓝云思雨
[考研] 331求调剂 +3 niby 2026-04-02 3/150 2026-04-04 19:56 by 蓝云思雨
[考研] 334求调剂 +8 曾仰之 2026-04-03 8/400 2026-04-04 11:16 by w_xuqing
[考研] 一志愿华中农业071010,总分320求调剂 +7 困困困困坤坤 2026-04-02 7/350 2026-04-03 17:26 by Yuena_Wang
[考研] 初试成绩337找调剂 +3 ??? ?. ? 2026-04-03 3/150 2026-04-03 11:43 by 土木硕士招生
[考研] 325分化学调剂 +5 15771691647 2026-04-02 5/250 2026-04-03 09:58 by ChemPharm
[考研] 专硕 351 086100 也是考的材科基 本科也是材料 +8 202451007219 2026-04-02 8/400 2026-04-03 09:50 by 蓝云思雨
[考研] 08开头看过来!!! +4 wwwwffffff 2026-03-31 6/300 2026-04-02 11:42 by 均值回归
[考研] 0710生物学求调剂 +9 manman511 2026-04-01 9/450 2026-04-02 10:00 by zxl830724
[考研] 085602化学工程268分蹲调剂 +8 月照花林。 2026-04-01 8/400 2026-04-01 22:08 by 无际的草原
[考研] 286求调剂 +5 Sa67890. 2026-04-01 7/350 2026-04-01 19:50 by 6781022
[考研] 0710生物学求调剂! +6 叙述文 2026-03-31 6/300 2026-04-01 09:39 by JourneyLucky
[考研] 313求调剂 +6 卖个关子吧 2026-03-31 6/300 2026-03-31 10:58 by Jaylen.
信息提示
请填处理意见