Matlab の sqrt から正と負の両方の解を取得する方法を知りたいです。
たとえば、私が持っている場合:
sin(a) = sqrt(1-cos(a)^2);
ドキュメントは、常に正の平方根のみを提供することについて具体的には何も述べていませんが、次のように負の平方根を非常に簡単に取得できる場合は、公正な仮定のように思えます。
p = sqrt(1-cos(a)^2);
n = -sqrt(1-cos(a)^2);
ところで、 like に割り当てるとsin(a)
、という変数が作成され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]
これは少し遅いですが、おそらく読みやすくなっています (実際にはもう少し正確です)。
もちろん、その商がコサインの値になるコンポーネントを何らかの方法で見つけることができれば、もちろん、この厄介なビジネスすべてに対処する必要はありません....