自定义插值/最小化函数(又名曲线拟合)任何库

2024-09-19 18:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我通常使用root及其强大的MuuIt插值类在C++环境中工作。由于与绘图和数据处理的方便性相关的原因,我最近切换到了Python3.8。问题是我找不到一个库来设置我的自定义插值函数(现在是1D,将来是多元的)ScipyPandas有预设methods,我不知道还有其他用于插值的库。在我看来这是不可能的,所以我问你

我需要复制的是在根目录中听起来像这样的东西:

插值函数的定义

TF1* f3 = new TF1("PECD6", "([0]*x + 0.5*[2]*(5*x*x*x-3*x) +0.125*[4]*(63*x*x*x*x*x-70*x*x*x+15*x)) / (1 + 0.5*[1]*(3*x*x-1) + 0.125*[3]*(35*x*x*x*x-30*x*x+3) + 0.0625*[5]*(231*x*x*x*x*x*x-315*x*x*x*x+105*x*x-5)) +1", -0.9, 0.9);
    f3->SetParameters(0, 0, 0, 0, 0, 0);
    f3->SetParLimits(0, -1, 1);
    f3->SetParLimits(1, -1, 1);
    f3->SetParLimits(2, -1, 1);
    f3->SetParLimits(3, -1, 1);
    f3->SetParLimits(4, -1, 1);
    f3->SetParLimits(5, -1, 1);
    f3->SetParNames("b1", "b2", "b3", "b4", "b5", "b6");

如你所见,我使用的是六阶勒让德多项式,我想得到系数,可能是误差传播

功能的使用

ratio_genarray[rcounter]->Fit("PECD6", "QR");
fit1[k] = ratio_genarray[rcounter]->GetFunction("PECD6");

有人有什么建议吗

谢谢大家!


Tags: 函数绘图root数据处理插值ratiof3环境中工作
1条回答
网友
1楼 · 发布于 2024-09-19 18:33:27

我建议使用iminuit。你需要重新安排C++语法到iMimut的Python语法,但是从那里开始,这是一个最小的变化,因为它是eEM>分钟。p>

(LMFIT看起来也很有希望,但由于您已经在使用MINUIT,它将是到iminuit的更平滑的过渡。)

相关问题 更多 >