با سلام
کد زیر رو که با توزیع نرمال نوشتم اجرا میشه اما وقتی که توزیع رو یه تی تغییر میدم (ینی D رو از یه رشته اعداد تصادفیه تی انتخاب می کنم و می خوام انتگرال tpdf با درجه ازادی 5 اجرا بشه) ارور میده . نمی دونم چطوری اصلاحش کنم.
helpمنلب در مورد مثال انتگرالا هم خووندم اما باز متوجه نمیشم منظور این ارور چیه
کد زیر درست اجرا میشه اما کد بعدی نه
اروری که کد بالا میده اینه:
میشه کمکم کنین
کد زیر رو که با توزیع نرمال نوشتم اجرا میشه اما وقتی که توزیع رو یه تی تغییر میدم (ینی D رو از یه رشته اعداد تصادفیه تی انتخاب می کنم و می خوام انتگرال tpdf با درجه ازادی 5 اجرا بشه) ارور میده . نمی دونم چطوری اصلاحش کنم.
helpمنلب در مورد مثال انتگرالا هم خووندم اما باز متوجه نمیشم منظور این ارور چیه
کد زیر درست اجرا میشه اما کد بعدی نه
کد پیاچپی:
D=normrnd(mu,sigma,1);%generate random numbers in normal distribution
b=0;
c=0;
q=0;
g=0;
z=0;
s=0;
for alfa=1:8
for landa=1:8
if D<-landa%dar vaziyat foroosh
syms x
f=normpdf(x,0,1)
b=int(f,-Inf,-landa)
elseif D>landa%dar vaziyat kharid
syms x
j=normpdf(x,0,1)
c=int(j,landa,Inf)
end
inact(alfa,landa)=b+c
end
for landa=1:8
if -landa<D<0
syms x
o=normpdf(x,0,1)
z=1/2*int(o,-landa-alfa,landa-alfa)
elseif 0<D<landa
syms x
u=normpdf(x,0,1)
s=1/2*int(u,-landa+alfa,landa+alfa)
end
act(alfa,landa)=z+s
end
end
for alfa=1:8
for landa=1:8
h(alfa,landa)=act(alfa,landa)+inact(alfa,landa);
Tact(alfa,landa)=inact(alfa,landa)/h(alfa,landa);
end
end
[x,y]=meshgrid(1:8)
contourf(x,y,Tact,15)
colorbar
کد پیاچپی:
clc%calculate switching probability+Tact with T-distribution
clear all;
close all;
Nr=100;%intial value
sigma=Nr;
mu=0;
D=trnd(5,1,1);%generate random numbers in normal distribution
b=0;
c=0;
q=0;
g=0;
z=0;
s=0;
for alfa=1:8
for landa=1:8
if D<-landa%dar vaziyat foroosh
syms x
f=tpdf(x,5)
b=int(f,-Inf,-landa)
elseif D>landa%dar vaziyat kharid
syms x
j=tpdf(x,5)
c=int(j,landa,Inf)
end
inact(alfa,landa)=b+c
end
for landa=1:8
if -landa<D<0
syms x
o=tpdf(x,5)
z=1/2*int(o,-landa-alfa,landa-alfa)
elseif 0<D<landa
syms x
u=tpdf(x,5)
s=1/2*int(u,-landa+alfa,landa+alfa)
end
act(alfa,landa)=z+s
end
end
for alfa=1:8
for landa=1:8
h(alfa,landa)=act(alfa,landa)+inact(alfa,landa);
Tact(alfa,landa)=inact(alfa,landa)/h(alfa,landa);
Tinact(alfa,landa)=act(alfa,landa)/h(alfa,landa);
k(alfa,landa)=((alfa^4+6*alfa^2+3)*Tact(alfa,landa)+3*Tinact(alfa,landa))/((alfa^2+1)*Tact(alfa,landa)+Tinact(alfa,landa))^2;
end
end
[x,y]=meshgrid(1:8)
contourf(x,y,Tact,15)
colorbar
xlabel('alfa');
ylabel('landa');
title('Tact')
اروری که کد بالا میده اینه:
کد پیاچپی:
The following error occurred converting from sym to double:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression
into a double array.If the input expression contains a symbolic variable, use the VPA
function instead.Error in tpdf (line 40)
y(k) = term ./ (sqrt(v(k)*pi) .* (1 + (x(k) .^ 2) ./ v(k)) .^
((v(k) + 1)/2));Error in MTact (line 36)
u=tpdf(x,5)
میشه کمکم کنین