我注意到在符号矩阵中替换了数字'float'
之后,转换是一个具有非常大值的小数形式,我想避免这种情况:
A=(uvw(1,:)-bMat(1,:)).^2+(uvw(2,:)-bMat(2,:)).^2+(uvw(3,:)-bMat(3,:)).^2-legStroke.^2;
A=subs(A,[x,y,z,phi,theta,psi],...
[1.37,0.0,0.0,degtorad(0.0),degtorad(-1.32),degtorad(0.0)]);
A=simplify(A)
我得到以下结果:
A=[((9004809005642893*p1x)/9007199254740992 - b1x + 137/100)^2-l1^2 +(44086462975326147772185208371001*p1x^2)/83076749736557242056487941267521536 + ...
我尝试使用sym(A,'d')
或类似的,遵循网络上的一些提示,但我收到此错误消息:
sym中的错误> tomupad(第2232行)
假设(S,x.s,一个);
答案 0 :(得分:0)
如果sym(A,'d')
已经是符号表达式(即,根据未知符号变量,类A
或sym
),则无法应用symfun
。 sym(A,'d')
的目的是将数值和数组转换为符号形式。
您有两种选择。
1。使用sym(A,'d')
之类的内容将数值转换为不精确的符号十进制格式,然后将它们合并到符号表达式中。在某些情况下,这会导致准确性下降。
2。使用variable precision arithmetic将您的确切符号表达式转换为最终的浮点格式,即vpa(A)
。此方法应该更准确,因为您的符号计算将完全完成(但是,您仍然需要小心如何将初始转换为符号)。