Matlab中的双sqrt解决方案?

时间:2013-06-18 08:37:58

标签: matlab sqrt

我想知道如何从Matlab中的sqrt获得正面和负面解决方案。

例如,如果我有:

sin(a) = sqrt(1-cos(a)^2); 

3 个答案:

答案 0 :(得分:1)

docs没有说明总是只提供正平方根的具体内容,但它看起来似乎是一个公平的假设,在这种情况下你可以很容易地得到负方形:

p = sqrt(1-cos(a)^2);
n = -sqrt(1-cos(a)^2);

btw分配给sin(a)这样会创建一个名为sin的变量,它会隐藏导致许多可能错误的sin函数,因此我强烈建议您选择其他变量名。

答案 1 :(得分:0)

sqrt不解决方程式,只给出数值输出。您需要根据需要制定等式,然后使用sqrt(...) -1*sqrt(...)来提供正负输出。

答案 2 :(得分:0)

MATLAB(以及我所知道的所有其他编程语言)在调用x或同等版本时仅返回sqrt(x)的{​​{1}}。

如何以数学方式编写 x的平方根

s = ±√x

这只是编写整个解决方案集的简写

s = {+√x -√x}

在MATLAB中,你的编写与最后一种情况相同,但语法略有不同,

s = [+sqrt(x) -sqrt(x)]

如果你“分解”sqrt

,可以更有效地计算
s = sqrt(x) * [1 -1]

所以,对于你的情况,

s = sqrt(1-cos(a)^2) * [1 -1]

或者,如果你愿意的话,

s = sin(acos(a)) * [1 -1]

这有点慢,但可能更具可读性(实际上也更准确一些)。

现在,当然,如果你能以某种方式找到其商的结果与余弦值相对应的组件,那么你当然不必处理所有这些混乱的业务....