作者ilovenets (wait for a new day)
看板Fortran
标题[问题] 精度问题(疑似)
时间Thu Dec 29 21:40:10 2011
小弟开始在做以线性分析逼近非线性(真实)分析结果的练习
(就是有点像有限元素法,切越细越精准
我是将力分段给予,让每次的变形越小越准)
可是我跑出来的结果,与我按计算机有点小误差
最夸张的是当我切超过10010次後(也就是code里的n大於10010)
结果比切10010次的误差值还大......
请精通matlab的同学帮我跑同样的计算式子就没有此问题
连一开始分段次数少的结果都与我按计算机无误
不知道是不是我没有设定精度的问题呢?
以下是我的code:
do j=1,10
!decide how many times to loading
read(5,*) n
pi=acos(-1.)
!the angle between BA and AC line
b= pi/2
!the length of BC line
c=4*(2**(1/2.))
do i=1,n
!the angle between BC and AC line
ai=(pi-b)/2
!strength on BC line
F= (5000./n)*sin(pi-(2*ai))/sin(ai)
!variation of BC line
s= F/12000
!total length after loading
c=c+s
!final angle between BA and AC line after loading
b=acos((32-c*c)/32)
end do
!chang b's variation from rad to degree
q=(b*180/pi)-90
!Error value
z=(14.25-q)/14.25*100
write (7,*) n,q,c,z
end do
还请知道的大大帮忙解惑一下 感谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.125.133
1F:推 target8917:你可以更换精确度以後测试看看 我觉得蛮有可能的 12/29 21:53
2F:→ ilovenets:囧 真的是耶 我想说小数点後面应该没差的说>< 12/30 01:23
3F:推 target8917:浮点数运算次数多的时候特别要注意精确度问题 12/30 01:33
4F:推 target8917:应该说......你的N大於10010时,浮点数的无效位可能出Y 12/30 01:37
5F:→ target8917:现了 所以会越算越不准 12/30 01:38
6F:→ ilovenets:可是我n=5的值就开始有问题了 所以我才会怀疑是否精度 12/30 08:38
7F:→ ilovenets:精度造成的误差 12/30 08:38
8F:推 YCTzeng:很有可能是精确度问题。 12/30 14:02