利用Matlab符号工具箱求正根

n8ghc7c1  于 2023-01-13  发布在  Matlab
关注(0)|答案(1)|浏览(274)

使用Matlab符号工具箱,考虑如下平方根公式:

syms c;         assume(c,'real');       assumeAlso(c > 0);      
syms d;         assume(d,'real');       assumeAlso(d > 0);      
N = (d^2 + 8*c)^0.5 - d
isAlways(N > 0)

假设c和d都是正的,我的直觉是N应该总是正的。d^2 + 8c〉d^2,所以根应该更大。但后来我同意了Matlab的说法,因为100的平方根实际上都是+10和-10。因此sqrt(100)- 9可以大于或小于0(1或-19)。但我不知道如何告诉Matlab,使用Matlab符号工具箱,我想要d^2 + 8c的正根,而不是负根,我该怎么做呢?我应该用什么命令告诉符号工具箱我想要正根?
为了澄清下面的问题,我希望有一个通用的解决方案来获取一个正的符号Matlab表达式的平方根,并得到正根。因此,如果sqrt(a),其中'a'是一个数学表达式的许多项,我知道是正数,我想返回正根(abs(sqrt(a)))。

zkure5ic

zkure5ic1#

假设可以在符号表达式上设置(参见here),那么assume((d^2 + 8*c)^0.5>0)呢?
EDIT:因为以下命令产生“true”

isAlways((d^2 + 8*c)^0.5)

可以安全地假设符号引擎将表达式(d^2 + 8*c)的平方根评估为正,因此只考虑正根。

相关问题