24小时热门版块排行榜    

查看: 2195  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

tcclab

银虫 (正式写手)

[交流] 已知三点坐标求夹角 已有2人参与

最近需要处理大量数据,需要对化学键键角批量输出。
我已经把原子坐标以xyz的形式给出。
现在搞不定如何把夹角以degree(度数)的方式给求出来。
哪位知道怎么弄?
本人很菜,别笑话。
#It is 4 Bond Angles
for XYZ in `ls *.xyz`
do
#read in the atom Nr.
AN1=`echo $[$1+2]`
AN2=`echo $[$2+2]`
AN3=`echo $[$3+2]`
echo $AN1 $AN2 $AN3
#The first atom
A11=`awk "NR==$AN1" $XYZ |awk '{print $1}'`
A1x=`awk "NR==$AN1" $XYZ |awk '{print $2}'`
A1y=`awk "NR==$AN1" $XYZ |awk '{print $3}'`
A1z=`awk "NR==$AN1" $XYZ |awk '{print $4}'`
#The second atom
A21=`awk "NR==$AN2" $XYZ |awk '{print $1}'`
A2x=`awk "NR==$AN2" $XYZ |awk '{print $2}'`
A2y=`awk "NR==$AN2" $XYZ |awk '{print $3}'`
A2z=`awk "NR==$AN2" $XYZ |awk '{print $4}'`
#
A31=`awk "NR==$AN3" $XYZ |awk '{print $1}'`
A3x=`awk "NR==$AN3" $XYZ |awk '{print $2}'`
A3y=`awk "NR==$AN3" $XYZ |awk '{print $3}'`
A3z=`awk "NR==$AN3" $XYZ |awk '{print $4}'`
#
echo -e "$A11\t$A1x\t$A1y\t$A1z\t"
echo -e "$A21\t$A2x\t$A2y\t$A2z\t"
echo -e "$A31\t$A3x\t$A3y\t$A3z\t"
#
TT=`echo -e "$A11\t$A1x\t$A1y\t$A1z\t$A21\t$A2x\t$A2y\t$A2z\t$A31\t$A3x\t$A3y\t$A3z\t" `
echo $TT
#
A1A2=`echo $TT | awk '{print $6-$2,$7-$3,$8-$4}' `
echo A1A2 $A1A2
A1A2X=`echo $TT | awk '{print $6-$2}' `
A1A2Y=`echo $TT | awk '{print $7-$3}' `
A1A2Z=`echo $TT | awk '{print $8-$4}' `
A2A3=`echo $TT | awk '{print $10-$6,$11-$7,$12-$8}' `
echo A2A3 $A2A3
A2A3X=`echo $TT | awk '{print $10-$6}' `
A2A3Y=`echo $TT | awk '{print $11-$7}' `
A2A3Z=`echo $TT | awk '{print $12-$8}' `
A1A2A2A3=`echo $A1A2  $A2A3 `
echo A1A2A2A3 $A1A2A2A3
#乘积A1A2*A2A3=(x2-x1)*(x3-x2)+(y2-y1)*(y3-y2)+(z2-z1)*(z3-z2)
TA1A2A2A3=`echo $A1A2A2A3 | awk '{print $1*$4+$2*$5+$3*$6}'`
echo TA1A2A2A3 $TA1A2A2A3
#
A1A2A1A2=`echo $A1A2 | awk '{print $1^2+$2^2+$3^2}'`
A2A3A2A3=`echo $A2A3 | awk '{print $1^2+$2^2+$3^2}'`
echo A1A2A1A2 $A1A2A1A2
echo A2A3A2A3 $A2A3A2A3
#|P1P2|=根号[(x2-x1)2+(y2-y1)2+(z2-z1)2] |P2P3|=根号[(x3-x2)2+(y3-y2)2+(z3-z2)2]
#var absA1A2A2A3=A1A2*A2A3
absA1A2=`echo $A1A2A1A2 | awk '{print sqrt($1)}'`
echo absA1A2 $absA1A2
absA2A3=`echo $A2A3A2A3 | awk '{print sqrt($1)}'`
echo absA2A3 $absA2A3
#
#cos(A1A2,A2A3)=A1A2*A2A3/(|A1A2|*|A2A3|)
A1A2A3=`echo $TA1A2A2A3 $absA1A2 $absA2A3 `
echo A1A2A3 $A1A2A3
# 前面检查,读入和输出,应该是正确的,但下面这部分搞不定了
cosA1A2A3=`echo $A1A2A3 | awk '{print $1/($2*$3)}'`
#弧度=角度乘以π后再除以180 角度=弧度除以π再乘以180
#pi=3.1415926535898
cosA1A2A3=`echo $cosA1A2A3 | awk '{print cos($1)}'`
Angle=`echo $acosA1A2A3 | awk '{print $1*180/3.1415926535898}' `
echo $A1A2 $A1A2XX $A1A2YY $A1A2ZZ $A1A2A1A2 $cosA1A2A3
echo $cosA1A2A3
echo $Angle
done

xyz 文件如下:
36

  Fe  4.84655858507584      0.56633277215833      0.34035878855785
  Al  4.79235130609276      2.90413572930704      0.18293815072370
  H   4.28535603237677      3.97006317825069      1.30657195333100
  O   1.96706095735722      1.03530980080275      0.77397530855226
  O   4.93691132336707     -2.35361098202682      0.67632768640727
  O   6.77764534437593      1.25909183704602      2.45505687074638
  O   5.76193037993391      0.63511115108140     -2.45907090865639
  N   2.60533354124266      4.09822722851467     -1.75829932419780
....
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

btx97

金虫 (小有名气)

★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
jjdg: 金币+1, 春节快乐 2014-01-31 00:24:59
先距离再余弦公式
话说用shell, awk做计算能给力吗?
3楼2014-01-30 03:48:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

jerkwin

专家顾问 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
果然很菜啊
直接上awk就是了, 别bash, awk混用
2楼2014-01-29 23:34:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tcclab

银虫 (正式写手)

引用回帖:
2楼: Originally posted by jerkwin at 2014-01-29 23:34:33
果然很菜啊
直接上awk就是了, 别bash, awk混用

能给个指导?
4楼2014-01-30 17:08:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tcclab

银虫 (正式写手)


jjdg: 金币+1, 春节快乐 2014-01-31 00:24:47
引用回帖:
3楼: Originally posted by btx97 at 2014-01-30 03:48:48
先距离再余弦公式
话说用shell, awk做计算能给力吗?

仅仅用来处理文本
5楼2014-01-30 17:09:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 341求调剂(一志愿湖南大学070300) +5 番茄头--- 2026-03-22 6/300 2026-03-23 23:45 by Txy@872106
[考研] 材料/农业专业,07/08开头均可,过线就行 +3 呵唔哦豁 2026-03-23 4/200 2026-03-23 22:30 by 汪!?!
[考研] 269求调剂 +4 我想读研11 2026-03-23 4/200 2026-03-23 21:25 by pswait
[考研] 一志愿陕师大生物学071000,298分,求调剂 +3 SYA! 2026-03-23 3/150 2026-03-23 19:09 by macy2011
[考研] 336化工调剂 +4 王大坦1 2026-03-23 5/250 2026-03-23 18:32 by allen-yin
[考研] 一志愿东华大学化学070300,求调剂 +7 2117205181 2026-03-21 8/400 2026-03-22 22:55 by chixmc
[考研] 一志愿西安交通大学材料工程专业 282分求调剂 +11 枫桥ZL 2026-03-18 13/650 2026-03-22 20:26 by edmund7
[考研] 311求调剂 +6 冬十三 2026-03-18 6/300 2026-03-22 20:18 by edmund7
[考研] 一志愿华中农业071010,总分320求调剂 +5 困困困困坤坤 2026-03-20 6/300 2026-03-22 17:41 by hxsm
[考研] 寻找调剂 +4 倔强芒? 2026-03-21 4/200 2026-03-22 16:14 by 木托莫露露
[考研] 303求调剂 +5 安忆灵 2026-03-22 6/300 2026-03-22 12:46 by 素颜倾城1988
[考研] 286求调剂 +10 Faune 2026-03-21 10/500 2026-03-21 23:34 by 314126402
[考研] 一志愿深大,0703化学,总分302,求调剂 +4 七月-七七 2026-03-21 4/200 2026-03-21 18:20 by 学员8dgXkO
[考研] 336求调剂 +5 rmc8866 2026-03-21 5/250 2026-03-21 17:24 by 学员8dgXkO
[考研] 一志愿重庆大学085700资源与环境总分308求调剂 +7 墨墨漠 2026-03-20 7/350 2026-03-21 16:36 by barlinike
[考研] 332求调剂 +3 凤凰院丁真 2026-03-20 3/150 2026-03-21 10:27 by luoyongfeng
[考研] 083200学硕321分一志愿暨南大学求调剂 +3 innocenceF 2026-03-17 3/150 2026-03-21 02:35 by JourneyLucky
[考研] 一志愿华中科技大学,080502,354分求调剂 +5 守候夕阳CF 2026-03-18 5/250 2026-03-21 01:06 by JourneyLucky
[考研] 294求调剂材料与化工专硕 +15 陌の森林 2026-03-18 15/750 2026-03-20 23:28 by JourneyLucky
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
信息提示
请填处理意见