• 締切済み

C言語のプログラム教えて!!

二つの積分値の数値解を台形則とシンプソン則により求めるプログラムを作りたいのですがよくわかりません。また、プログラムは曲線上の点数を入力データで与えられるように作り、点数を変えたときの積分値の変化を示すようにしなければいけない。プログラム、入力データ、計算結果が分かるように回答して頂ければありがたいです。

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

#include <stdio.h> #include <math.h> #define N 100 #define A 0.0 #define B 1.0 double f(double x) { return sin(M_PI * x); } int main(void) { double s; double x; int i; s = (f(A) + f(B)) / 2.0; for (i = 1; i < N; i++) { x = A + (B - A) * (double)i / N; s += f(x); } s = s * (B - A) / N; printf("%f\n", s); return 0; } 1つめの式のみ、台形公式のみ、データ入力なし、敢えてコード中のコメントもなし。あまりテストもしていませんから、100%正しいと信じないように。 何かの演習課題のような感じがするので、いくら初心者と言っても、普通なら解くのに必要なことは学習済みだと思うのですが。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

分からないことは何ですか? 逆に、知っていることは何ですか? ・与えられた問題の積分式の表す意味  (2つめの式にはdxがありませんが正しいですか?) ・台形公式やシンプソンの公式 ・Cプログラムでの入力データの与え方 ・Cプログラムでループする方法 ・Cプログラムで小数を扱う方法 ・Cプログラムでsinを使う方法 ・その他

sheva1234
質問者

補足

すみません。2つ目の式のdx忘れてました。 2つの積分式の台形公式とシンプソン公式を用いた場合のプログラムがわかりません。最終的には入力データを与え結果を比較したい。何しろC言語のプログラム自体初心者なもので、あまり理解できていないので、プログラム全体を回答いただければありがたいです。

関連するQ&A

  • C言語のプログラム!

    2つの積分値の数値解を台形則とシンプソン則を用いて求めるプログラムを作りたいのですが、プログラムに台形則とシンプソン則をどのように組み込んだらよいのかわかりません。また、プログラムに入力データで与えられるように作り、点数を変えたときの積分値の変化を示すようにするにはどうしたらよいのかわかりません。回答よろしくお願いします。

  • C言語で台形公式を使った二重積分のプログラム

    台形公式をつかった二重積分の数値計算を行うプログラムをC言語でつくっているのですが、未だ理解が足りず、うまくできていません。 そこで、 •台形公式をつかった二重積分についてわかりやすく説明しているページ。 •台形公式で二重積分を行うプログラムの例があるページ。 •または、台形公式の二重積分(のプログラム)について説明できる方がいれば教えて下さい。 よろしくお願いします。

  • 数値積分のプログラムについて

    開発環境は,C言語です. 数値積分(台形則)についての質問なのですが, Excelファイル(*fp1)から積分したい数値を読み込んで, 台形則の計算をして,違うファイル(*fp2)に結果を出力させる プログラムを作りたいです. サイトなどを調べてみると,関数f(x)を積分するものだけしか 載っていなくて,ファイルから数値だけを読み込み積分する 方法が載ってなくてわかりませんでした. よろしければ,参考になるプログラム例やサイトなど ありましたら教えて下さい.

  • 台形公式を使って解析解を、。

     2 ∫ X^5dx の定積分の解析解を求めるのに台形公式法を使って  0    求めよ。 なんですが、 全然回りの答えと合いません・・ 10.~ に出来るだけ近い数値が解です。 どの様にして求めればいいのでしょうか。 プログラムではなく手計算での求め方お願いします。

  • 積分

    一気に答えだけを表示するシンプソンの公式と台形公式のプログラムは分かったんですが計算過程も出せるその二つのプログラムを教えてください。求めたいのは∫e^-x*xdx(0~∞)の定積分の値です。

  • Bezier曲線の曲線長

    3次のBezier曲線の曲線長を求めたいのですが、 なにぶん数学が苦手でして困っています。 長さを求めるには数値積分を行わないといけないと思うのですが、 どうも計算でつまづいてしまいます。 (シンプソンの公式を使おうと思ったのですが、行き詰まりました。) どなたか良い解法をお教え下さい。お願いします。 最終的にはCでプログラミングしたいので、 それを踏まえた形で教えて頂ければ感謝感激です。。

  • Fortranの問題二問目です。急いでます><

    最初に, (x,y) = (-2, 8), (0, -2), (1, 2), (2, 20) の4点を通る3次曲線の式を,ラグランジュ補間の公式を使って求めよ. (紙と鉛筆で計算すること) 求めた曲線の式について,小さい方の2つの解(x軸と交わる点のx座標) を ニュートン法 により求めて画面に表示 したのち, 求めた曲線と,x軸とで構成される領域で,yの値が正となる部分 (x軸より上,下図のオレンジ色に塗った部分)の面積を シンプソン法で求めて,画面に表示するプログラムを作成しなさい. (実行を確認し,プログラムを貼りつけて送信しなさい.) 注:1つのプログラムを実行するだけで解(面積)を表示すること.   ニュートン法の初期値はプログラム内で定数として設定してよいが,   積分区間は定数をプログラムに記入せず,ニュートン法で求めた値を   利用すること.   つまり,ニュートン法の結果を「積分区間」として用いる.   シンプソン法による積分における区間の分割数は,無駄に大きすぎない   適切な値とすること.(自由に設定してよい) ヒント ラグランジュ補間の公式で求める曲線の式は比較的シンプルなものになる. (あまり複雑な式になってしまうようなら計算ミスをしている) 4点の座標を代入して,曲線の式の正否を確認せよ. ニュートン法で計算するために,曲線の式の微分も必要です.

  • 数値積分

    数値積分で e^(-x)/√xを[0,1]の範囲で数値積分するのですが、 f(0)の値が無限になり、台形公式やシンプソンの公式が使えません。 この場合どのように解けばよいんですか?

  • C言語のプログラムの問題なんですが・・・

    データを入力して4次行列式を計算させるプログラムを作れって問題なんですがどなたか教えてもらえませんか? 載ってるサイトとかないですかね?

  • C言語:forを用いたプログラム

    6時間格闘した結果皆さんに聞くことにさせていただきました; よければ回答、またはヒントを与えてくださるとうれしいです。 自然数nを入力すると,1からnまで出力するプログラムを,for文を用いて作成せよ.ただし,2の倍数の時は数値の右側に*を,3の倍数の時は数値の右側に#を表示させよ ちなみにまだまだ勉強足らない初心者です。