我正在尝试自动简化我的MATLAB输出,但是到目前为止,我只能手动实现它。
执行代码后,将显示以下数据:
((yf^2*((138454006717812460917559315575*a^2)/20282409603651670423947251286016 + 20)^2 - 20*yf^2*((19169511976216058056763775016476506759529226598462437580625*a^4)/6582018229284824168619876730229402019930943462534319453394436096 - (39872549173714278543306705994157*a^2)/40564819207303340847894502572032 + 25))^(1/2) - (- (138454006717812460917559315575*a^2)/20282409603651670423947251286016 - 20)*yf)/(10*yf^2)
其中“ yf”和“ a”是符号变量。但是,在代码的一部分期间,这些变量被分配了特定的值。相应地,如果我将上面的数据复制并放回MATLAB中,那么它将确认'yf'和'a'具有特定的值,并为我提供以下内容:
41734615734664636717495154985753713986168093218527630622251194499100^(1/2)/6788754250849186019091129738088810 + 1362181378384807202322670643292642/678875425084918601909112973808881
哪个更好,因为变量不见了。但是,仍然需要看大量的数据,如果我重复将这个答案放回到MATLAB中的过程,那么最终它会吐出2.9581的答案。
如何使该过程自动化,以便在执行代码时立即获得2.9581的提示?
一种选择是使用eval
。只需输入您的表达式就可以在一行中完成此操作。
在下面的示例中,eval
在yf
a
分配之前使用返回相同的表达式。但是,在分配了它们之后,给出了一个数字答案:
syms yf a
expression = ((yf^2*((138454006717812460917559315575*a^2)/20282409603651670423947251286016 + 20)^2 - 20*yf^2*((19169511976216058056763775016476506759529226598462437580625*a^4)/6582018229284824168619876730229402019930943462534319453394436096 - (39872549173714278543306705994157*a^2)/40564819207303340847894502572032 + 25))^(1/2) - (- (138454006717812460917559315575*a^2)/20282409603651670423947251286016 - 20)*yf)/(10*yf^2);
eval(expression)
yf = 1.0;
a = 2.0;
eval(expression)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句