在Matlab中绘制一般方程中的锥面

时间:2014-12-08 00:23:10

标签: matlab plot draw

如何在以下公式中绘制圆锥曲面:

ax^2+by^2+cz^2+dxy+exz+fyz+gx+hy+iz+k=0

在Matlab中好吗?

2 个答案:

答案 0 :(得分:1)

这不是你问题的完整答案(但是评论太笨重了),希望它可以帮助你继续。关于你对z = f(x,y)的关注,你可以得到它为z求解一个简单的二次方程:

clear all;
a = - 90.53;
b = @(x,y)(66.66*x - 33.67*y  + 50429.65);
c = @(x,y)( -11.56*x.^2 - 10.24*y.^2 + 16.43*x*y - 19156.33*x  + 7731.95*y  - 6899727.01);
D = @(x,y)(b(x,y).^2 - 4 * a * c(x,y));
z1  = @(x,y)( ( -b(x,y) + sqrt(D(x,y) )) / (2*a) );
z2  = @(x,y)( ( -b(x,y) - sqrt(D(x,y) )) / (2*a) );

注意,对于某些(x,y),D< 0和z1和z2将是复杂的,这些点对应于锥体外的空间。您可以选择相关的子空间,如

xD = -100:100;
yD = arrayfun(@(x)(fzero(@(y)(D(x,y)),0.0)),xD);

现在你需要使用定义X,Y,Z矩阵并使用surf来绘制它。如果有效,请告诉我,否则我会稍后再试。

答案 1 :(得分:0)

如果其他人正在寻找这个:我的问题是

的重复

https://stackoverflow.com/a/15100406/3179989