問題タブ [eulers-number]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ でのオイラー数の計算
オイラー数 e を計算するプログラムを書きなさい。これを行うには、まずパラメーター n を受け取り、結果 (1+1/n) nを返す関数を作成します。この関数の極限は、n が無限大に近づくにつれて e に近づきます。メイン プログラムで、n の値を増やしながらこの関数を呼び出すループを記述します。各反復で、n を 2 で乗算し (毎回 n に 1 を追加するだけでは、アルゴリズムは機能しません)、新しい近似と以前の近似の差が 1e-8 未満になったら停止します。これでかなり良い見積もりができました。したがって、main() で、最適な近似値とそれを生成した数 n を出力します。
for ループまですべて実行しました。新しい数値と前の数値がほぼ同じになった後、for ループを停止する方法がよくわかりません。
これが私の機能です:
そして、これがメインメソッドの for ループです。私が問題を抱えている場所です:
編集:ソリューションが投稿されているので、ここではどのように見えるか:
出力:
c++ - オイラー数展開
私が上に持っているのは、これまでに持っているコードです。合計と残りは、まだ構築段階にあるため、意図的に未完成のままにしてあります。
ここで、オイラー数の展開を行う必要があります。これは、結果を複数の部分に分割し、関数を使用して結果を計算するために x[n] のような系列を使用することになっています。
それによると、マクローリン展開の特定の部分を見つけて計算する必要があります。
したがって、e=1+x+(1/2!)*x などの X は常に 1 となり、e=1+1+1/2!+1/3!+1/n! となります。計算する
プログラムは、N の順に計算する必要があります。
したがって、N が 1 の場合、対応する階乗除算部分のみが計算されます。つまり、変数の一部は x=1.00000000~ となる計算結果を保持し、もう一方はこれまでの実際の合計である e=2.000000~ を保持します。
N=2 x=1/2! の場合、e=前の e+x
N=3 x=1/3! の場合、e=前の e+x
N の最大数は、結果が計算されるたびに 29 ですx[1] x[2] x[3]
。30 ~ 35 桁の精度がすべて満たされるまで、ドットの後のすべての数値を個別の変数に保持する必要があります。なのでプリントアウト時はN=2の場合
x[0].x[1]x[2]x[3]~ は 0.5000000000000000000 として出力される必要があります。ここで、x[0] はドットの上の値をx[1~3]
保持し、残りをそれぞれ 5 桁で保持します。
ええ、私の説明が下手で申し訳ありませんが、これが求めているものです。すべての配列は Int である必要があり、他の配列を使用することはできません。目的に反するため、bigint を使用することはできません。
私が抱えているもう1つの問題は、操作を行っている間、7日までうまくいくことです。8日から始めて 負の数を出さないと続きません。
for N=8
00002480158730158730158730 である必要があります。代わりに、00002 48015 -19220 -41904 30331 53015 -19220 を取得します。
これは明らかに int の制限によるものであり、その部分で の値を取得するために 1936000000%40320 を実行するため、a[3]
35200 を 100000 倍して 3520000000/40320 を計算しますが、a[3] の値は整数の制限、これを修正する方法はありますか? これには double や Bigint を使用できないため、回避策があれば教えていただければ幸いです。
r - R プログラミング: オイラー数を取得するにはどうすればよいですか?
たとえば、R に値 e^2 を入力するにはどうすればよいでしょうか。
c# - C# は大きな負の数を取ります。正の値として
追跡するために、コード内でいくつかの計算を実行すると、次のような結果が得られます。7.6742332E-30、この値を double 変数に格納します。たとえば、double result = 7.6742332E-30;
後でこの値が 0 より大きいかどうかを確認すると、7.6742332.
私の質問は、なぜ E-30 が考慮されていないのか、どうすればこれを解決できるのか?
どんなアドバイスも素晴らしいと思います。どうもありがとうございます。
matlab - 画像の上流の凹面と凸面の数とともに、画像のオイラー数を見つける必要があります
MATLAB を使用しています。これは私が書いたコードです
オイラー数は示されていますが、くぼみの数は示されていません。最後の部分で何かが足りないことはわかっています。私が欠けているものを説明してもらえますか?
ありがとう
c - 私のコードの何が問題なのですか? C でオイラー数 e を計算しようとすると、間違った値が出力されますか?
e の 2 つの連続する値の差が 0.0000001 未満になると終了するループを使用して、C でオイラー数を概算しようとしています。得られる値は 2.99 です。反復ごとに、e がそれ自体の以前の値 (e1 に保持されている) と比較され、差が 0.0000001 より大きい場合、別の項 1/( が追加されるように設定してみました。 n!)。問題は何ですか?私はプログラミングが初めてなので、アドバイスや批評をいただければ幸いです。