如何在Matlab中将椭圆和抛物线一起绘制?

问题描述 投票:0回答:3

我需要绘制一个抛物线和椭圆。然而,椭圆给我带来了麻烦。有人可以帮忙吗?方程为:y = -5 * x ^ 2 + 2和(x ^ 2/16)+(y ^ 2/2)= 4

我试过这段代码,但显然我觉得它不对。

x = linspace(-5, 5);
y1 = (x.^2/16) + (y.^2/2) - 1; 
y2 = -5*x.^2 +2;
figure(1)
plot(x, y1)
hold on
plot(x, y2)
hold off
matlab intersection
3个回答
1
投票

首先,您没有定义范围变量x。其次,椭圆不会通过垂直线测试,不能像常规函数f(x)那样绘制。第三,你的等式y1 = (x.^2/16) + (y.^2/2) - 1;是非感性的,因为你的每一边都有y

您可以通过定义范围变量x1x2来更正您的方法,每个范围变量f(x)+都有适合您绘制的函数的范围。我的意思是你可能不希望每个函数都有相同的范围,因为椭圆在定义抛物线的大部分范围内是未定义的。要使用-绘制椭圆,您可以观察到ezplotezplot('x^2/16+y^2/2-4'); axis equal; hold on ezplot('-5*x^2+2-y') 值是相同的,使用这个事实,您可以通过两个函数绘制椭圆,一个代表上半部分,一个代表下半部分,每个都通过垂直线测试。

要么

你可以利用x = linspace(-5, 5); y1 = sqrt((1 - x.^2/16)*2); y2 = -5*x.^2 +2; figure(1) plot(x, real(y1), 'r', x, -real(y1), 'r') hold on plot(x, y2) hold off 并度过愉快的时光,因为它让你的生活更轻松。这是一个解决方案。

fimplicit

0
投票

绘制椭圆的方法有多种,例如:您还可以使用方程的参数表示。

但是,在您的方法中,使用plot(x,y)命令绘制函数时,需要通过自变量(x)表示因变量(y)。您定义了x的范围,这是您在方程中替换以找到y的方法。而对于抛物线,y与x的依赖关系很明显,你忘了为椭圆推导出这种关系。在这种情况下,它将是+ -sqrt((1 - x ^ 2/16)* 2)。因此,在您的方法中,您必须考虑相同x值的负y和正y。您的椭圆(= 4)和Matlab代码(= 1)中的等式也存在差异。

ezplot

由于椭圆的实数y不在整个x域上,如果你只想绘制实部,请指定real(y1)或abs(y1)(即使Matlab也为你做了)。在计算y1时,您也可以忽略某些x的复数,但是你需要一个for循环。

为了简化操作,您可以检查函数fplot,根据Matlab的文档不建议使用here already。或者如果你想以参数方式绘制椭圆,f(x)也会起作用。

参数化绘图的另一种(更经典的)方法是linspace,那么你不需要任何其他功能,而不是你已经使用过的功能。我认为这是绘制椭圆的最简单,最优雅的方法。


0
投票

您将无法使用笛卡尔linspace范围内的函数cos为椭圆生成点。相反,您仍然可以使用sin但是使用极坐标表示的角度,从0到2 * pi。您还应该能够在x = linspace(-5, 5); y2 = -5*x.^2 +2; figure(1) clf; plot(x, y2) hold on a = linspace(0,2*pi); x2 = 4*cos(a); y2 = sqrt(2)*sin(a); plot(x2, y2) xlim([-5,5]); ylim([-5,5]); hold off 和qazxswpoi表达式上轻松调整两个轴上的半径和偏移。

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.