2016-05-13 5 views
2

私は不合理な数字の数字を使用するmatlabコードを書いています。私は$ \ sqrt(1 + x)$のテイラー展開を使ってそれを見つけようとしました。大量に分割することはMatlabにとっては悪い考えかもしれないので、この方法は私にとっては良い方法ではないようです。

これを行う簡単で効率的な方法があるのだろうか?

+0

は、いくつかのコードといくつかの例を投稿してください、入力と所望の出力は何ですか。お返事ありがとうございます – tim

+0

高速応答ありがとう。私はこの形式で使う必要があります:output = findNthDigit(x、n)それらはすべて整数になります。関数はxをsqrt(x)と見なし、n番目の桁を出力として返します。 – thomass

+0

私はpiのアルゴリズム(BBPとして知られている)があることを知っていますが、もっと多くのオプションが必要です。 – thomass

答えて

3

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 
+0

私はn番目の数字が必要であると言っていましたが、このバージョンもまた私にとって有益かもしれません。ありがとう、ありがとう。 – thomass

+1

これは最後にn番目の数字を示します:-)それは_decimal_数字ではなく、_significant_数字です –

1

コンピュータ時代よりずっと前に発見されたdigit-by-digit root calculationの方法が必要なようです。

+0

あなたの応答を高く評価してくれてありがとう、私はそれを調べて、有望そうです:) – thomass

関連する問題