掲示板利用宣言

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

 私は

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

掲示板2

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

No.25787

C言語で数値計算
投稿者---asdf(大学2年)(2006/01/29 16:58:54)


【環境】WindowsXP ・CPad for Borland C++compiler

学校の課題で、「モンテカルロ法を使って数値積分せよ(問題は各自自由)」
というのが出され、自分は重積分を解く事にしました。
その際、モンテカルロ法での結果と比較するために、数値積分の方法の一つであるシンプソン法を使おうと思いましたが、シンプソン法での重積分のプログラムを作成できません。
どんな感じにすればよいですか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:C言語で数値計算 25788 asdf(大学2年) 2006/01/29 17:01:21
<子記事> Re:C言語で数値計算 25790 RAPT 2006/01/29 17:59:49


No.25788

Re:C言語で数値計算
投稿者---asdf(大学2年)(2006/01/29 17:01:21)


追加
以前、数値積分を解くのに作ったシンプソン法

#include<stdio.h>
#include<math.h>
double functv(double x);
int main(void){
int k,n=100;
double dh,s,xk,xa=0.0,xb=1.0;
dh=(xb-xa)/(double)n;
s=functv(xa);
for(k=1;k<2*n;k++){
xk=xa+dh*(double)k;
if(k%2!=0){s=s+4.0*functv(xk);}
else{s=s+2.0*functv(xk);} }
s=s+functv(xb);
s=dh*s/3.0;
printf("I= %f\n",s);
return 0;}
double functv(double x){
return 1.0/(x+1.0);}


この投稿にコメントする

削除パスワード

No.25789

Re:C言語で数値計算
投稿者---RAPT(2006/01/29 17:58:55)


// とても他人に読んでもらえるようなコードじゃないですね。
// 単純整形しておきました。

#include <stdio.h>
#include <math.h>

double functv(double x);

int main(void)
{
    int k, n = 100;
    double dh, s, xk, xa = 0.0, xb=1.0;
    dh = (xb - xa) / (double)n;
    s = functv(xa);
    for(k = 1; k < 2 * n; k++){
        xk = xa + dh * (double)k;
        if(k % 2 != 0){
            s = s + 4.0 * functv(xk);
        }
        else{
            s = s + 2.0 * functv(xk);
        }
    }
    s = s + functv(xb);
    s = dh * s / 3.0;
    printf("I= %f\n", s);
    return 0;
}

double functv(double x)
{
    return 1.0 / (x + 1.0);
}

// 以下、感想
// ・無駄なキャストもありますね。
// ・何となくBASICっぽい書き方にも見えます。



この投稿にコメントする

削除パスワード

No.25790

Re:C言語で数値計算
投稿者---RAPT(2006/01/29 17:59:49)


で? C言語以外でなら計算できるのですか?


この投稿にコメントする

削除パスワード

No.25794

Re:C言語で数値計算
投稿者---asdf(大学2年)(2006/01/29 19:42:04)


>で? C言語以外でなら計算できるのですか?
手計算なら・・・

ではなく、シンプソン法では重積分解くの無理なんでしょうか?


この投稿にコメントする

削除パスワード

No.25795

Re:C言語で数値計算
投稿者---RAPT(2006/01/29 20:18:52)


>手計算なら・・・
それをコードに落とすだけでは?

>ではなく、シンプソン法では重積分解くの無理なんでしょうか?
知りません。C言語の質問には答えられますが、数学はよく分かりません。


この投稿にコメントする

削除パスワード

No.25796

Re:C言語で数値計算
投稿者---asdf(大学2年)(2006/01/29 20:47:56)


>>手計算なら・・・
>それをコードに落とすだけでは?
>
>>ではなく、シンプソン法では重積分解くの無理なんでしょうか?
>知りません。C言語の質問には答えられますが、数学はよく分かりません。

すいません。一度出直してきます。
その時は、またお願いします。


この投稿にコメントする

削除パスワード

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