私は不合理な数字の数字を使用するmatlabコードを書いています。私は$ \ sqrt(1 + x)$のテイラー展開を使ってそれを見つけようとしました。大量に分割することはMatlabにとっては悪い考えかもしれないので、この方法は私にとっては良い方法ではないようです。
これを行う簡単で効率的な方法があるのだろうか?
私は不合理な数字の数字を使用するmatlabコードを書いています。私は$ \ sqrt(1 + x)$のテイラー展開を使ってそれを見つけようとしました。大量に分割することはMatlabにとっては悪い考えかもしれないので、この方法は私にとっては良い方法ではないようです。
これを行う簡単で効率的な方法があるのだろうか?
Symbolic Toolboxをお持ちの場合は、vpa
となります。
x = '2'; %// define x as a *string*. This avoids loss of precision
n = 100; %// desired number of *significant* digits
result = vpa(['sqrt(' x ')'], 100);
結果はsymbolic variableです:あなたがしたい有効桁数を指定することができます。必要な場合は、文字列に変換します。上記の例で
result = char(result);
、
result =
1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573
私はn番目の数字が必要であると言っていましたが、このバージョンもまた私にとって有益かもしれません。ありがとう、ありがとう。 – thomass
これは最後にn番目の数字を示します:-)それは_decimal_数字ではなく、_significant_数字です –
コンピュータ時代よりずっと前に発見されたdigit-by-digit root calculationの方法が必要なようです。
あなたの応答を高く評価してくれてありがとう、私はそれを調べて、有望そうです:) – thomass
は、いくつかのコードといくつかの例を投稿してください、入力と所望の出力は何ですか。お返事ありがとうございます – tim
高速応答ありがとう。私はこの形式で使う必要があります:output = findNthDigit(x、n)それらはすべて整数になります。関数はxをsqrt(x)と見なし、n番目の桁を出力として返します。 – thomass
私はpiのアルゴリズム(BBPとして知られている)があることを知っていますが、もっと多くのオプションが必要です。 – thomass