Я хотел бы знать, как я могу получить как положительное, так и отрицательное решение из sqrt в Matlab.Решение Double sqrt в Matlab?
Например, если у меня есть:
sin(a) = sqrt(1-cos(a)^2);
Я хотел бы знать, как я могу получить как положительное, так и отрицательное решение из sqrt в Matlab.Решение Double sqrt в Matlab?
Например, если у меня есть:
sin(a) = sqrt(1-cos(a)^2);
MATLAB (и каждый другой язык программирования, который я знаю) возвращает principal square root из x
при вызове sqrt(x)
или его эквиваленте.
Как бы написать на квадратный корень x
математически, является
s = ±√x
который просто сокращение для написания целого набора решений
s = {+√x -√x}
В MATLAB, вы бы напишите его так же, как в этом последнем случае, но с немного отличающимся синтаксисом,
, который может быть вычислен более эффективно, если вы "вынесем" sqrt
:
s = sqrt(x) * [1 -1]
Таким образом, для случая,
s = sqrt(1-cos(a)^2) * [1 -1]
или, если вам так хочется,
s = sin(acos(a)) * [1 -1]
, который немного медленнее, но, возможно, более читабельным (и на самом деле немного точнее).
Теперь, конечно, если вы можете каким-то образом найти компоненты, фактор приводит к стоимости вашего косинус, то вам не придется иметь дело со всем этим грязным бизнесом конечно ....
docs делать что-то конкретное о всегда только обеспечивая положительный квадратный корень, но это, кажется, как справедливое предположение, в этом случае вы можете получить отрицательный квадрат не сказать довольно легко, как это:
p = sqrt(1-cos(a)^2);
n = -sqrt(1-cos(a)^2);
кстати присваивание sin(a)
подобное собирается создать переменную sin
, которая будет скрывать функцию sin
приводит ко многим possib le, поэтому я настоятельно рекомендую выбрать другое имя переменной.
Извините, возможно, я спросил об этом неправильно. Я работаю на обратной кинематике робота и имеющий уже значение cos_a (а не в!) я найти значения sin_a. Я переписал их, чтобы показать, что они не функции, а переменные, спасибо за примечание Дэн. – Spyros
sqrt
не решает уравнений, дает только числовой выход. Вам нужно будет сформулировать свое уравнение по мере необходимости, а затем вы можете использовать sqrt(...)
-1*sqrt(...)
, чтобы дать положительные и отрицательные результаты.
Так что есть результат, который вы ожидаете получить в этом примере? –