影响PET数据误差的分析研究外文翻译资料

 2022-11-13 16:24:50

英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料


  1. :Minuit安装。

2.1 Minuit发布

Minuit被广泛修订于1989年,但其使用基本上与1970年以前使用的旧版本一致。还没有使用过1989年或者以后的版本的旧用户熟悉者,为了适应少量的更改,并发现新特性和使用旧特性的更简便的方法,必须阅读此说明手册,列如自由字段的输入。

2.2 Minuit版本

这个项目是完全的标准便携式Fortran77,它除了定义为一部分Fortran77标准和一个逻辑函数INTRAC之外不需要外部子程序,不同电脑版本之间唯一的不同,是INTRAC是浮点精度(参见以下标题)。与以前的版本一样,Minuit不适用内存管理。这使得它易于安装并且独立于其他程序,但是缺点是在编译时内存占用和最大问题大小(参数数量)都是固定的。解决这个问题的就方案包括提供“长”和“短”的版本,但这些对于熟悉的用户来说,显得有些笨拙且无论如何都不够,因此它已经被抛弃并被单一的“标准”版本所取代。

Minuit目前的标准版本可以处理最多100个参数的函数,其中可以一次改变不超过50个参数,因为使用的参数声明的Fortran源,redinensioning更大(或更小)版本非常简单(尽管它有助于有源代码管理器或传播的好编辑修改后的参数声明通过所有的子程序,当然,这意味着重新编译)。“标准 ”的定义可能会随着经验发生变化(版本89.05中是35个变量参数而不是50个),不同的安装可能希望根据自己的应用程字对其进行不同的定义。在任何情况下,编译时使用的维度在执行时打印在程字标题中,程序自然会受到保护,阻止用户试图定义太多参数。如果用户发现可用的版本太小(或太大),则必须设法说服计算机管理器更改安装默认值或提供额外的特殊版本,否则必须获得源代码并重新编译自己的版本。

2.3 对其他包的干扰

新的Minuit被设计成尽可能少地干扰同时加载的其他程序包。因此它使用内存管理器或其他外部子(程序逻辑功能INTRAC除外),所有自己的子程序名称从字母开始MN(Minuit,用户编写的例程除外),所有常见的块的名字从字符MN7开始,用户应该不需要使用任何Minuit常见的街区。

此外,在相同的执行模块中,可以最小化多个不同的函数,前提是这些函数具有不同的名称,并且在下一次执行模块之前完全完成一个最小化和错误分析。

2.4浮点精度

对于大多数应用程序,建议使用64位浮点精度,或者最接近的浮点精度,或者任何特定的机器。这意味着标准的Minuit安装在Vax.IBM和Unix工作站通常将双精度的版本,在疾病预防控制中心和克雷将单摘要离子参数用户的FCN当然必须对应类型的声明编译成Minuit版本使用。当然,对于用户在fortrancallable模式下直接调用的任何Minui例程的所有浮点参数也是如此。此外,Minuit在执行时检测它编译时的精度,并期望FCN内的计算将得到大致相同的精度。(这种精度称为EPSMAC,并在Minuit开始执行时打印在其生成的标头中。)如果用户使用双精度版本欺骗Minuit,但是使用单精度进行内部FCN或FUTIL计算,Minuit会将输入的噪声解释为显著的,通常要么无法找到最小值,要么为参数提供错误的值。因此,建议在使用双精度的 (REAL*8)Minuit时,通过包含FCN中话当的隐式声明和FCN调用的所有用户子例程,确保FCN和FUTIL(如果使用)中的计算以及FCN和FUTIL调用的所有子例程都是RE AL *8。如果由于某种原因计算不能达到Minuit所期望的精度,用户必须用SET EPS命令将这种情况通知Minuit。

虽然,一般推荐64位精度,但是新的Minuit非常小心地使用所有可执行精度,在许多情 况下,32位就足够了。因此,现在可以设想在某些情况下(例如在微型计算机上,或者在内存严重受限的情况下或者在64-bi算法非常慢的情况下)使用精度为32位或36位的Minuit.如果精度降低,用户可能会发现某些对第一和第二差异(HESee,MINOs,MNContour)敏感的特性不能正常工作,在这种情况下,计算必须以更高的精度执行。

  1. :如何使用Minuit

3.1 FCN函数

用户必须始终提供一个Fortran子程序来计算最小化或分析函数值。

调用 FCN (NPAR,GRAD,FVAL,XVAL,IFLAG,FUTIL)

输入参数

NPAR 当前可变参数的数目。

XVAL 参数(常量和变量)向量

IFLAG 表示要计算什么(参见下面的示例)。

FUTIL 实用例程名称(如果需要,它必须对外声明并由用户提供)

输出参数

FVAL 计算函数值

GRAD (可选)一阶导数向量

注意,当Minuit通过HBOOK或PAW等中间包使用时,那么FCN可以由这个包提供。

FCN例程的例子

SUBROUTINE FCN(NPAR,GRAD,FVAL,XVAL,IFLAG,FUTIL)

IMPLICIT DOUBLE PRECISION (A-H,O-Z) ! for 32-bit machines

DIMENSION GRAD(*),XVAL(*)

EXTERNAL FUTIL ! (if needed and supplied by user)

C-

IF (IFLAG .EQ. 1) THEN

C read input data,

C calculate any necessary constants, etc.

ENDIF

IF (IFLAG .EQ. 2) THEN

C calculate GRAD, the first derivatives of FVAL

C (this is optional)

ENDIF

C Always calculate the value of the function, FVAL,

C which is usually a chisquare or log likelihood.

C Optionally, calculation of FVAL may involve

FTHEO = FUTIL(....)

C It is responsability of user to pass

C any parameter values needed by FUTIL,

C either through arguments, or in a COMMON block

IF (IFLAG .EQ. 3) THEN

C will come here only after the fit is finished.

C Perform any final calculations, output fitted data, etc.

ENDIF

RETURN

END

子程序的名称可以自由选择(在文档中,我们给它一个通用名FCN,并且必须在调用Minuit(在数据驱动模式下)或调用的用户程序中对外声明)

Minuit子例程(在fortrancallable模式下)。XVAL参数的含义当然是由用户定义的,用户使用这些参数的值来计算自己的函数值,起始值必须由用户指定(要么从文件中提供参数定义,要么在数据驱动模式下在终端输入参数定义; 或者在fortrancallable模式下调用子例程MNPARM, 然后由Minuit在搜索最小值或执行用户请求的任何分析时确定后面的值。FUTIL表示一个函数或子例程的名称,该函数或子例程可以由用户定义和提供,并从FCN调用。如果用户不使用FUIL特性,最后这个参数可能被指定为零,但是如果使用,FUTL的名称必须声明为外部,并且必须在加载时提供该名称的子程序。

通过给它们起不同的名字可以在一个作业中分析几个不同的FCN。然而在开始下一个分析之前,必须完成一个分析。为了避免两种不同FCN分析之间的干扰,用户每次研究新的FCN时,都应该调用Minit(数据驱动模式)

3.2 Minuit在数据驱动模式下运行

Minuit可以以两种不同的模式运行: 数据驱动模式是指用户使用数据驱动Minuit,这些数据可以从终端交互输入,也可以从数据文件批量输入,Fortran调用模式意味着Minuit直接从Fortran子例程调用驱动,不需要数据。在某种程度上,这两种模式也可能是混合的。本节描述第一种模式,对于交互式和批处理运行都是有效的。交互式和批处理之间的区别将在下面的单独小节中进行描术。

在数据驱动模式下,用户除了提供了程序FCN外,还必须提供一个主程序; 该主程序包括以下语句(大写的语句是必需的,小写的语句是可选的):

主程序在效据驱动模式下使用Minuit的例子

EXTERNAL FCN

external futil

call mintio(ird,iwr,isav)

CALL MINUIT(FCN,futil)

The name of FCN may be chosen freely, an

FCN的名称可以自由选择,并作为第一个参数传递给Minuit, FUTL是一个函数或子例程的通用名,用户可以选择从FCN调用该函数或子例程,如果他确实调用这样的例程,他必须在外部声明它,并将其名称与Minui通信。如果没有使用FUTIL,那么第二个参数可能被设置为零,并且不需要声明为EXTERNAL: 如果FUTL被声明为EXTERNAL那么它必须在加载过程中提供。

声明MINTIO (IREAD, IWRITE,ISAVE)

执行: MINTIO的目的是与IO单元Minuit通信

输入参数

IREAD Fortran用于读取单元号(默认为5)

IWRITE Fortran用于写入的单元号(默认为6)

Isave Fortran存储单元号(默认7)

如果默认值是可接受的, 那么就没有必要调用MINTIO。用户有责任为适当的操作正确地打开I/O单元

注意

在数据驱动模式下,这就是调用MINUIT。不能调用MNINIT因为Minuit负责所有的初始化。若要更改单位号码:请按MINTIO再按 MINUIT.

以便该控件在调用MINUIT后返回给用户程序。应返回相关应答数据块中的最后一条命令。如果最后一个命令是EXIT或STOP.那么Minuit执行Fortran停止。如果最后一个命令是END. Minuit将从当前的输入单元读取一个新的数据块。

3.2.1分钟数据驱动Minuit

在数据驱动模式下,Minuit以交互方式或批处理方式读取用户提供的以下数据:

-标题(50个字符或以下的字符串),用户可以自由选择以帮助识别工作.

-参数定义:对于每个参数,给出条记录:

(1)参数号。这是数组XVAL中的索引,通过该索引,用户函数FCN将访问参数的值。

2)参数名。10个字符组成的字符串,f帮助用户读取Minuit输出。

3)参数的超始值。

(4)初始步长,或该参数中预期的不确定性,如果它是一个可变参数。否则,如果该值是常量,则为空或为零。

参数值不能改变的下限(极限)。

参数值不能变化的土限(极限)

通常情况下,用户不应该指定参数的限制,这两个参数都应该留空。

如果指定了一个限制,则必须同时指定两个限制。极限的性质在这篇文章的其他地方有解释。

参数定义的格式可以是固定字段(宽度为10列的字段中的每个项,也可以是自由字段格式。在自由字段格式中,项目由空格或逗号分隔,参数名必须在单引号之间给出。如果程序在一行中找到两个单引号,它将采用自由常段格式。参数名将被空白填充或截断为10个字符长。

- 空白记录: 指示参数定义的结束

如果用户FCN从与Minuit数据相同的输入流中读取输入数据(默认流是单元5)。那么FCN数据应该出现

-

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[18274],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。