qfunkt
2010-03-30, 21:29
编的一个很普通的程序出问题了,请求高手帮忙解决?
h(x,n)中的x运行的时候,发现只能取整数,(但应该小数,整数都可以才对啊)请问问题出在哪,请高手帮忙解决一下,谢谢!
程序如下:
%%%%%%%卡方(n)分布函数h(x,n)的计算 **
% H----返回P(X<=x)分布函数值
function H=h(x,n);
clc
'卡方分布分布函数计算值'
h(x,1)=2*b(sqrt(x))-1;
h(x,2)=1-exp(((-1)*x)/2);
if n>=3
for i=3:n
h(x,i)=h(x,i-2)-2*f(x,i);
end
H=h(x,i);
end
if n==1
H=h(x,1);
end
if n==2
H=h(x,2);
end
%%%%%****此处往下为辅助程序*******%%%%%%%%%%
%%%%%%%标准正态分布的分布函数的计算
% x----输入x
% B----返回P(X<=x)分布函数值
function B=b(x);
clc
'标准正态分布函数 F='
n=28;
f=(1/sqrt(2*pi))*(exp((-1)*(x^2)/2));%标准正态分布密度函数
g=0;
if x>=0&&x<=3 %此处往下为标准正态分布的分布函数B的计算
for i=0:n-1
k=n-i;
g=((-1)^k)*k*(x^2)/(2*k+1+g);
end
B=0.5+f*x/(1+g);
else
if x>3
for i=0:n-1
k=n-i;
g=k/(x+g);
end
B=1-f/(x+g);
else
B=1-b(-x);
end
end
%%%%%%%%%%%%%%%%%%%函数f(x,i)的计算
function B=f(x,i);
clc
f(x,1)=(1/(sqrt(2*pi*x)))*exp(((-1)*x)/2);
f(x,2)=(1/2)*exp(((-1)*x)/2);
if i>=3
for j=3:i
f(x,j)=(x/(j-2))*f(x,j-2);
end
B= f(x,j);
end
if i==1
B=f(x,1);
end
if i==2
B=f(x,2);
end
h(x,n)中的x运行的时候,发现只能取整数,(但应该小数,整数都可以才对啊)请问问题出在哪,请高手帮忙解决一下,谢谢!
程序如下:
%%%%%%%卡方(n)分布函数h(x,n)的计算 **
% H----返回P(X<=x)分布函数值
function H=h(x,n);
clc
'卡方分布分布函数计算值'
h(x,1)=2*b(sqrt(x))-1;
h(x,2)=1-exp(((-1)*x)/2);
if n>=3
for i=3:n
h(x,i)=h(x,i-2)-2*f(x,i);
end
H=h(x,i);
end
if n==1
H=h(x,1);
end
if n==2
H=h(x,2);
end
%%%%%****此处往下为辅助程序*******%%%%%%%%%%
%%%%%%%标准正态分布的分布函数的计算
% x----输入x
% B----返回P(X<=x)分布函数值
function B=b(x);
clc
'标准正态分布函数 F='
n=28;
f=(1/sqrt(2*pi))*(exp((-1)*(x^2)/2));%标准正态分布密度函数
g=0;
if x>=0&&x<=3 %此处往下为标准正态分布的分布函数B的计算
for i=0:n-1
k=n-i;
g=((-1)^k)*k*(x^2)/(2*k+1+g);
end
B=0.5+f*x/(1+g);
else
if x>3
for i=0:n-1
k=n-i;
g=k/(x+g);
end
B=1-f/(x+g);
else
B=1-b(-x);
end
end
%%%%%%%%%%%%%%%%%%%函数f(x,i)的计算
function B=f(x,i);
clc
f(x,1)=(1/(sqrt(2*pi*x)))*exp(((-1)*x)/2);
f(x,2)=(1/2)*exp(((-1)*x)/2);
if i>=3
for j=3:i
f(x,j)=(x/(j-2))*f(x,j-2);
end
B= f(x,j);
end
if i==1
B=f(x,1);
end
if i==2
B=f(x,2);
end