英语原文共 16 页,剩余内容已隐藏,支付完成后下载完整资料
第一章:基本概念
1.1,MINUI的结构
Minuit包作用于一个多参数Fortran函数,我们给它取了一个通用名FCN,尽管实际名称可以由用户选择。此函数必须由用户定义并提供(或通过中间程序如HBOOK [ 2 )或PAW [ 3 ),以防Minuit在这种中间程序的控制下使用)。FCN的值通常取决于一个或多个变量参数,其含义由用户(或中间程序)定义,但其
试用值由Minuit根据用户对FCN的请求来确定(通常最小化它)。
举一个简单的例子,假设问题是通过一组数据点拟合多项式。然后用户编写一个FCN,计算多项式和数据之间的卡方;这FCN的可变参数将是多项式的系数。使用Minuit命令,用户会要求Minuit将有关参数的FCN最小化,也就是说,找到给出最小卡方值的系数。
因此,除了要分析的函数之外,用户还必须提供一组命令来指示Minuit需要分析什么。命令可以以几种不同的形式给出:
–作为数据文件,对应于传统的“数据卡”,用于批量处理;
–在终端执行时输入,用于交互式运行;
–调用程序中的Fortran编码,允许循环、条件执行和所有
Fortran的其他可能性,但不是交互性,因为它必须在执行之前编译。这有时被称为在“从属模式”下运行Minuit。HBOOK和PAW以这种方式使用Minuit。
也可以混合上述任何一种形式,例如用标准命令开始拟合文件,然后将其移交给交互式用户,以执行最终命令步骤
1.2内外参数
FCN的每个参数由用户定义为属于以下类型之一:
自由变量:允许取任何值。
有限制的变量:仅允许在用户指定的两个限制之间变化。
固定量:最初定义为变量,但现在只取参数在固定时刻所具有的值,或者是一个后来由用户指定的值。
常量:只接受用户指定的一个值。
未定义:从未由用户定义
FCN中的用户当然必须能够“看到”所有类型的定义参数,因此他可以访问我们所说的外部参数列表,即他定义的参数。另一方面,内部Minuit最小化程序只希望无限制地“查看”变量参数,因此他们只能访问内部参数列表,该列表通过以下转换从外部列表创建的:
( 1 )挤出所有不可变的参数。
( 2 )对所有可变参数进行有限制变换,这样变换后的参数可以在没有限制的情况下变化。(有关此转换的详细信息,请参见下一节。)因为这种转变是非线性的,建议避免对不需要的参数进行限制。
例如,假设用户定义了以下参数:
–参数1,常数。 –参数3,自由变量。 –参数10,有限制的变量。
–参数11,常数。 –参数22,自由变量。 -所有其他未定义
那么内部参数列表如下:
–内部参数1 =外部参数3。 –内部参数2 =外部参数10,适当变换。
–内部参数3 =外部参数22。
在上面的例子中,Minuit认为外部参数的数量是22 (最高的外部参数参数编号已定义),内部参数的数量为3。后一个数字被作为NOAR传递给FCN。这个数量决定了,例如参数的误差矩阵的大小,因为只有变量参数有误差。
Minuit的一个重要特征是允许参数在Minuit运行期间改变类型。有几个Minuit命令可用于固定可变参数,反之亦然;强加,改变或移除可变参数的限制;甚至可以在运行过程中的任何时候定义全新的参数。此外,一些Minuit程序(特别是MINOS误差分析)使一个或多个变量参数在计算过程中临时固定。因此,外部和内部参数列表之间的对应关系通常是动态的,NPAR的值不一定是常量。
1.2.1有限制参数的转换
对于有限制的可变参数,Minuit使用以下转换:
因此,内部值可以取任何值,而外部值只能取上下线a,b之间的值,由于这种转换必然是非线性的,它将把一个好的线性问题转换成一个讨厌的非线性问题,这就是为什么如果没有必要,应该避免限制的原因。此外,变换确实需要一些计算机时间,所以它会使计算速度减慢一些,更重要的是,除了FCN值的数值计算中引入的误差之外,它还会给问题带来额外的数值不确定性。非线性和数值舍入的影响都变得更加重要,因为外部值越来越接近其中一个极限(表示为到最近极限的距离除以界限之间的距离)。因此,用户必须意识到这样一个事实,例如,如果他对参数设置了( 0;)的限制,那么对于大多数机器来说0 .0和1 .0的值是无法区分的。
当然,这种变换也会影响参数误差矩阵,因此Minuit在有参数限制时会对误差矩阵(以及“抛物线”参数误差)进行变换。然而,用户应该意识到,变换只是一个线性近似,如果一个或多个参数非常接近极限,它就不能给出有意义的结果,其中。因此,建议:
–只有在需要时,才应使用可变参数限制,以防止参数取非物理值。
–当使用限值找到令人满意的最小值时,应该尽可能移除限值,以便无限制地进行或重新进行误差分析。
关于参数限制的影响的进一步讨论可以在最后一章找到。
1.3Minuit的SET Strategy命令
在分析用户函数的许多地方,Minuit必须决定是否“安全”还是浪费了一些函数调用,以便知道它在哪里,或者“快速”,并冒着无法获得用户期望的精度的风险试图以尽可能少的调用来获得请求的结果。为了让用户影响这些决策,有一个内部的Minuit参数ISTRAT,用户可以通过SET Strategy命令来设置它。在当前版本中,此参数可以采用三个整数值( 0,1,2 ),默认值为1。值0指示Minuit它应该有效利用函数调用;它用于存在许多可变参数/或函数需要很长时间来计算/或用户对参数误差的非常精确的值不感兴趣的情况。另一方面,值2表示允许Minuit浪费函数调用,以确保所有值都是精确的;它适用于在非常短的时间内计算函数/或必须可靠计算参数误差的情况。
1.4参数误差
Minuit通常用于查找一组参数的“最佳”值,其中“最佳”被定义为最小化给定函数FCN的值。函数最小值的宽度,或者更一般地说,函数在最小值附近的形状,给出了关于最佳参数值的不确定性的信息,物理学家通常称之为参数误差。Minuit的一个重要特征是它提供了几个工具来分析参数误差。
1.4.1 FCN规范化和误差定义。
无论使用什么方法来计算参数误差,它们都取决于FCN的整体(乘法)归一化,在这个意义上FCN的值处处乘以一个常数,那么误差将减少一个常数。相加常数不会改变参数误差,但可能意味着不同的拟合度置信水平。
假设用户知道FCN的归一化意味着什么,并且他对参数误差感兴趣,SET ERRordef命令允许他定义一个“误差”的含义,根据FCN值的变化,FCN值应该是由一个参数改变一个“误差”引起的。如果FCN是通常的卡方函数(定义如下),如果用户想要通常的单标准差误差,那么ERRordef应该被设置为1.0 (无论如何都是默认值)。如果FCN是负对数似然函数,那么ERRordef的单标准差值是0.5。如果FCN是一个卡方,但是用户想要二次标准离差误差,那么ERRordef应该是= 4.0,等等.
注意,在通常情况下,Minuit被用于对一些实验数据进行拟合,参数误差将与数据中的不确定性成比例,因此无法获得有意义的参数误差,除非数据的测量误差已知。在最小二乘拟合的常见情况下,FCN通常被定义为卡方:
其中 ɑ是正被拟合的自由参数的向量,而是各个测量值中的不确定性。如果这些不确定性是未知的,并且被简单地排除在计算之外,那么拟合可能仍然有意义,但不是所得参数误差的定量值。(只有不同参数之间的相对误差才有意义。)
如果都被一个beta;因子高估了,那么拟合中产生的参数误差将被同一因子beta;高估。
1.4.2误差矩阵
Minuit处理器MIGRAD和HESSE通常会生成一个误差矩阵。 该矩阵是FCN的二阶导数矩阵的逆矩阵,必要时转换为外部坐标空间,并乘以ERRORDEF的平方根。因此,基于Minuit误差矩阵的误差考虑了所有参数相关性,但不考虑非线性。也就是说,仅从误差矩阵中来看,两个标准偏差误差总是正好是一个标准偏差误差的两倍。
当计算出误差矩阵时(例如通过成功执行命令MIGrad或HESse),Minuit输出的参数误差是该矩阵的对角线元素的平方根。 命令SHOw COVariance(显示协方差)和SHOw CORrelations(显示相关性)也允许用户查看非对角线元素。 命令SHOw EIGenvalues(显示特征值)使Minuit计算并输出误差矩阵的特征值,如果矩阵是正定的,则该特征值都应为正(参见下文关于Migrad和正定性)。
相关性对各个参数误差的影响如下。 当参数N固定时,Minuit反演误差矩阵,删除对应于参数N的行和列,并重新反演结果。由于参数N的不确定性而产生的分量现在已经被删除,从而对其他参数的影响是一般使它们更小。(在给定参数与参数N不相关的限制下,当参数N固定时,其误差不会改变。)但是该过程是不可逆的,因为Minuit忘记了原始的误差矩阵,所以如果参数N被释放,那么误差矩阵被认为是未知的,必须使用适当的命令重新计算。
1.4.3MINOS误差
MINUIT处理器MINOS可能是第一个,而且可能仍然是计算参数误差的唯一通用程序,同时考虑到参数相关性和非线性。MINOS误差区间一般是不对称的,计算起来可能很昂贵,特别是如果存在大量的自由参数,而且这个问题非常非线性。
MINOS只能是找到了一个很好的最小值之后才能操作,并且已经计算了误差矩阵因此MINOS命令通常遵循MIGRAD命令。给定参数的MINOS误差定义为该参数值的更改,该值导致值按数量UP增加,其中 是FCN相对于所有其他空闲参数的最小值。UP是用户指定的ERRORDEF值(默认值=1)
求解参数N的正、负MINOS误差的算法包括变参数N,每次对所有其他NPAR-1变量参数最小化FCN,数值求出的FCN的最小值FMIN UP的参数N的两个值,其中FMIN是相对于所有NPAR参数的FCN的最小值。为了使过程尽可能快,MINOS使用误差矩阵来预测在计算过程中必须找到的各次级最小值的所有参数的值,并且在问题接近线性的限度内,MINOS的预测将接近精确,只需很少的迭代。另一方面,当问题非常非线性(即FCN远离其参数的二次函数)时,这正是需要MINOS来表示正确的参数误差的情况。
1.4.4轮廓绘制
MINUIT目前提供了两种完全不同的方法来寻找FCN轮廓线。它们将通过相应的命令来识别:CONtour和MNContour.。
1.4.4.1CONtour(轮廓线)命令
此过程是为作为输出设备的行打印机或字母数字终端而设计的,并给出了FCN作为用户指定的两个参数的函数的静态图,即所有其他变量参数(如果有的话)都被视为暂时固定在其当前值。首先选择一个范围,在默认情况下,在两个参数的当前最佳值的任何一侧都选择两个当前标准差,并为每个参数的全部范围选择一个网格大小n,默认情况下,每个参数的全部范围为25乘25个位置。轮廓零被定义为当前的最佳函数值(可能最小值),然后第i个轮廓被定义为FCN的值。该过程简单地在每个网格位置的四个角处评估FCN(进行(评估),以确定第i等轮廓是否通过它。该方法虽然效率不高,精度也不高,但非常稳定,能够揭示出意想不到的多个山谷。
1.4.4.2MNContour(Mn-轮廓线)命令
MNContour计算的轮廓线是动态的,因为它代表了相对于所有其他NPAR-2参数(如果有的话)的FCN的最小值。在统计方面,这意味着MNContour使用类似MINOS的过程,考虑了所绘制的两个参数与所有其他变量参数之间的相关性。(如果不需要此特性,则必须在调用MNContour之前修复其他参数。)MNContour提供了轮廓线周围各点的实际坐标,适合于用图形例程或手工绘制。在轮廓线周围按逆时针顺序给出各点。每个命令(或Fortan调用)只计算一个轮廓线,并且级别是。其中UP是用户指定的ERRORDEF,默认情况下是1.0。用户选择要计算的点数(数据驱动模式默认为20)。作为一个意外结果,MNContour提供了这两个参数的MINOS误差,因为这些参数只是轮廓线的极值点(使用SHOW MINOS查看它们)。在命令驱动模式下给出了点的粗略(字母数字,而不是图形)图(如果PRINTLEVELgt;=0)和坐标的数值(如果PRINTLEVELgt;=1)。在Fortan调用模式下,用户可以通过SUBROUTINTE MMCONT得到对点坐标矢量的访问。
第七章.对Minuit给出的参数误差的解释
通常情况下,使用Minuit的最小化问题的解决的方案本身是简单地,但是所得到的参数不确定性的计算或解释是相当复杂。本章的目的是解决在确定参数误差时遇到的困难。这些困难可能会在任何合适的程序里出现,这里将用Minuit语句进行讨论。
造成误差的最常见的原因有可分为三类:
- 用户提供的卡方或似然函数的适当归一化和适当的ERRORDEF。
- 问题表述中的非线性,导致不同的计算方法,如MIGRAD、HESSE、MINOS等方法计算的误差不同。
- 多参数误差的定义和解释。
所有的这些在Eadie等人[5]中有详细讨论,详情可参考。
7.1函数规范化和误差定义
为了在用户定义的函数值中提供充分的通用性,允许用户定义一个内部称为UP的归一化因子,并由Minuit用户在ERRORDEF卡上定义。默认值为1。参数的Minuit误差被定义为参数的变化,它会产生等于UP的函数值的变化。这是定义误差的最普遍的方法,尽管在统计中,用的二阶导数来定义
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[18283],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。