【问题标题】:Summation issues with function input to do summation operations函数输入的求和问题以进行求和运算
【发布时间】:2016-09-14 21:03:42
【问题描述】:

我有一个我写的程序,试图测试我是否可以定义一个用户输入的函数,然后让 Fortran 对其进行求和。这就是我所做的。

program test

real :: a,b,n,k,sum

integer, intent(out) :: func
print *, 'what are the values of a b n k?'
read *, a,b,n,k
print *, 'what is the function?'
read *, func
sum = 0

DO I= 1, 6
    x = ((A)+I * ((b-a)/(n)))
        sum = sum + func
END DO


print *, sum 

end program test

编译器这样回答:

sh-4.3$ gfortran -std=f95 *.f95 -o main                                                                                                                                               
Newfile.f95:5:28:                                                                                                                                                                     

 integer, intent(out) :: func                                                                                                                                                         
                            1                                                                                                                                                         
Error: Symbol at (1) is not a DUMMY variable 

有什么想法吗?

【问题讨论】:

  • 让我直截了当地说:您希望用户输入任意函数,例如:f(x) = 1/x,然后使用该函数计算任何值?祝你好运。您必须将其作为字符串读入,然后分析字符串以组合适当的计算。这是一项艰巨的任务。
  • 我想用用户输入的那个函数来整合它,使用上下限和一定数量的划分都使用梯形规则(lower = a,upper = b,divisons = n)

标签: function compiler-errors sum fortran do-loops


【解决方案1】:
   integer, intent(out) :: func

可用于声明过程参数,但您将其放入主程序中。

intent(out) 在那里毫无意义。

另一个问题是不清楚程序中的函数应该是什么。

【讨论】:

  • 我该如何解决这个问题,以便我可以完成 f(x)= x**2+1 然后用它来完成 f(((A)+I * ((b-a)/( n)))? 我的最终目标是编写一个可以使用梯形规则完成积分的程序,这只是我将用来实现该目标的一部分
  • 问一个问题太多了。在这个阶段,答案是你必须学习更多的 Fortran 基础知识。首先,您应该使用固定功能,而不是向用户询问。
  • @p.patel 这个网站上有类似程序的例子,比如stackoverflow.com/questions/19716536/…,你可以看看它们并尝试理解它们。不要只是盲目地复制一些东西。
猜你喜欢
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多