アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のようなプログラム(速度ベレル法による時間発展)を書いたのですが,エラーがでてしまいます.
どこが悪いのかを教えていただけたらと思います.

PROGRAM verlet

implicit none
integer::i,n,p
real(8)::dt,k,m,ratio,ti
real(8),allocatable::x(:),v(:),f(:)
allocate(x(0:n))
allocate(v(0:n))
allocate(f(0:n))
dt=0.01d0
n=1000
k=1.0d0
m=1.0d0
ratio=k/m
p=4
ti=0.0d0
x(0)=0.0d0
v(0)=1.0d0
f(0)=-k*(x(0))**(p-1)
do i=0,45
x(i+1)=x(i)+dt*v(i)+f(i)/(2.0d0*m)*dt**2.0d0
f(i+1)=-k*(x(i+1))**(p-1)
v(i+1)=v(i)+dt*(f(i)+f(i+1))/(2.0d0*m)
end do
do i=0,n
ti=i*dt
write(6,*) ti,x(i),v(i)
end do

deallocate(x)
deallocate(v)
deallocate(f)

END PROGRAM verlet

A 回答 (1件)

> エラーがでてしまいます.



具体的にどんなエラーなのですか?

> allocate(x(0:n))
のあとで
> n=1000
とするのは変では無いですか?
    • good
    • 0
この回答へのお礼

二重解放のエラーのようです.

あ,たしかに.おかしい!

直したら動きました!!

本当に助かりました!!これで進めることができます!!

お礼日時:2014/06/07 14:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!