【发布时间】:2009-05-29 11:27:51
【问题描述】:
我没有很多使用 Matlab 的经验。我知道您可以绘制带有 2 个变量的方程,如下所示:
ezplot(f1)
hold on
ezplot(f2)
hold off;
你将如何用 三个 符号变量绘制三个方程?
一个示例系统是:
x^2+y^2+z^2-1=0
2*x^2+y^2-4*z=0
3*x^2-4y+z^2=0
如果有办法绘制任何由 3 个方程组成的系统,那就太理想了。
【问题讨论】:
我没有很多使用 Matlab 的经验。我知道您可以绘制带有 2 个变量的方程,如下所示:
ezplot(f1)
hold on
ezplot(f2)
hold off;
你将如何用 三个 符号变量绘制三个方程?
一个示例系统是:
x^2+y^2+z^2-1=0
2*x^2+y^2-4*z=0
3*x^2-4y+z^2=0
如果有办法绘制任何由 3 个方程组成的系统,那就太理想了。
【问题讨论】:
我相信ezsurf 接近你想要的。您首先必须为z 求解每个方程,然后为该方程创建一个函数并用ezsurf 绘制它。以下是如何使用上面的第一个方程式:
func1 = @(x, y) sqrt(1-x.^2-y.^2);
ezsurf(func1);
这应该显示球体的上半部分。
要同时显示所有三个方程,您可以执行以下操作:
func1 = @(x, y) sqrt(1-x.^2-y.^2);
func2 = @(x, y) 0.5.*x.^2+0.25.*y.^2;
func3 = @(x, y) sqrt(4.*y-3.*x.^2);
ezsurf(func1, [-1 1 -1 1]);
hold on;
ezsurf(func2, [-1 1 -1 1]);
ezsurf(func3, [-1 1 -1 1]);
axis([-1 1 -1 1 0 1]);
结果图如下所示:
通过旋转绘图,您会注意到所有三个表面相交处似乎有两个点,从而为您提供方程组的两个解。
【讨论】:
“hold on”只是说不删除当前轴上的现有线条和标记。你应该能够做到
ezplot(f1);
hold on;
ezplot(f2);
ezplot(f3);
hold off;
我从未使用过 ezplot,所以无法帮助您。
【讨论】: