你的主要问题是:
1. 累加和累乘,没用赋初值。累加应该赋值0,累乘应该赋值1
2. contains下面的子程序中使用主程序的变量,不要重新定义,否则会覆盖主程序中变量的作用。
3. 数组定义混乱。当前的Fortran,基本上很少用到 dimension。(除非同时定义多个大小相同的数组)
[Fortran] 纯文本查看 复制代码 Program lagrange
Implicit none
Integer , parameter :: S = 17
real :: tmp , t , x(S) , y(S)
integer :: i
write(*,*) "请输入气压值"
read(*,*) t
open(10,file='a.txt')
do i = 1 , size(x)
read(10,*) x(i),y(i)
write(*,*) x(i),y(i)
end do
close(10)
tmp=fun(t)
write(*,*) tmp
contains
function fun(t) result(tmp)
integer :: i , j
real :: tmp , t , l
tmp = 0.0
do i = 1 , size(x)
l = 1.0
do j = 1 , size(x)
if( i /= j ) then
l = l * (t-x(j))/(x(i)-x(j))
end if
end do
tmp= l * y(i) + tmp
end do
endfunction fun
end program lagrange |