我有二次曲面方程
我知道A,B,C..。如何在MatLab中绘制方程式?
6qqygrtg1#
最好的办法是生成函数的3D等高线图,其中在函数值0处有一条等高线。要以合理的精度执行此操作,请在多个点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)
这样做的原因是,你的函数通常是多值的--也就是说,对于给定的X和Y值,Z可能有两个可能的答案。通过这样做,你有效地绕过了这个问题-指示MATLAB在函数为零的任何地方放置一个曲面。请注意,我给出了网格的任意向量gv--即函数求值所依据的点。为了得到准确和视觉上令人满意的结果,你可能需要在每个维度上大约50个点,在可能的解决方案的范围内(这在三个维度可能是不同的);例如,使用
gv
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;
您会看到以下图:
1条答案
按热度按时间6qqygrtg1#
最好的办法是生成函数的3D等高线图,其中在函数值0处有一条等高线。要以合理的精度执行此操作,请在多个点x、y、z处计算函数F,如下所示:
这样做的原因是,你的函数通常是多值的--也就是说,对于给定的X和Y值,Z可能有两个可能的答案。通过这样做,你有效地绕过了这个问题-指示MATLAB在函数为零的任何地方放置一个曲面。
请注意,我给出了网格的任意向量
gv
--即函数求值所依据的点。为了得到准确和视觉上令人满意的结果,你可能需要在每个维度上大约50个点,在可能的解决方案的范围内(这在三个维度可能是不同的);例如,使用
您会看到以下图: