求解第三个变量

时间:2017-04-18 10:50:35

标签: matlab double integral equation-solving

我试图为变量h求解以下等式: enter image description here

  • F是正常的累积分布函数
  • f是卡方分布的概率密度函数。

我想用Matlab以数字方式解决它。

首先我尝试solve the problem with a simpler version of function F and f

然后,我尝试解决以下问题:

n = 3;    % n0 in the equation
k = 2;    
P = 0.99; % P* in the equation
F = @(x,y,h) normcdf(h./sqrt((n-1)*(1./x+1./y)));
g1 = @(y,h)integral(@(x) F(x,y,h).*chi2pdf(x,n),0,Inf, 'ArrayValued', true);
g2 = @(h) integral(@(y) (g1(y,h).^(k-1)).*chi2pdf(y,n),0,Inf)-P;
bsolve = fzero(g2,0) 

我得到了5.1496的答案。问题是这个答案似乎不对。

有一篇论文提供了通过求解上述等式得到的h值表。本文发表于1984年,当时计算机功率不足以快速解决方程。他们用各种价值解决了这个问题:

  • n0 = 3:2030:10:50
  • k = 2:10
  • P * = 0.90.950.99

它们在每种情况下都提供h的值。

现在我试图解决这个等式并得到具有不同n0,k和P *值的h值(例如n0 = 25,k = 12和P * = 0.975),其中不提供h的值。

上面的Matlab代码给出了不同于纸张的h值。 例如:

  • n0 = 3,k = 2且P * = 0.99:我的代码给出h = 5.1496,论文给出h = 10.276。
  • n0 = 10,k = 4且P * = 0.9:我的代码给出h = 2.7262,论文给出h = 2.912。

作者说

  

使用32点Gaus​​s-Laguerre数值求积法评估积分。这是通过在IBM子程序QA32中提供的适当的32个y值评估内部积分来实现的。还使用32点Gaus​​s-Laguerre数值求积来评估内积分。内积分的32个值中的每一个都被提高到k-1次幂并乘以适当的常数。

Matlab似乎使用相同的求积法:

  

q = integral(fun,xmin,xmax)使用全局自适应求积法和默认误差容差,从xmin到xmax数值积分函数。

有没有人知道哪些结果是正确的?要么我在代码中犯了一些错误,要么论文可能是错的 - 可能是因为作者在估计积分时只使用了32个值?

1 个答案:

答案 0 :(得分:0)

这确实有效,但是卡方分布具有(n-1)个自由度,而不是所发布代码中的n。如果这是固定的,那么里诺特的常数值与文献一致。或至少,没有背后的文献。不能和1984年的Wilcox说话。