3.142 FAQ-858 如何创建求和拟合函数或双积分拟合函数?
Last Update: 7/30/2018
在 Tools: Fitting Function Organizer 中,你可以利用 LabTalk 脚本或者 Origin C 代码,创建求和拟合函数或双积分拟合函数。
求和拟合函数
你可以在函数定义框中定义带嵌入 For 循环的拟合函数。以下面的函数为例。
假设你在 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 函数以执行积分。 以下面的公式为例。
- 点击 Function 编辑框旁边的按钮,打开 Code Builder。
- 移动到这行
//add the header file for the NAG functions here.并且在此行下方添加 NAG 函数的头文件:
#include <OC_nag.h>
- 定义你的拟合模型。
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; }
- 编辑你的拟合功能。
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 }
- 单击 Compile 按钮,完成编译。
我们提供了几个教程,是关于怎么自定义含积分的拟合函数的。如有需要, 请参阅相应主题以查看详细步骤:
Keywords: integrate, integral, fitting, Origin C, LabTalk, NAG, summation, double integral,积分,拟合,求和,双积分