西安交大并行计算作业
- 格式:doc
- 大小:302.66 KB
- 文档页数:19
并行计算与程序设计作业
班级:姓名:学号:
1.1至1.3节作业
1.调试课件中的所有程序,并完成作业,同时在程序结果中需要输出个人
信息;
代码:
Program main
write(*,*)'班级:', '
write(*,*)'姓名:',' '
print *,'学号:',''
end
2.编写一个数值求解方程的程序,方程为4.1x3 −5.3x=11.8,求解区间
为(1,5),误差小于1e-6。
代码:
a=1
b=5
if(f(a)*f(b).LT.0) then
write(*,*)'inter:(',a,',',b,')'
Loop1: do while((abs(f(a)-f(b)).gt.10e-6).and.
$ (abs(a-b).gt.10e-6))
c=(a+b)/2
if(f(a)*f(c).le.0)then
b=c
else
a=c
end if
end do Loop1
write(*,*)'x=',c
else
write(*,*)'Please input real interval'
end if
end
real function f(x)
f=4.1*x**3-5.3*x-11.8
end
结果:
1.4节作业
1.采样简单离散求和法求下面积分值:
∫
x2
sin(x)+1
xx 1
代码:
read(*,*) a,b,n
h=(b-a)/(2.0*n)
s=0.0
x=a+h
f2=0.0
f4=0.0
loop1: do i=1,n-1 x=x+h
f2=f2+f(x)
x=x+h
f4=f4+f(x)
end do loop1
s=h/3.0*(f(a)+f(b)+4.0*f4+2.0*f2)
write(*,150) s
100 format(1x,'a=',f8.2,2x,'b=',f8.2,
$ 2x,'n=',i4)
150 format(1x,'s=',f16.7)
end
real function f(x)
f=x**2/(sin(x)+1)
end
d oubl
e precision i,ai,y
double precision sum=0
i=1
do 10 while(1/i.gt.1e-5)
sum=1/i+sum
i=i+1
10 continue
write(*,*) 'sum=',sum
end
结果:
1.6节作业
1.调试课本中的所有程序;
(结果略)
2.用双精度型数据计算:
∑1
x=
1
1+
1
2+
1
3+⋯+
1
x
x
x=1
直到1
x
≤10−5
代码:
double precision sum=0
i=1
do 10 while(1/i.gt.1e-5)
sum=1/i+sum
i=i+1
10 continue
write(*,*) 'sum=',sum
end
结果:
3.已知三角形三个顶点的坐标分别为A(1.5,2.5),B(-2.5,1), C(1,-1),采
用复型数据类型求三角形的面积和重心。
代码:
complex a,b,c,center,area,perimeter
a=(1.5,2.5)
b=(-2.5,1)
c=(1,-1)
center=(a+b+c)/3
perimeter=(a+b+c)/2
area=sqrt(perimeter*(perimeter-a)*(perimeter-b)*
$(perimeter-c))
write(*,10)"center=",center
write(*,10)"area=",area
10 format(1x,a,f6.3,f6.3)
End
结果:
4.尝试编写课件例子中对应的破译程序。有兴趣可以尝试修改原编码
程序中后移位数(当前为5)变化的情况,比如移动位数为当前位置序号。
代码:
program main
character*80 line1,line2
character l1
read(*,*)line1
n=len(line1)
do 10 i=1,n
l1=line1(i:i)
if((lge(l1,'A').and.lle(l1,'Z')).or.
$ (lge(l1,'a').and.lle(l1,'z'))) then
m=ichar(l1)+i
if((m.ge.ichar('a').and.m.le.ichar('z')).or.