在matlab中绘制一般形式的二次曲面

Ben*_*eno 4 matlab

我有二次曲面方程 在此输入图像描述

我知道A,B,C ......我如何在matlab中绘制我的方程?

Flo*_*ris 7

您最好的选择是在函数值0处生成具有单个轮廓的函数的3D等高线图.要以合理的精度执行此操作,请按照以下方式在多个点x,y,z处计算函数F.

gv = linspace(-30,30,50); % adjust for appropriate domain
[xx yy zz]=meshgrid(gv, gv, gv);
F = A*xx.*xx + B*yy.*yy + C*zz.*zz+ ... etc

figure
isosurface(xx, yy, zz, F, 0)
Run Code Online (Sandbox Code Playgroud)

这样做的原因是你的函数通常是多值的 - 也就是说,对于给定的X和Y值,Z可能有两个可能的答案.通过这种方式你可以有效地绕过这个问题 - 指导matlab将表面放在函数为零的任何位置.

请注意,我gv为网格提供了一个任意向量- 即,评估函数的点.为了获得准确且视觉上令人愉悦的结果,在可能的解决方案范围内,每个维度可能需要大约50个点(这可能在三个维度上有所不同);

例如,用

F = xx.^2 + 2*yy.^2 + 0.5*zz.^2 + .4*xx.*yy + .5*xx.*zz + .6*yy.*zz + 7*xx + 8*yy + 9*zz - 100;
Run Code Online (Sandbox Code Playgroud)

你得到下图:

在此输入图像描述