当我想要小数符号工具箱执行有理数

4视图(30天)
我使用符号工具箱生成分析衍生品优化问题。但是通常我遇到类似以下模型:
信谊m1
有趣= 0.123123 * m1
MATLAB生成以下的地方:
有趣= (8871947150731801 * m1) / 72057594037927936
我写分析导数m文件编程的方式,我不能把一个值代入m1事先是未知的,因此我剩下一个大有理数!
所以我的问题,是有办法迫使符号工具箱使用十进制浮点数吗?这将使我的导数文件短和容易检查。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年6月26日
数字会自动转化为理性的,除非你有特别吩咐别的东西。你使用 信谊 “国旗”。国旗仅适用于当数据被转换。在你的情况下,语法
信谊m1
有趣=符号(0.123123,' d ')* 1
注意:当一个象征性的数字被指定为小数,那么当前数字适用于它,它会结合其他常量的方式只使用数字。例如如果你碰巧有一个有理数的表达式被乘以小数,然后理性会结合形成一个小数的小数点显示数字,失去理性表达的隐含的精度。
使用十进制数字代替理性可以让它很难或者不可能解决方程,或可能会引入错误的答案金宝搏官方网站 似乎 来验证,但完全是假的。会发生这些问题尤其是方程是接近于零的一面但低于它,另一边是接近于零但上面:舍入可以区别似乎是“接近”被接受为0,而实际上一个更详细的分析可能显示,双方总是有相反的迹象和从未达到或交叉0。
因此分析更好的使用尽可能合理,只有转换显示(或者,如果一个演示目的 必须 ,找一个数值解不易于分析的东西。)可以转换为演示目的使用vpa(),或者,如果表达式现在只涉及常数,使用双()转换为一个双精度数。
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2013年4月4日
当我写到最后,
一个可以转换为演示目的使用vpa()——或者,如果表达式现在只涉及常量,使用双()转换为一个双精度数。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!