掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.29029

台形公式の問題
投稿者---kou(2006/11/24 12:31:19)


台形公式によると定積分値は
 b     h
∫ f(x)= ―[ f(a0)+f(an) + 2( f(a1)+f(a2)+..+f(an-1)] 
 a     2

        b−a
但し、h=―――― a顱瓧+ih   と近似できる。
         n

n=1000としてこの公式を使って
 1    4
∫ ―――― dx   
 0 1+(x*x)
の近似値の作成Cプログラムがわかりませんどなたかお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:台形公式の問題 29035 ぷはぁ 2006/11/24 13:41:45


No.29035

Re:台形公式の問題
投稿者---ぷはぁ(2006/11/24 13:41:45)


こんな感じ?

#include <stdio.h>

double f(double x);

int main(void)
{
    int n = 1000, i;
    double a = 0, b = 1, h = (b - a) / n, s = 0;
    
    s += f(a) + f(b);
    for (i = 1; i <= n - 1; i++)
        s += f(a + h), a += h;
    s *= h / 2;
    printf("s=%f\n", s);
    return 0;
}

double f(double x)
{
    return 4 / (1 + x * x);
}





この投稿にコメントする

削除パスワード

No.29037

Re:台形公式の問題
投稿者---かずま(2006/11/24 14:08:18)


> こんな感じ?

残念ながら、間違っています。結果はπになります。
f(a1)〜f(an-1) の値は2倍しないといけません。


この投稿にコメントする

削除パスワード

No.29039

Re:台形公式の問題
投稿者---ぷはぁ(2006/11/24 14:25:12)


>f(a1)〜f(an-1) の値は2倍しないといけません。

あちゃ〜、うっかりしてました。
というわけで…

#include <stdio.h>

double f(double x);

int main(void)
{
    int n = 1000, i;
    double a = 0, b = 1, h = (b - a) / n, s;
    
    s = f(a) + f(b);
    for (i = 1; i <= n - 1; i++)
        s += 2 * f(a + h), a += h;
    s *= h / 2;
    printf("s=%f\n", s);
    return 0;
}

double f(double x)
{
    return 4 / (1 + x * x);
}




この投稿にコメントする

削除パスワード

No.29071

Re:台形公式の問題
投稿者---kou(2006/11/27 15:41:18)


コンパイル時にプログラムの12行目の
s += 2 * f(a + h), a += h;
の部分が invalid lvalue in assignment
とエラーが出てしまいコンパイルできません。


この投稿にコメントする

削除パスワード

No.29072

Re:台形公式の問題
投稿者---ぷはぁ(2006/11/27 15:59:31)


そんなはずはないけれど…。
No.29039のコードをコピー&ペーストして、もう一度試してみるか、
それでもダメなら、下のコードを使うかのどちらかでしょう。

#include <stdio.h>

double f(double x);

int main(void)
{
    int n = 1000;
    double a = 0, b = 1, h = (b - a) / n, s;
    
    s = f(a) + f(b);
    for (n--; n--;) {
        s += 2 * f(a + h);
        a += h;
    }
    s *= h / 2;
    printf("s=%f\n", s);
    return 0;
}

double f(double x)
{
    return 4 / (1 + x * x);
}





この投稿にコメントする

削除パスワード

No.29073

Re:台形公式の問題
投稿者---kou(2006/11/27 16:42:51)


すいません。少々入力をミスっていたようです。
問題なくできました。
ぷはぁさん申し訳ありませんでした。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧