fortran90程序设计。
麒麟火小组]
作业:一.求一元方程的根。
1.采用语句函数或函数子程序定义一元方程;
2.程序采用以下多种方法求方程的根;
牛顿迭代法,二分法,迭代法。
程序利用控制变量(如nmethod)来选择计算方法。
program frist一个可以选择子程序的主程序。
integer xuhao
print*,"请选择方法:1:二分法。2:迭代法。3:牛顿迭代法。"
read*,xuhao
if(xuhao==1)then将3种方法放在不同的子程序中,并用选择结构进行选择。
call bisection()
endifif(xuhao==2)then
call diedai()
endifif(xuhao==3)then
call niudun()
endifend
subroutine bisection二分法的子程序。
real x1,x2,x
real bisect,func1对要调用的子程序作说明。
doprint*,"输入x1,x2的值:"
read*,x1,x2
if(func1(x1)*func1(x2)<0.0)exit
print*,"不正确的输入!"
enddox=bisect(x1,x2)
print 10,'x=',x
10format(a,f15.7)
endreal function bisect(x1,x2二分法结构的函数子程序。
real x1,x2,x,f1,f2,fx
x=(x1+x2)/2.0
fx=func1(x)
do while(abs(fx)>1e-6)
f1=func1(x1)
if(f1*fx<0)then
x2=xelse
x1=xendif
x=(x1+x2)/2.0
fx=func1(x)
enddobisect=x
endreal function func1(x二分法的一元方程子程序。
real x
func1=x**3-2*x**2+7*x+4
endsubroutine diedai迭代法的子程序。
real x
integer m
print*,'请输入x0和最高循环次数的值:'
read*,x,m
call iteration(x,m)
endsubroutine iteration(x,m迭代法结构的函数子程序。
implicit none
real x,x1
real func2
integer i,m
i=1x1=func2(x)
do while(abs(x-x1)> print 10,i,x1 x=x1i=i+1 x1=func2(x) enddoif(i<=m)then print 20,'x=',x1 elseprint 30,'经过',m,'次迭代后仍未收敛' endif10 format('i='i4,6x,'x='f15.7) 20 format(a,f15.7) 30 format(a,i4,a) endreal function func2(x迭代法一元方程的子程序。 real x func2=(-x**3+2*x**2-4)/7 endsubroutine niudun牛顿迭代法的子程序。 real x integer m print*,'输入初值' read*,x call newton(x) endsubroutine newton(x牛顿迭代法结构的函数子程序 implicit none real x,x1 real func3,dfunc3 integer i,m i=1x1=x-func3(x)/dfunc3(x) do while (abs(x-x1)>1e-6) print 10,i,x1 x=x1i=i+1 x1=x-func3(x)/dfunc3(x) enddoprint 20,'x=',x1 10 format('i=',i4,6x,'x=',f15.7) 20 format(a,f15.7) endreal function func3(x牛顿迭代法一元方程的函数子程序。 real x func3=x**3-2*x**2+7*x+4 endreal function dfunc3(x牛顿迭代法一元方程的导数的子程序。 real x dfunc3=3*x**2-4*x+7 end二.求解线性方程组。 用高斯消去法解线性方程组。 ax=b的解,其中a为n*n系数矩阵,x为解向量,b为方程组右端n维列向量。要求程序能够求解任意多个未知数的方程组,并附算例。 program second !一个可以选择未知数数量的求线性方程的小程序。 real,allocatable::a(:,b(:)c(:) print*,'输入未知数个数n:' read*,n allocate(a(n,n为数组分配空间。 allocate(b(n)) allocate(c(n)) print*,'输出系数矩阵a:' call input(a,n引入输入子程序。 print*,'输入等值矩阵b:' read*,b print*,'联立方程组:' call output(a,b,n引入输出子程序。 call gauss_jordan(a,b,c,n) !引入乔丹法子程序。 print*,'求解:' do i=1,n print 10,i,c(i) end do 10 format('x',i1,'=f8.4) deallocate(a) !解除数组单元的分配。 deallocate(b) deallocate(c) endsubroutine input(a,n) !定义输入子程序。 real a(n,n) do i=1,n read*,(a(i,j),j=1,n) enddoend subroutine gauss_jordan(a,b,c,n) !定义乔丹法子程序。 dimension a(n,n),b(n),c(n) call up(a,b,n) !乔丹法中包含的两个子程序。 call low(a,b,n) forall(i=1:n) c(i)=b(i)/a(i,i) endforall endsubroutine output(a,b,n) !定义输出子程序。 real a(n,n),b(n) do i=1,n print 10,a(i,1),i do j=2,n if(a(i,j)>0)then print 20,a(i,j),j elseprint 30,abs(a(i,j)),j endifenddo print 40,b(i) enddo10 format(f5.2,'x',i1\) 20 format('+f5.2,'x',i1\) 课程设计。目录。一,任务书1 二,员工档案 工资和个人所得税6 三,求解方程11 1,求解一元方程的根11 1 1,二分法求解 1 2,弦截法求解 1 3,newton迭代法求解13 2,求方程的积分15 2 1,矩形法积分。2 2,梯形法积分。2 3,辛普生法积分。3,gauss jordan法求... 工程分析程序设计上机作业 六 上机目的 练习派生类型的定义 构造 初始化,成员的调用和操作,操作符的重载,指针。1 构造一个由年 月 日组成的派生类型,并编写程序,实现从键盘上输入年 月 日,由程序计算出是当年度的第几天。例如 输入 2011,4,8 输出 4月8日是2011年的第98天。注意 需考... 工程分析程序设计上机作业 七 上机目的 练习c语言的书写 循环和判断结构。1.编写程序实现摄氏度和华氏度的相互转换 include main float c,f printf 请输入摄氏度 scanf f c f c 9 5.0 32 printf 华氏度为 f f 2.打印出6行杨辉三角形如下图 ...Fortran95课程设计
fortran作业
西安交大Fortran上机作业