Loading [MathJax]/jax/output/CommonHTML/jax.js

数値解析 課題3 ( 12月7日出題 )

課題

  1. 微分方程式
    y=f(x,y),  y(x0)=y0
    の、区間 x0xa における数値解を以下の設定で計算するプログラムを作成せよ。
    1. クッタの 3/8 公式を用いる。
    2. f(x,y) は  double f(double x, double y)   のように関数宣言して用いる。
    3. 区間 x0xa 全体の分割数 N を設定し、 x の刻み幅は h=ax0N とする。
  2. 微分方程式
    y=y×cos(x),  y(0)=1
    に対して、区間 0x1, 分割数 N=8, 16, 32, 64 で (1) のプログラムを実行し、 厳密解  y(x)=esin(x)  と比較して動作確認せよ。
  3. 微分方程式
    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;
}