作者focuward (泳者斗恶龙)
看板NTUfin98
标题[闲聊] 有关高统作业及matlab
时间Fri Nov 30 23:00:53 2007
大家好
我今天花了一些时间把高统作业的程式码写了
希望大家可以一起讨论一下,若要讨论,请随时发站内信给我,谢谢。
1.normdistribution 的 contour (100圈版)
clear all
mx=input('Input mean of x = ');
my=input('Input mean of y = ');
sx=input('Input standard variance of x = ');
sy=input('Input standard variance of y = ');
rho=input('Input correlation coefficient rho = ');
n=input('Input bound of x and y = ');
x=linspace(-n,n);
y=x;
[x,y]=meshgrid(x,y);
z=exp((-0.5/(1-rho^2))*(((x-mx)/sx).^2-2*rho*((x-mx)/sx).*((y-my)/sy)+((y-my)/sy).^2));
contour(x,y,z,100)//括号最後一项可控制圈数
2.p112 x marginal
clear all
l=input('Input lunda ');
n=input('Input upperbound of x ');
x=linspace(0,n);
z=l*exp(-l*x);
plot(x,z)
3.p112 y margianl
clear all
l=input('Input lunda ');
n=input('Input upperbound of y ');
y=linspace(0,n);
z=(y*l*l).*exp(-l*y);//注意前面刮弧後有一个顿号,这是为了确保两刮弧是同秩的
//linespace
plot(y,z)
4.p112 joint pdf
这题我遇到一些困难,附上我的两个版本,第一个版本是不考虑y>=x的情况
clear all
xlabel('x')
ylabel('y')
l=input('Input lunda ');
n=input('Input upperbound of ');
x=linspace(0,n);
y=linspace(0,n);
[x,y]=meshgrid(x,y);
z=l*l*exp(-l*y);
meshz(x,y,z)
xlabel('X')
ylabel('Y')
第二个版本,我利用描点的方式:把x,y点放入由0到range n,以 d 为每行列间距的
矩阵里,之所以用离散的表达是希望把每一点拿出来比大小,之後我再把 y 矩阵中的
每一个点换成 x 矩阵中的对应点减去 d,如此保证 y>=x,然後再画出来就好了。
(其中d代表每行列间距,要订为小於一,但如果订得太小电脑会跑不动,我自己测试的时
候,订为0.03可以得到近乎平滑的表面)
缺点:本程式的精确性不够,尤其是在边界值,因为我所用的演算法是把y 矩阵中的
每一个点换成 x 矩阵中的对应点减去 d,所以在 y=0 还有 x=n(boundary) 会有奇怪
的图形,希望大家跟我讨论,一起修正。
clear all
l=input('Input lunda ');
n=input('Input upperbound of y ');
d=input('Input desity ');
[x,y]=meshgrid([0:d:n]);
for i=1:fix(1/d*(n));
for j=1:fix(1/d*(n));
y(i,j)=x(i,j)-d;
end
end
z=l*l*exp(-l*y);
meshz(x,y,z)
xlabel('X')
ylabel('Y')
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.7.59
1F:推 Avle:推 泳者斗饿龙~ 下周六 一起来龙门游吧~ 12/01 12:40
2F:推 yu0101:XD 12/01 22:19