FORTRAN求均布荷载Q和跨中集中力Fp作用下跨多为L的简支梁,最大弯矩和最大挠度?情帮忙看一下我错在哪了

问题描述:

FORTRAN求均布荷载Q和跨中集中力Fp作用下跨多为L的简支梁,最大弯矩和最大挠度?情帮忙看一下我错在哪了
INTEGER Q,L,F,EI,M,W
READ *,Q,F,L,EI
FUNCTION M1(Q,L)
M1=(1/8)*Q*L**2
END
FUNCTION W1(Q,L,EI)
W1=(5*Q*L**4)/(384*EI)
END
FUNCTION M2(Q,L)
M2=(1/4)*F*L
END
FUNCTION W2(Q,L,EI)
W2=(F8L**3)/(48*EI)
END
M=M1+M2
W=W1+W2
PRINT *,"最大弯矩值M=",M
PRINT *,"最大挠度值W=",W
PAUSE
END

这问题错大了,由此基本可以认为你没有系统学习过 Fortran 的任何语法.
建议你买一本教材先看看.
随便选几个错误:
第一:Function 不能写在主程序内部,程序单元必须独立.
也就是:
主程序
结束主程序
函数 1
结束函数1
函数2
结束函数2
这样的结构.不能把函数写在其他函数的 “肚子” 里.
第二:M1,W1,M2,W2 这 4 个函数.函数倒是给出了各自的虚参.但是调用时,没有给出任何对应的实参.
你确定你的程序需要使用 function 老师上课水的要命,还要求用子程序计算,你可不可以教教我怎么修改?我不是学力学的,专业上的东西,我帮不了你。我只能给你从格式和结构上帮助你:以下的代码,我不能保证算出来的是正确的。因为你的代码问题太多,很多运算方法,我不确定。比如你的代码里有 W2=(F8L**3)/(48*EI)我根本不知道 F8L 是什么东西。Q 在这个函数里没有出现过,却在虚参表里?以下代码,需要你根据自己的算法进行校对。Program MainImplicit None !// 这个十分关键,每个程序单元都要加Real Q,L,F,EI,M,WReal M1 , W1 , M2 , W2 !// 所有变量都要定义Read( * , * ) Q,F,L,EIM=M1(Q,L)+M2(Q,L)!// 调用函数,必须给出参数W=W1(Q,L,EI)+W2(Q,L,EI) !// 调用函数,必须给出参数PRINT *,"最大弯矩值M=",MPRINT *,"最大挠度值W=",WEnd Program MainReal Function M1(Q,L)Implicit None !// 这个十分关键,每个程序单元都要加Real Q , L !// 所有变量都要定义M1=(1./8.)*Q*L**2!//// 八分之一要写成 1.0/8.0 或者 1./8.,如果写成 1/8,表示是整数,整数的 1/8 = 0!!!!End Function M1Real Function W1(Q,L,EI)Implicit None !// 这个十分关键,每个程序单元都要加Real Q , L , EI !// 所有变量都要定义W1=(5.*Q*L**4)/(384.*EI)End Function W1Real Function M2(Q,L)Implicit None !// 这个十分关键,每个程序单元都要加Real Q , L !// 所有变量都要定义M2=(1./4.)*Q*L!// 四分之一也是End Function M2Real Function W2(Q,L,EI)Implicit None !// 这个十分关键,每个程序单元都要加Real Q , L , EI !// 所有变量都要定义W2=(Q*8*L**3)/(48*EI)End Function W2