24小时热门版块排行榜    

查看: 736  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 283求调剂 +8 小楼。 2026-03-12 11/550 2026-03-16 09:46 by 无际的草原
[考研] 304求调剂 +4 素年祭语 2026-03-15 4/200 2026-03-16 09:42 by 闲人终南山
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +4 Liwangman 2026-03-15 4/200 2026-03-16 08:01 by wang_dand
[考研] 梁成伟老师课题组欢迎你的加入 +6 一鸭鸭哟 2026-03-14 7/350 2026-03-15 22:12 by Winj1e
[考研] 中科院材料273求调剂 +3 yzydy 2026-03-15 3/150 2026-03-15 21:15 by ms629
[考研] 311求调剂 +3 26研0 2026-03-15 3/150 2026-03-15 09:12 by JourneyLucky
[考研] 中科大材料与化工319求调剂 +3 孟鑫材料 2026-03-14 3/150 2026-03-14 20:10 by ms629
[考研] 297一志愿上交085600求调剂 +5 指尖八千里 2026-03-14 5/250 2026-03-14 17:26 by a不易
[考研] 一志愿哈工大材料324分求调剂 +5 闫旭东 2026-03-14 5/250 2026-03-14 14:53 by 木瓜膏
[考研] 211本,11408一志愿中科院277分,曾在中科院自动化所实习 +3 Losir 2026-03-12 3/150 2026-03-14 12:11 by 热情沙漠
[考研] 0856材料与化工309分求调剂 +6 ZyZy…… 2026-03-10 6/300 2026-03-14 00:38 by JourneyLucky
[考研] 336求调剂 +6 Iuruoh 2026-03-11 6/300 2026-03-13 22:06 by JourneyLucky
[考研] 求材料调剂 +5 隔壁陈先生 2026-03-12 5/250 2026-03-13 22:03 by 星空星月
[考研] 281求调剂 +9 Koxui 2026-03-12 11/550 2026-03-13 20:50 by Koxui
[考研] 0856化学工程280分求调剂 +4 shenzxsn 2026-03-11 4/200 2026-03-13 11:55 by ymwdoctor
[考研] 277求调剂 +4 anchor17 2026-03-12 4/200 2026-03-13 11:15 by 白夜悠长
[考研] 268求调剂 +4 好运连绵不绝 2026-03-12 4/200 2026-03-13 10:45 by hyswxzs
[考研] 341求调剂 +4 捣蛋猪猪 2026-03-11 4/200 2026-03-12 14:47 by ruiyingmiao
[考研] 420求调剂 +4 莫向外求11 2026-03-10 6/300 2026-03-12 14:41 by ruiyingmiao
[考研] 085600 材料与化工 295 求调剂 +10 dream…… 2026-03-10 12/600 2026-03-12 13:46 by dream……
信息提示
请填处理意见