matlab案例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例1:将一个数值变量按任意精度显示
vpa('pi',1000)
vpa(sin(8),100)
例2 一个简单的加密程序
%本程序是通过随机的方式把一个字符串显示出来,起到简单的
%加密作用。
a='等候你。我望着户外的昏黄同望着将来,我的心震盲了我的听。你怎还不来?希望每一秒钟上允许开花。我守候着你的步履,你的笑语,你的脸,你的柔软的发丝,守候着你的一切;希望在每一秒钟上枯死──你在哪里?我要你,要得我心里生痛,我要你火焰似的笑,要你灵活的腰身,你的发上眼角的飞星;我陷落在迷醉的氛围中,像一座岛,在蟒绿的海涛间,不自主的在浮沉……喔,我迫切的想望你的来临,想望那一朵神奇的优昙开上时间的顶尖!';
n=length(a);
key=randperm(n);
jiami=a(key)%加密后的字符串
%下面进行解密
jiemi=a;
for i=1:n
jiemi(key(i))=jiami(i);
end
jiemi
例3: Monte Carlo估计 值
ninside=0;
piest=zeros(500,1);
for k=1:500;
x=rand(100,1);y=rand(100,1);
ninside=ninside+sum(x.^2+y.^2<=1);
piest(k)=ninside/(100*k)*4;
end
plot(piest)
xlabel('试验次数')
例4:不规则边构成图形面积的计算方法
(1)monte carlo 方法(请思考除增加样本以外提高精度的方)
clear;clc;
%先用随机方式产生曲边坐标
qbzb=[sort(rand(20,1)),sort(rand(20,1))];
x=qbzb(:,1);y=qbzb(:,2);
%x坐标的范围
xmin=min(x);xmax=max(x);
%y坐标的范围
ymin=min(y);ymax=max(y);
%利用5阶多项式进行拟合。主要是为了得到一个曲边函数,用于判断随机点时候%在曲边下侧
fit_fun=polyfit(x,y,5);
n=10000;
samples=rand(n,2);
xx=samples(:,1);yy=samples(:,2);
fit_val=polyval(fit_fun,xx);
ninside=sum(fit_val<=yy);
s=ninside/n*(ymax-ymin)*(xmax-xmin)
ss=trapz(x,y)
(2)插值后用梯形公式
clear;clc;
%先用随机方式产生随机坐标
zuobiao=[sort(rand(20,1)),sort(rand(20,1))];
x=zuobiao(:,1);y=zuobiao(:,2);
%x坐标的范围
xmin=min(x);xmax=max(x);
%y坐标的范围
ymin=min(y);ymax=max(y);
%利用8阶多项式进行拟合。
fit_fun=polyfit(x,y,8);
%也可以用插值方式
xi=linspace(xmin,xmax,40);
yi=interp1(x,y,xi,'spline')
subplot(121),plot(x,y,x,polyval(fit_fun,x),'r:',xi,yi,'k-')
axis([0 1 0 1]);
fun1=poly2sym(fit_fun);
subplot(122),ezplot(fun1,[xmin,xmax])
axis([0 1 0 1]);
s1=eval(int(poly2sym(fit_fun),xmin,xmax))
s2=trapz(x,y)%比较接近精确值
s3=trapz(x,polyval(fit_fun,x))
s4=trapz(xi,yi)
例3:对于不规则多边形面积的计算
思路:可将该多边形分解
例4:Matlab中动画的绘制
(1)带运动轨迹的动画:comet及comet3
t=0:pi/500:10*pi;
subplot(1,2,1),comet(t,sin(t));
subplot(1,2,2),comet3(sin(t),cos(t),t);
(2)getframe
Z = peaks; surf(Z)
axis tight
set(gca,'nextplot','replacechildren');
for j = 1:50
surf(sin(2*pi*j/20)*Z,Z)
F(j) = getframe;
end
movie(F,50)
(3)drawnow
t = 0:pi/20:2*pi;
y = exp(sin(t));
h = plot(t,y,'YDataSource','y');
for k = 1:.1:10
y = exp(sin(t.*k));
refreshdata(h,'caller') % Evaluate y in the function workspace
drawnow; pause(.1)
end
一、矩阵及向量的操作
1、矩阵的定义:
(1)用[ ]生成:
a=[1 2 3;4,5,6]
逗号或空格-----分隔不同的列;