program main
real,dimension(8)::z1,v1,q1,p1
real::t=10800,z2_jiashe,q_pj,f,h,g,z2_suan
real,dimension(7)::z2,v2,q2,p2
open(1,file='1.dat')
open(2,file='2.out')
read(1,*)q1,q2
z1(1)=38.0
p1(1)=174.0
do i=1,8
v1(i)=g(z1(i))
q_pj=(q1(i)+q2(i))/2
do j=1,10000
z2_jiashe=z1(i)+0.001*j
p2(i)=f(z2_jiashe)
v2(i)=q_pj*t-(p1(i)+p2(i))/2*t+v1(i)
z2_suan=h(v2(i))
if(abs(z2_jiashe-z2_suan)<1e-3)then
z2(i)=z2_jiashe
v2(i)=g(z2(i))
z1(i+1)=z2(i)
p1(i+1)=p2(i)
endif
enddo
enddo
write(2, '(f30.9)'),z2
end program main
function f(x) result(f_re)
real::x,f_re
f_re=32.93*x**2-2344*x+41710
end function f
function g(x) result(g_re)
real::x,g_re
g_re=1.911e-4*x**7.297
end function g
function h(x) result(h_re)
real::x,h_re
h_re=3.24*x**0.1369
end function h
83 Bytes, 下载次数: 3
输入文件
fcode 发表于 2014-4-7 08:16
1.请给出输入文件(或其内容)。1.dat
2.建议:写代码要搞好排版,缩进。
3.目测你的代码错误很多,不知道 ...
38.046001434
38.344001770
39.140003204
39.917003632
40.278003693
40.415004730
40.432003021
0.000000000
fcode 发表于 2014-4-7 10:45
你需要把 real,dimension(7)::z2,v2,q2,p2 也修改成 8 长度,否则 q2 会越界。
我不是很了解你的算法,也 ...
program main
real,dimension(12)::z1,v1,q1,p1
real::t=10800,z2_jiashe,q_pj,f,h,g,z2_suan
real,dimension(11)::z2,v2,q2,p2
open(1,file='1.dat')
open(2,file='2.out')
read(1,*)q1,q2
!READ*,Q1,Q2
z1(1)=38.0
p1(1)=173.9
do i=1,11
v1(i)=g(z1(i))
q_pj=(q1(i)+q2(i))/2
do j=-10000,10000
z2_jiashe=z1(i)+0.0001*j
p2(i)=f(z2_jiashe)
v2(i)=q_pj*t-(p1(i)+p2(i))/2*t+v1(i)
z2_suan=h(v2(i))
if(abs(z2_jiashe-z2_suan)<1e-4)then
z2(i)=z2_jiashe
v2(i)=g(z2(i))
p2(i)=f(z2(i))
z1(i+1)=z2(i)
p1(i+1)=p2(i)
endif
enddo
enddo
do i=1,11
write(2, '(3f20.9)'),z2(i),p2(i),v2(i)
enddo
end program main
function f(x) result(f_re)
real::x,f_re
f_re=32.93*x**2-2344*x+41710
end function f
function g(x) result(g_re)
real::x,g_re
g_re=1.911e-4*x**7.297
end function g
function h(x) result(h_re)
real::x,h_re
h_re=3.24*x**0.1369
end function h
123 Bytes, 下载次数: 1
输入文件
fcode 发表于 2014-4-7 21:26
下次请直接回复,如果修改原来的帖子,别人不容易发现
我建议你学习一下单步 Debug 跟踪各变量,这样你 ...
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |