如何解决这个数值技术问题?

计算科学 matlab 随机 逆问题
2021-11-29 09:17:36

好吧,在数值技术测试中,我们遇到了以下问题:

对物理现象进行建模,使得,

F(f,d)=A(f)/d2+L;

在哪里,F是频率的函数f和距离d, 和L是随机误差。功能A(f)是未知的。

给定一个函数,生成数据集(F,f,d). 功能是:

function F = get_data(d,f)
    for i= 1:length(f)
        for j = 1:length(d)
            F(i,j) = 2*f(i)^2 / d(j)^2 + 0.3*rand()*(1-rand());
        end
    end
end

这里 d, f 是数组。F 是一个二维数组。rand 是一个函数,它给出一些小于 1 的随机数。假设我们不能深入这个函数来寻找答案。我们不能只看函数就说 A(f) = 2*f^2。我们必须通过某种数值方法找到这个或非常接近的近似值......

现在,对于 d = 1:1:10;f = 30:30:300;

我们必须为F. 从这个数据集,我们必须计算,(1)L. (2) 表达式A(f).

现在,我的理解是,第二个如果我们有A(f)然后我们可以产生L,并且可以很容易地评估L. 并且,对于A(f)我们可以假设L太低了,我们可以忽略......

但是,我怎么能真正做到呢?

如果有人帮助我,我会很高兴。

1个回答

我没有在这里给出完整的答案,但作为一个想法,您可以按如下方式考虑您的数据。

你有同方差的数据,这很好。但是一个非正态噪声项。现在有几种技术可以定义这些数据的统计模型。可以对模型进行 B 样条回归,或者可以在f近似于A(f)A^(f)=icibi(f), 具有基函数bi(f).

无论哪种方式,您的拟合模型都需要找到一些系数并读取:F(f,d)=A^(f)/d2+LA^(f)是各自的近似值A(f). 获得拟合后,残差代表L. 假设检验应该揭示是否E(L)=0在您的模型中,因此您可以捕捉到A(f).

很可能,拟合矩阵将是病态的,因此在执行拟合时,您需要应用一些正则化技术,例如截断 svd。