MATLAB—绘制椭圆

365体育平台 ⌛ 2025-09-24 20:42:32 👤 admin 👁️ 5844 ❤️ 761
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,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)];

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

三维图

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;

相关文章

友情链接