2013-06-18 2 views
-1

Я хотел бы знать, как я могу получить как положительное, так и отрицательное решение из sqrt в Matlab.Решение Double sqrt в Matlab?

Например, если у меня есть:

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

Так что есть результат, который вы ожидаете получить в этом примере? –

ответ

0

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] 

, который немного медленнее, но, возможно, более читабельным (и на самом деле немного точнее).

Теперь, конечно, если вы можете каким-то образом найти компоненты, фактор приводит к стоимости вашего косинус, то вам не придется иметь дело со всем этим грязным бизнесом конечно ....

1

docs делать что-то конкретное о всегда только обеспечивая положительный квадратный корень, но это, кажется, как справедливое предположение, в этом случае вы можете получить отрицательный квадрат не сказать довольно легко, как это:

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

кстати присваивание sin(a) подобное собирается создать переменную sin, которая будет скрывать функцию sin приводит ко многим possib le, поэтому я настоятельно рекомендую выбрать другое имя переменной.

+0

Извините, возможно, я спросил об этом неправильно. Я работаю на обратной кинематике робота и имеющий уже значение cos_a (а не в!) я найти значения sin_a. Я переписал их, чтобы показать, что они не функции, а переменные, спасибо за примечание Дэн. – Spyros

0

sqrt не решает уравнений, дает только числовой выход. Вам нужно будет сформулировать свое уравнение по мере необходимости, а затем вы можете использовать sqrt(...)-1*sqrt(...), чтобы дать положительные и отрицательные результаты.