veclength = @(vec) sqrt(dot(vec, vec));
normalvector = @(surf, u, v) simplify(cross(diff(surf, u), diff(surf, v)));
tangentplane = @(surf, u, v, x, y, z) dot([x, y, z] - ...
surf, normalvector(surf, u, v)== 0);
unitnorm = @(surf, u, v) normalvector(surf, u, v)/...
veclength(normalvector(surf, u, v));
E = @(surf, u, v) dot(diff(surf, u), diff(surf, u));
F = @(surf, u, v) dot(diff(surf, u), diff(surf, v));
G = @(surf, u, v) dot(diff(surf, v), diff(surf, v));
e = @(surf, u, v) dot(unitnorm(surf, u, v), diff(surf, u, 2));
f = @(surf, u, v) dot(unitnorm(surf, u, v), diff(surf, u, v));
g = @(surf, u, v) dot(unitnorm(surf, u, v), diff(surf, v, 2));
shapeoperator = @(surf, u, v) ((E(surf,u,v)*G(surf,u,v)-F(surf,u,v)^2)^(-1)) ...
*[[e(surf,u,v)*G(surf,u,v)-f(surf,u,v)*F(surf,u,v), f(surf,u,v)*E(surf,u,v) - e(surf,u,v)*F(surf,u,v)]; ...
[f(surf,u,v)*G(surf,u,v) - g(surf,u,v)*F(surf,u,v), g(surf,u,v)*E(surf,u,v) - f(surf,u,v)*F(surf,u,v)]];
principalcurves = @(surf, u, v) eig(shapeoperator(surf, u, v));
gausscurv = @(surf, u, v) det(shapeoperator(surf, u, v));
meancurv = @(surf, u, v) (1/2)*trace(shapeoperator(surf, u, v));
syms u v real; monkey = [u^3 - 3*u*v^2, [-2 2 -2 2]];
principalcurves(monkey, u, v)
simplify(ans, 'Steps', 30)
gausscurv(monkey, u, v)
simplify(ans, 'Steps', 30)
meancurv(monkey, u, v)
simplify(ans, 'Steps', 30)
我在显示“ principalcurves(monkey,u,v)”的行上收到此错误:
Error using symengine
Division by zero.
Error in sym/privBinaryOp (line 991)
Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
Error in ^ (line 322)
B = privBinaryOp(A, p, 'symobj::mpower');
Error in Untitled>@(surf,u,v)((E(surf,u,v)*G(surf,u,v)-F(surf,u,v)^2)^(-1))*[[e(surf,u,v)*G(surf,u,v)-f(surf,u,v)*F(surf,u,v),f(surf,u,v)*E(surf,u,v)-e(surf,u,v)*F(surf,u,v)];[f(surf,u,v)*G(surf,u,v)-g(surf,u,v)*F(surf,u,v),g(surf,u,v)*E(surf,u,v)-f(surf,u,v)*F(surf,u,v)]]
Error in Untitled>@(surf,u,v)eig(shapeoperator(surf,u,v))
查找其他曲线的主曲线没有问题。但是,这种猴子鞍形形状由于某种原因导致出现错误消息。