我想知道如何从 Matlab 中的 sqrt 获得正解和负解。
例如,如果我有:
sin(a) = sqrt(1-cos(a)^2);
文档没有具体说明总是只提供正平方根,但这似乎是一个公平的假设,在这种情况下,您可以像这样很容易地得到负平方:
p = sqrt(1-cos(a)^2);
n = -sqrt(1-cos(a)^2);
顺便说一句,分配给sin(a)
like 将创建一个名为的变量,该变量sin
将隐藏sin
导致许多可能错误的函数,因此我强烈建议选择不同的变量名称。
sqrt
不解方程,只给出数值输出。您将需要根据需要制定方程式,然后您可以使用它sqrt(...)
-1*sqrt(...)
来给出正负输出。
MATLAB(以及我所知道的所有其他编程语言)仅在调用或等效时返回主平方根。x
sqrt(x)
你如何写出数学的平方根,是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]
这有点慢,但可能更具可读性(实际上也更准确)。
现在当然,如果你能以某种方式找到其商导致你的余弦值的组件,那么你当然不必处理所有这些混乱的事情......