永发信息网

谁可以帮忙用fortran语言编写一个程序?是求n元一次方程组的解!或者是求100!的精确解!谢谢

答案:1  悬赏:20  手机版
解决时间 2021-07-25 15:14
  • 提问者网友:趣果有间
  • 2021-07-24 22:49
谁可以帮忙用fortran语言编写一个程序?是求n元一次方程组的解!或者是求100!的精确解!谢谢
最佳答案
  • 五星知识达人网友:千杯敬自由
  • 2021-07-24 23:27

求n元一次方程组的解现在已经有很好用的链接库可以用了,很多fortran编译器厂商现在都提供了IMSL(数学与统计链接库),IMSL是一套在数值方法上经常用到的商业链接库,visual fortran 专业版的编译器就内置IMSL。下面是一个求解三元一次方程组的例子(n元也一样)


program linear
use imsl
implicit none


real::a(3,3)=(/1,3,2,&
1,2,1,&
2,1,3/)
real::b(3,1)=(/4,6,6/)
real::x(3,1)


call lin_so_gen(a,b,x)!用于求解a*x=b这样一个三元一次方程组
write(*,'(3f5.2)')x


end program linear


运行程序前确认你的编译器上已经装了IMSL(有的编译器有内置的)


要想自己编程来求,最简单的可以用高斯消去法,还有很多求解这类问题的方法,可以参见“数值计算原理”这类书籍,自己编出来的可能没有用IMSL里面的数值计算过程函数的执行效率高,练习一下对熟悉一门计算机语言还是很有提高的。



对于你的第二个问题可以用一个递归程序做,也可以用循环做


下面是一个用递归来演示任意整数阶乘的程序


PROGRAM SHOW


IMPLICIT NONE


INTEGER::N,M


INTEGER,EXTERNAL::FACTORIAL



PRINT *,'输入要计算的阶乘的阶数'


READ(*,*)N


M=FACTORIAL(N)


PRINT * ,N,'!=',M



END



!FACTORIAL函数用于计算N!


RECURSIVE INTEGER FUNCTION FACTORIAL(N) RESULT(B)
IMPLICIT NONE


!INTEGER,SAVE::MUL=0
INTEGER::N
!INTEGER::I,J


IF(N<0)THEN
B=-1
RETURN
ELSE IF(N==0)THEN
B=1
RETURN
END IF
B=N*INITIALIZE(N-1)
!RETURN



END FUNCTION INITIALIZE

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯