24小时热门版块排行榜    

查看: 963  |  回复: 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的回帖

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的回帖
查看全部 5 个回答

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的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 国自然评审意见 +3 wangmingqi 2026-08-28 3/150 2026-08-28 17:43 by James-1988
[基金申请] 有没有仍没收到信息的 +3 德尚中行 2026-08-27 3/150 2026-08-28 15:24 by rongshuxia
[基金申请] 基金不中,共勉 +11 eulota 2026-08-26 11/550 2026-08-28 14:22 by 火星超人xi
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +4 gdd2018 2026-08-28 9/450 2026-08-28 14:22 by jklily
[基金申请] 国自然面上复盘~欢迎讨论 (金币+5) +12 晴天加油 2026-08-26 13/650 2026-08-28 11:32 by skyjudy
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[基金申请] 申请删除本帖 +6 lyz123lyz 2026-08-27 7/350 2026-08-27 17:31 by 宁静致远sy
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 为什么国自然不能直接公布 +4 bjdxyxy 2026-08-26 4/200 2026-08-26 13:12 by qingmu1201
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
信息提示
请填处理意见