fortran95作业答案Word格式文档下载.docx
- 文档编号:8244295
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:20
- 大小:278.48KB
fortran95作业答案Word格式文档下载.docx
《fortran95作业答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《fortran95作业答案Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
输入x1,x2的值:
read*,x1,x2
if(func1(x1)*func1(x2)<
0.0)exit
不正确的输入!
enddo
x=bisect(x1,x2)
print10,'
x='
x
10format(a,f15.7)
realfunctionbisect(x1,x2)!
二分法结构的函数子程序
realx1,x2,x,f1,f2,fx
x=(x1+x2)/2.0
fx=func1(x)
dowhile(abs(fx)>
1e-6)
f1=func1(x1)
if(f1*fx<
0)then
x2=x
else
x1=x
bisect=x
realfunctionfunc1(x)!
二分法的一元方程子程序
realx
func1=x**3-2*x**2+7*x+4
subroutinediedai()!
迭代法的子程序
integerm
print*,'
请输入x0和最高循环次数的值:
'
read*,x,m
calliteration(x,m)
subroutineiteration(x,m)!
迭代法结构的函数子程序
implicitnone
realx,x1
realfunc2
integeri,m
i=1
x1=func2(x)
dowhile(abs(x-x1)>
1e-6.and.i<
=m)
print10,i,x1
x=x1
i=i+1
if(i<
=m)then
print20,'
x1
print30,'
经过'
m,'
次迭代后仍未收敛'
10format('
i='
i4,6x,'
f15.7)
20format(a,f15.7)
30format(a,i4,a)
realfunctionfunc2(x)!
迭代法一元方程的子程序
func2=(-x**3+2*x**2-4)/7
subroutineniudun()!
牛顿迭代法的子程序
输入初值'
read*,x
callnewton(x)
subroutinenewton(x)!
牛顿迭代法结构的函数子程序
realfunc3,dfunc3
x1=x-func3(x)/dfunc3(x)
dowhile(abs(x-x1)>
i4,6x,'
f15.7)
realfunctionfunc3(x)!
牛顿迭代法一元方程的函数子程序
func3=x**3-2*x**2+7*x+4
realfunctiondfunc3(x)!
牛顿迭代法一元方程的导数的子程序
dfunc3=3*x**2-4*x+7
二.求解线性方程组
用高斯消去法解线性方程组
Ax=B
的解,其中A为N*N系数矩阵,x为解向量,B为方程组右端n维列向量。
要求程序能够求解任意多个未知数的方程组,并附算例。
programsecond!
一个可以选择未知数数量的求线性方程的小程序
real,allocatable:
:
a(:
:
),b(:
),c(:
)
输入未知数个数n:
read*,n
allocate(a(n,n))!
为数组分配空间
allocate(b(n))
allocate(c(n))
输出系数矩阵a:
callinput(a,n)!
引入输入子程序
输入等值矩阵b:
read*,b
联立方程组:
calloutput(a,b,n)!
引入输出子程序
callgauss_jordan(a,b,c,n)!
引入乔丹法子程序
求解:
doi=1,n
print10,i,c(i)
enddo
x'
i1,'
='
f8.4)
deallocate(a)!
解除数组单元的分配
deallocate(b)
deallocate(c)
subroutineinput(a,n)!
定义输入子程序
reala(n,n)
read*,(a(i,j),j=1,n)
subroutinegauss_jordan(a,b,c,n)!
定义乔丹法子程序
dimensiona(n,n),b(n),c(n)
callup(a,b,n)!
乔丹法中包含的两个子程序
calllow(a,b,n)
forall(i=1:
n)
c(i)=b(i)/a(i,i)
endforall
subroutineoutput(a,b,n)!
定义输出子程序
reala(n,n),b(n)
print10,a(i,1),i
doj=2,n
if(a(i,j)>
print20,a(i,j),j
print30,abs(a(i,j)),j
print40,b(i)
10format(f5.2,'
i1\)
20format('
+'
f5.2,'
30format('
-'
40format('
subroutineup(a,b,n)
doi=1,n-1
doj=i+1,n
p=a(j,i)/a(i,i)
a(j,i:
n)=a(j,i:
n)-a(i,i:
n)*p
b(j)=b(j)-b(i)*p
subroutinelow(a,b,n)
doi=n,2,-1
doj=i-1,1,-1
a(j,1:
i)=a(j,1:
i)-a(i,1:
i)*p
三.编写班级成绩考评程序
1.采用数据文件输入某班级30名同学的学号及五门课程的成绩;
2.求出每名同学的总分、统计各门成绩的平均分;
3.统计各门课程中高于和低于平均分的人数;
4.按总分高低排序,利用文件输出名次、学号和分数;
5.分数查询输入某一学号,输出该生的名次、各门课程的成绩和总分。
parameter(n=30)
typestudent_score!
!
定义派生类型studentrecord
integernum
realchin,math,eng,phy,che,sum
integerrank
endtype
type(student_score)a(n)!
结构体数组a
open(1,file='
stu1.dat'
read(1,1)a(n)!
读入30个人的信息
1format(2x,i6,5(3x,f4.1))
close
(1)
open(2,file='
stu2.dat'
dataave1,ave2,ave3,ave4,ave5/5*0.0/
doj=1,0!
每名同学成绩的求和以及各门成绩的平均分
a(j)%sum=(a(j)%chin+a(j)%math+a(j)%eng+a(j)%phy+a(j)%che)
ave1=ave1+a(j)%chin/30.0
ave2=ave2+a(j)%math/30.0
ave3=ave3+a(j)%eng/30.0
ave4=ave4+a(j)%phy/30.0
ave5=ave5+a(j)%che/30.0
p=0;
q=0!
输出每门成绩的平均分
doi=1,n
if(a(i)%chin>
=ave1)then
p=p+1
else
q=q+1
endif
enddo
print*,'
高于语文平均分的人数:
p
低于语文平均分的人数:
q
p=0;
q=0
if(a(i)%math>
=ave2)then
高于数学平均分的人数:
低于数学平均分的人数:
if(a(i)%eng>
=ave3)then
高于英语平均分的人数:
低于英语平均分的人数:
if(a(i)%phy>
=ave4)then
高于物理平均分的人数:
低于物理平均分的人数:
if(a(i)%che>
=ave5)then
高于化学平均分的人数:
低于化学平均分的人数:
dok=1,n-1
dom=1,n-k
if(a(m)%sum>
a(m+1)%sum)then
t=a(m)%sum
a(m)%sum=a(m+1)%sum
a(m+1)%sum=t
a(m+1)%rank=0
a(m+1)%rank=a(m+1)%rank+1
学号总分名次'
print10,a(i)%num,a(i)%sum,a(i)%rank
10format(2x,i6,3x,f4.1,3x,i2)
enterastudent’snumber:
read*,s!
输出符合条件的人的信息
dok=1,n
if(s==a(k)%num)then
学号语文数学英语物理化学总分名次'
print100,a(k)
exit
if(k>
n)print*,'
cannotfindthestudent!
100format(2x,i6,6(3x,f4.1),3x,i2)
close
(2)
end
编译通过,但运行发生错误,可能是环境自身的错误吧。
四.求定积分
1.采用函数子程序定义f(X);
2.程序可选择以下多种方法定积分
矩形法、梯形法、辛普生法
3.对于不同的算法分别编写子程序,选择调用。
programforth!
一个可以选择的方法的主程序
integershuzhi
请选择您需要的方法:
矩形法,2:
梯形法,3:
辛普生法。
read*,shuzhi
if(shuzhi==1)then
calljuxing()
elseif(shuzhi==2)then
calltixing()
elseif(shuzhi==3)then
callxinpusheng()
subroutinejuxing()!
矩形法的子程序
reala,b,s
integern
realyrectangle
欢迎使用矩形法,请输入a,b和n的值'
read*,a,b,n
s=rectangle(a,b,n)!
调用矩形法求解的函数
print10,a,b,n
print20,s!
输出计算结果
a='
f5.2,3x,'
b='
n='
i4)
s'
f15.8)
realfunctionrectangle(a,b,n)!
矩形法求解函数
realx,a,b,h,s
integeri,n
realfunc1
x=a
h=(b-a)/n
s=0
s=s+func1(x)*h
x=x+h
rectangle=s
矩形法的积分函数
func1=1+exp(x)
subroutinetixing()!
梯形法的子程序。
realtrapezia!
感谢您使用梯形法,请输入a,b和n的值'
s=trapezia(a,b,n)!
调用梯形法求解的函数
10format('
20format('
realfunctiontrapezia(a,b,n)!
梯形法求解函数
s=s+2*func2(x+i*n)
trapezia=(s+func2(a)+func2(b))*h/2.0
梯形法积分函数
func2=1+exp(x)
subroutinexinpusheng()
realsinpson!
对要调用的函数子程序作说明
辛普生法很不错哦,请输入a,b和n的值'
s=sinpson(a,b,n)!
调用辛普生法求解的函数
realfunctionsinpson(a,b,n)!
辛普生法求解函数
reala,b,h,f2,f4,x
realfunc3
h=(b-a)/(2.0*n)
x=a+h
f2=0
f4=func3(x)
f2=f2+func3(x)
f4=f4+func3(x)
sinpson=(func3(a)+func3(b)+4.0*f4+2.0*f2)*h/3.0
辛普生法的积分函数
func3=1+exp(x)
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran95 作业 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)