2014-05-05 14 views
0

我是一名微積分學生,我經常使用Sage檢查工作。通常,有必要允許兩個表達式之間的恆定差異。例如,當找到抗衍生物時,兩個結果ln(2*x)ln(x)是等價的,但當然bool(ln(2*x) == ln(x))返回False。有沒有辦法定義變量C以便bool(ln(2*x) == ln(x) + C)返回True如何在Sage中允許任意常量

回答

2

嗯,這是一個非常好的問題。據我所知,答案是否定的。在任何情況下,這將是任意計算成本昂貴總是檢查東西是否相等直到一個常數...

這就是說,這是煩惱你的情況 - 也爲更復雜的情況;如果您選擇不同的方法來查找複雜的觸發功能組合,則取決於您使用的簡化方式,這會一直髮生。

但是...我想知道它是否重要。難道你只是檢查有問題的函數的衍生物看?你必須小心一些域名,但你實際上說的是「我想檢查它是否與我得到的答案一樣」,當你需要的是「我得到的答案和一個Sage給出的答案是相同的衍生物「。事實上,就像使用乘法檢查長分區是最容易的一樣,使用衍生工具檢查抗衍生物是最容易的。

免得你認爲這是一個copout,here is a fun interactive thing to try,我希望在你的用例中起作用。

+0

好主意!它適用於我給出的例子。 'bool(diff(f,x)== diff(g,x))'比'diff(f,x)更好.simplify_full()== diff(g,x).simplify_full()'?我不確定'bool()'比較是如何實現的,但是我之前在成功使用過的表達式上沒有使用常量。在數學等價表達式上調用'simplify_full()'並不能保證結構上等價的答案,我認爲_ ==是正常實現的'=='操作符,儘管我不確定。 – Matthew

+0

當然,「布爾」在那裏可能是有用的。重點是有時你需要將其從「符號方程」改爲比較。 – kcrisman

相關問題