数値解析 課題3 ( 12月7日出題 )
課題
-
微分方程式
y′=f(x,y), y(x0)=y0
の、区間 x0≦x≦a における数値解を以下の設定で計算するプログラムを作成せよ。
- クッタの 3/8 公式を用いる。
- f(x,y) は double f(double x, double y) のように関数宣言して用いる。
- 区間 x0≦x≦a 全体の分割数 N を設定し、
x の刻み幅は h=a−x0N とする。
-
微分方程式
y′=y×cos(x), y(0)=1
に対して、区間 0≦x≦1, 分割数 N=8, 16, 32, 64 で (1) のプログラムを実行し、
厳密解 y(x)=esin(x) と比較して動作確認せよ。
-
微分方程式
y′=cos(x)×sin(y), y(0)=1
の解 y(x) の、x=1 での値 y(1) を、小数点以下10桁まで推定せよ。
注意
- プログラムを共同製作した場合はその旨を必ず明記すること。
- レポートには以下の項目を含めること :
- 計算内容
- プログラムリスト
- 実行結果
( 出力を全て載せるのではなく、適切にまとめること。)
- 考察
提出方法
- メールにて shiota@is.kochi-u.ac.jp 宛て。
- 件名は [自分の学籍番号] 数値解析課題3
- テキストでも、WORD, PDF 等のドキュメントでも可。
提出期限
- 12月21日(水) 10:20
- 原則として締め切り厳守
課題プリント ( このページと同じ内容の pdf です。)
今回の課題のヒント
今回の課題のプログラムは、たとえばこんな感じに書けばできます。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double f(double x, double y){
return f(x,y) の式 ;
}
int main( void ){
変数宣言
x0, a, N, h 等を設定
x, y の初期化
for(...){
f(x,y), ˆy, ˆf, ˜y, ˜f, ˉy, ˉf をこの順番に計算
x, y を更新
}
y を出力
return 0;
}