3.142 FAQ-858 如何创建求和拟合函数或双积分拟合函数?

Last Update: 7/30/2018

Tools: Fitting Function Organizer 中,你可以利用 LabTalk 脚本或者 Origin C 代码,创建求和拟合函数或双积分拟合函数。

求和拟合函数

你可以在函数定义框中定义带嵌入 For 循环的拟合函数。以下面的函数为例。

y=\sum_{i=1}^{10}a \cdot x^2

假设你在 Function 框中定义拟合函数,如下所示:

y = sum(x, a, n); //n is a constant, and n=10

然后,在 LabTalk Functions Definition and Initializations 框中,定义一个用户自定义的 Labtalk 函数 sum ,如下所示:

function double sum(double x, double a, int n)
{
    double bb = 0;
    for(ii =1; ii<=n; ii++)
    {
    	bb = a * x * x + bb;
    }
    return bb;
}

双积分拟合函数

你可以定义一个 Origin C 拟合函数,在该函数中调用 NAG 函数以执行积分。 以下面的公式为例。

y=\int_{amp}^x \int_{amp}^x (z_{1}+z_{2})dz_{1}dz_{2}

  1. 点击 Function 编辑框旁边的按钮,打开 Code Builder
  2. 移动到这行
    //add the header file for the NAG functions here.

    并且在此行下方添加 NAG 函数的头文件:

    #include <OC_nag.h>
  3. 定义你的拟合模型。
    static double NAG_CALL f(int n, double z[], Nag_User *comm)
    {
    	int *use_comm = (int *)comm->p;
    	double dUserSuppliedFunction;
    	dUserSuppliedFunction = z[0] + z[n-1];
    	return dUserSuppliedFunction;
    }
  4. 编辑你的拟合功能。
    void _nlsfnag_double_integral_fitting(
    // Fit Parameter(s):
    double amp,
    // Independent Variable(s):
    double x,
    // Dependent Variable(s):
    double& y)
    {
    	// Beginning of editable part
            static int use_comm;
    	int ndim = 2;  // the integral dimension
    	int maxpts = 1000*2;  // maximum number of function evaluation 
    	double a[2], b[2];
    	
    	static NagError fail;
    	double finval;
    	int minpts;
    	double acc, eps;
    	Nag_User comm;
    	comm.p = (Pointer)&use_comm; // For communication with user-supplied functions
    	
    	for (int k=0; k < ndim; ++k)  // integration interval
    	{
    	  a[k] = amp;
    	  b[k] = x;
    	}
    	eps = 0.0001; // set the precision
    	minpts = 0;
    		
    	d01wcc(ndim, f, a, b, &minpts, maxpts, eps, &finval, &acc, &comm, &fail);
    	
    	y = finval;
    	// End of editable part
    }
  5. 单击 Compile 按钮,完成编译。


我们提供了几个教程,是关于怎么自定义含积分的拟合函数的。如有需要, 请参阅相应主题以查看详细步骤:


Keywords: integrate, integral, fitting, Origin C, LabTalk, NAG, summation, double integral,积分,拟合,求和,双积分