質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

674閲覧

c++でのテイラー展開

ruru_

総合スコア11

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/06/12 01:52

c++を使ってe^x=1+x/1!+x^2/2!+…=Σ[n=0→∞]x^n/n!を10^(-10)の精度でx=0.2から0.2きざみでx=10.0まで計算したくてプログラムを以下のように書きました。
#include<stdio.h>
#include<math.h>
int main(void){
int n; (項数)
int k; (項数カウント)
double x; (e^xのx)
double xk; (x^n/n!)
double e; (テイラー展開の部分和)
double ex; (exp(x))
double er; (exp(x)との差)

e = xk = 1,n=0,ex=1.0,er=1.0;
for(x=0.2;x<=10.0;x+=0.2){
for(k=1;k<=n;k++){
xk *= x/k;
e += xk;
}

ex = exp(x);
er = fabs(e-ex);
}
このように書いてコンパイル自体は通ったのですが、思うような結果が出なくて困っている状態です。
(項数)などは、実際にプログラムには書いてないです。
どこをどのように直せば思うような結果が得られますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/06/12 02:08

あなたの思うような結果と、実際に出ている結果を提示しましょう また、 このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答2

0

ベストアンサー

C

1#include <stdio.h> 2#include <math.h> 3 4#define F "%-11.10g" 5 6double f(double x) 7{ 8 double y = 1, t = 1; 9 for (int n = 1; t > y * 1e-10; n++) y += t *= x / n; 10 return y; 11} 12 13int main(void) 14{ 15 for (int i = 2; i <= 100; i += 2) { 16 double x = i * 0.1; 17 printf("x =%4.1f: f(x) = " F ", exp(x) = " F "\n", x, f(x), exp(x)); 18 } 19}

・#define F "%-13.12g" にすると、精度が 10桁だと分かるでしょう。

投稿2019/06/12 04:16

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

e = xk = 1,n=0,ex=1.0,er=1.0;

各xの値毎にeを計算したいのでしょうから
e = xk = 1
これを,xに関するforの中に入れる必要があるのでは.

あと,n=0だとkに関するforが回りませんよ.

誤差erを求める部分もx毎に行う事柄だと思います.

「あるxの値に対する e^xの近似値を求める」という関数でも作れば
見通しが良くなってミスが減るんじゃないでしょうか.

投稿2019/06/12 02:07

編集2019/06/12 02:12
fana

総合スコア11652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問