第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將多個變量的外部函數(shù)作為Fortran中一個變量的函數(shù)進(jìn)行傳遞

將多個變量的外部函數(shù)作為Fortran中一個變量的函數(shù)進(jìn)行傳遞

互換的青春 2019-11-20 14:30:30
我正在嘗試使用例程QUADPACK來執(zhí)行數(shù)值積分。例程希望函數(shù)以形式傳遞REAL,EXTERNAL,所以我沒有使用指針或其他任何東西的自由。是否可以將函數(shù)別名f(x,a,b,...)為f(x)僅期望x 函數(shù)的例程的函數(shù)?就像什么人會在完成MATLAB用@(x)f(x,a,b,...)。
查看完整描述

2 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個贊

您不能直接使用Fortran中的函數(shù)來做類似的技巧。您也無法在Fortran中返回閉包。只是寫一個包裝。


function wrap_f(x) result(res)

  ...

  res = f(a,b,...)

end function

它可以是內(nèi)部函數(shù)或模塊函數(shù),并可以通過主機(jī)關(guān)聯(lián)獲取a和b,也可以使用包含a和的模塊b。


如果要將函數(shù)作為實(shí)際參數(shù)傳遞,則在Fortran 2003之前的版本中,它不能是內(nèi)部過程,而只能在Fortran 2008中。它只能在gfortran和ifort的最新版本中使用。為了更好的可移植性,請使用模塊。


查看完整回答
反對 回復(fù) 2019-11-20
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊

我可以為這個問題顯示一個很好的解決方案。我也是MATLAB的前用戶,切換到FORTRAN時會錯過函數(shù)句柄哈哈。我以這種方式解決了您的問題:


module


     private

     public    :: f , g


     real(kind=RP)   :: a0,b0,c0,...


     contains

         function f(x,a,b,c,d,...) 

               implicit none

               real(kind=RP)  :: x,a,b,c,d,...

               real(kind=RP)  :: f

!              Here you define your function

               f = ...


         end function f


         function g(x)

               implicit none

               real(kind=RP)  :: x , g


!              Here you call "f" function with the frozen variables *0

               g = f(x,a0,b0,c0,...)

         end function g


!        We said that parameters were private 

!     (to avoid to be modified from the outside, which can be dangerous, 

!     so we define functions to set their values


         subroutine setValues(a,b,c,...)

               implicit none

               real(kind=RP)   :: a,b,c,...


               a0 = a

               b0 = b

               c0 = c


          end subroutine setValues




end module 


查看完整回答
反對 回復(fù) 2019-11-20
  • 2 回答
  • 0 關(guān)注
  • 804 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號