MATLAB—绘制椭圆

绘制圆,变换成椭圆(这里需要一个变换矩阵)。

MATLAB中的绘制:使用参数方程的形式。

figure(1)
plot([-5 5],[0 0],'k','LineWidth',1);hold on;% 画坐标轴
plot([0 0],[-5 5],'k','LineWidth',1);hold on;

theta=0:pi/20:2*pi;% 参数theta
a=2;b=3;% 长短轴
x1=a*cos(theta) +1;% 偏置
y1=b*sin(theta) +1;
plot(x1,y1,'-');hold on;
axis equal

调用MATLAB自带的ezplot函数画椭圆。

ezplot('x^2+2*x*y+3*y^2+4*x+5*y = 6');
axis([-6 3 -3 3]);

调用 MATLAB 自带的 ellipse1 函数画此椭圆, ellipse1 函数根据椭圆中心坐标、长半轴、偏心率和方向角画椭圆。【已知椭圆中心坐标为[1, 2],长半轴为10,短半轴为5,方向角为45°。】

ecc = axes2ecc(10,5);  % 根据长半轴和短半轴计算椭圆偏心率
[elat,elon] = ellipse1(1,2,[10 ecc],45);
plot(elat,elon)

线性代数—二次型,二次型的矩阵表达x^{T}Ax。行列式的几何意义:面积。

比如:椭圆方程:[x,y][3, 1;1, 4][x,y]' = 5,即3*x*x + 2*x*y + 4*y*y = 5

利用线性代数中所讲的二次型化标准型的办法将一般椭圆方程化为标准椭圆方程,先作出标准椭圆曲线,然后通过坐标旋转得到所要的椭圆曲线图像。

function  h = ellipsefig1(a,b,c,d,e,f,x,y)
% 画一般椭圆:ax*x+bx*y+c*y*y+d*x+e*y = f
P = [a b/2;b/2 c];
delta = b^2-4*a*c;
if delta >= 0
    warning('这不是一个椭圆')
    return;
end
x0 = (b*e-2*c*d)/delta;
y0 = (b*d-2*a*e)/delta;
r = a*x0^2 + b*x0*y0 +c*y0^2 + f;
if r <= 0
    warning('这不是一个椭圆')
    return;
end


[V, D] = eig(P); 
aa = sqrt(r/D(1));
bb = sqrt(r/D(4));
t = linspace(0, 2*pi, 60);
xy = V*[aa*cos(t);bb*sin(t)];
h = plot(xy(1,:)-x0 +x,xy(2,:)-y0 +y, 'k', 'linewidth', 2);

或者通过配方将一般椭圆方程化为标准椭圆方程,作出标准椭圆曲线,然后通过坐标旋转和缩放得到所要的椭圆曲线图像。

aa = sqrt(r/a); 
bb = sqrt(-4*a*r/delta);
t = linspace(0, 2*pi, 60);
xy = [1 -b/(2*a);0 1]*[aa*cos(t);bb*sin(t)];

用蒙特卡洛方法求椭圆面积 【\pi ab】...

三维图

mesh()用于绘制不是特别精细的三维曲面网格图。surf()用于绘制比较光滑的三维曲面网格图。

 sphere 的官方文档:...

MATLAB画椭圆面,meshgrid()的理解:

t=-pi:0.1*pi:pi;
s=-pi:0.1*pi:pi;
[u,v]=meshgrid(t,s);
x=2*sin(u).*cos(v) +1;
y=3*sin(u).*sin(v) +2;
z=cos(u);
surf(x,y,z)

椭圆抛物面

u=-12:0.1:12;
v=-12:0.1:12;
[x,y]=meshgrid(u,v); 
z=x.^2./4+y.^2./16; 
meshc(x,y,z); 

椭圆锥面 

u=0:pi/600:2*pi;
v=0:pi/600:2*pi;
[U,V]=meshgrid(u,v);
X=U*4.*cos(V);
Y=U*9.*sin(V);
Z=2*U;
mesh(X,Z,Y);
axis auto; 

  • 9
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值