提问人:Adrish Chatterjee 提问时间:11/5/2023 最后编辑:Adrish Chatterjee 更新时间:11/5/2023 访问量:44
我为梯形方法编写了一个程序,但存在分割错误
I wrote a program for the trapizoidal method and there is a segmentation error
问:
错误是:- 程序接收信号 SIGSEGV:分段故障 - 无效的内存引用。 该程序用于梯形积分方法,其代码是 法典:-
program tapizoidal
implicit none
real,dimension(:) ,allocatable :: M,O
integer::n,i,da
real::a,b,h,x,f,j,I1,c
!the value of a,b is 1,2
print*,'input the value of a,b'
read*,a,b
print*,'input the value of n'
read*,n
!to define the number of arrays M,O
da=n+1
h=(b-a)/n
M(1)=a
!the x values are
allocate(M(da))
do i=2,da,1
M(i)=M(1)+(i-1)*h
end do
!the value of the functions are
allocate(O(da))
do i=1,da,1
x=M(i)
O(i)=f(x)
end do
J=SUM(o)
!composite term in trapizoidal rule
c=J-o(1)-o(da)
!the value of integration
I1=(h/2)*(O(1)+O(da)+2*c)
print*,'the value of integration is'
!the truncation error is
print*,I1
print*,'the truncation error',(ABS((I1)-4.75)/4.75)*100,"%"
end program
real function f(x)
implicit none
real::x
f=(x**3)+1
end function
有人可以告诉我我的代码有什么问题吗? 我制作了一个动态数组并尝试通过 allocate 函数分配其值,但编译器显示分段错误。
答: 暂无答案
评论
M(1)=a
-fcheck=all
gfortran -g -fbacktrace -Wall -fcheck=all
ifort -g -traceback -warn -check