实验2 用MATLAB 绘制二维三维图形
Posted 从零开始的智障生活
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验2 用MATLAB 绘制二维三维图形相关的知识,希望对你有一定的参考价值。
clear;close all;clc;
hold on;
grid;
for n=1:100
fn=(1+1/n)^n;
plot(n,fn,'r.','markersize',10);
pause(0.1);
end
clear;close all;clc;
hold on;
axis([0,100,0,2])
grid;
for n=1:100
fn=n^(1/n);
plot(n,fn,'r*','markersize',5);
pause(0.1);
end
clear;close all;clc;
syms x;
fx=sin(x)/x;
fplot(fx,[-1,1]);
axis([-1,1,0,1.5]);
grid;
clear;close all;clc;
syms x;
fsinx=sin(x);
subplot(1,2,1);
T5=taylor(fsinx,x,'Order',5);
T6=taylor(fsinx,x,'Order',6);
T7=taylor(fsinx,x,'Order',7);
T8=taylor(fsinx,x,'Order',8);
T9=taylor(fsinx,x,'Order',9);
sympref("PolynomialDisplay","ascend");
disp(T5);disp(T6);disp(T7);disp(T8);disp(T9);
fplot([fsinx,T5,T6,T7,T8,T9],[-2*pi,2*pi]);
legend("sin(x)",...
'approximation of exp(x) up to o(x^5)',...
"approximation of exp(x) up to o(x^6)",...
"approximation of exp(x) up to o(x^7)",...
"approximation of exp(x) up to o(x^8)",...
"approximation of exp(x) up to o(x^9)");
grid;
ylim([-10,10]);
syms x;
fexpx=exp(x);
subplot(1,2,2);
T5=taylor(fexpx,x,'Order',5);
T6=taylor(fexpx,x,'Order',6);
T7=taylor(fexpx,x,'Order',7);
T8=taylor(fexpx,x,'Order',8);
T9=taylor(fexpx,x,'Order',9);
sympref("PolynomialDisplay","ascend");
disp(T5);disp(T6);disp(T7);disp(T8);disp(T9);
fplot([fexpx,T5,T6,T7,T8,T9],[-2*pi,2*pi]);
legend("exp(x)",...
'approximation of sin(x) up to o(x^5)',...
"approximation of sin(x) up to o(x^6)",...
"approximation of sin(x) up to o(x^7)",...
"approximation of sin(x) up to o(x^8)",...
"approximation of sin(x) up to o(x^9)");
grid;
ylim([-10,10]);
clear;close all;clc;
pie([60,184,87,13,458-60-184-87-13]);
legend("外企或合资企业","国企","私企","自主创业","其他");
title("研究生就业");
clear;close all;clc;
theta=linspace(0,360,50);% 设定degree取值范围是[0,360]
theta_radians=deg2rad(theta);% 设定弧度
% 上面这两步其实是可以用theta=linspace(0,2*pi,50);来替代
rho=2*(1+cos(theta_radians));
polarplot(theta_radians,rho);
clear;close all;clc;
% syms t;
% fplot(2*(t-sin(t)),2*(1-cos(t)),[0,2*pi]);
% 下面这步同上面两步
ezplot('2*(t-sin(t))','2*(1-cos(t))',[0,2*pi]);
% 这里一个比较重要的问题是,x和y有正负怎么办?
clear;close all;clc;
x=linspace(-1,1,100);% 分割[-1,1]区间生成x
y=x; % 生成y,y与x相同。
[X,Y]=meshgrid(x,y);% 生成矩形域[-1,1]x[-1,1]网格结点坐标矩阵,注意不是x(1)只与y(1)匹配而是与[y1,...,yn]匹配。
% 但我们要的是x^2+y^2<=1这样的圆形区域啊,所以要基于底面范围对生成的z轴点进行筛选
Z=1-X.^2-Y.^2;% 生成基于[-1,1]x[-1,1]的函数值矩阵0<=x^2+y^2<=1。则0<=1-x^2-y^2<=1。
%但是由于x,y可以取(1,1),那么1-1-1=-1,sqrt(-1)是个虚数,所以先不用sqrt求值,先选再说。
% 然后对这个z轴的值进行选择,很明显0<=z<=1
i=Z>1;
Z(i)=NaN;% 对于超出圆域的部分进行赋予空值。
i=Z<0;
Z(i)=NaN;
%然后对这个筛选完的Z求sqrt
Z=sqrt(Z);
subplot(1,2,1);
mesh(X,Y,Z); % 在第一个子窗口中画z=sqrt(1-x.^2-y.^2)的网格曲面。
subplot(1,2,2);
surf(X,Y,Z); % 在第二个子窗口中画z=sqrt(1-x.^2-y.^2)的光滑曲面。
shading flat; % 对曲面z=sqrt(1-x.^2-y.^2)平滑并除去网格
clear;close all;clc;
% 利用特殊图形sphere来画图
[sx,sy,sz]=sphere(56);
sy=sy*2;sz=sz*(2*sqrt(3));
subplot(2,3,1);
surf(sx,sy,sz);
title("surf");
subplot(2,3,2);
plot3(sx,sy,sz);
title("plot3");
subplot(2,3,3);
surfl(sx,sy,sz);
title("surfl");
subplot(2,3,4);
mesh(sx,sy,sz);
title("mesh");
% 利用命令ellipsoid画椭球体
% [ex,ey,ez]=ellipsoid(xc,yc,zc,xr,yr,zr,n);(xc,yc,zc)为椭球心,xr,yr,zr为半轴长
subplot(2,3,5);
[ex,ey,ez]=ellipsoid(0,0,0,1,2,2*sqrt(3),30);
surf(ex,ey,ez);
title("ellipsoid");
13题参考第10题。
以上是关于实验2 用MATLAB 绘制二维三维图形的主要内容,如果未能解决你的问题,请参考以下文章
matlab三维三维图形的修饰标注viewaxis等matlab图行绘制七