lectures:r201504
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
lectures:r201504 [2020/08/20 17:53] – [問題によって変更する部分] kimi | lectures:r201504 [2022/08/23 13:34] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
======2階常微分方程式 ====== | ======2階常微分方程式 ====== | ||
- | * {{: | + | ===== 共通部分 ===== |
+ | $z=y' | ||
+ | <code c> | ||
+ | double dydx(double x, double y, double z) { | ||
+ | return z; | ||
+ | } | ||
+ | </ | ||
+ | ===== 問題によって変更する部分 ===== | ||
+ | x,y,y′(=z),y″で書かれた式をy″=⋯の形に直して、その右辺の式を計算する関数をここに定義する。 | ||
+ | 例は、y″+2y′+y=1すなわちy″=1−2y′−y=1−2z−yの場合の例になっている。 | ||
+ | <code c> | ||
+ | double dzdx(double x, double y, double z) { | ||
+ | double ret; | ||
+ | ret = 1.0 - 2.0*z - y; | ||
+ | return ret; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | また、問題や用途によって「繰り返し回数」、「初期値」、「刻み幅」は適当なものに適宜変更せよ。 | ||
+ | < | ||
+ | int i, n = 100; /* 繰り返し回数 */ | ||
+ | double x = 0.0, y = 0.0, z = 0.0; /* 初期値 */ | ||
+ | double dx = 0.01; /* 刻み幅 */ | ||
+ | </ | ||
===== オイラー法-2階版 ===== | ===== オイラー法-2階版 ===== | ||
<code c> | <code c> | ||
行 80: | 行 103: | ||
} | } | ||
</ | </ | ||
- | ===== 共通部分 ===== | ||
- | z=y′=ddxyと置くのでこの部分はすべて共通。 | ||
- | <code c> | ||
- | double dydx(double x, double y, double z) { | ||
- | return z; | ||
- | } | ||
- | </ | ||
- | ===== 問題によって変更する部分 ===== | ||
- | x,y,y′(=z),y″で書かれた式をy″=⋯の形に直して、その右辺の式を計算する関数をここに定義する。 | ||
- | 例は、y″+2y′+y=1すなわち>y″=1−2y′−y=1−2z−yの場合の例になっている。 | ||
- | <code c> | ||
- | double dzdx(double x, double y, double z) { | ||
- | double ret; | ||
- | ret = 1.0 - 2.0*z - y; | ||
- | return ret; | ||
- | } | ||
- | </ | ||
- | |||
- | また、問題や用途によって「繰り返し回数」、「初期値」、「刻み幅」は適当なものに適宜変更せよ。 | ||
- | < | ||
- | int i, n = 100; /* 繰り返し回数 */ | ||
- | double x = 0.0, y = 0.0, z = 0.0; /* 初期値 */ | ||
- | double dx = 0.01; /* 刻み幅 */ | ||
- | </ |
lectures/r201504.1597913611.txt.gz · 最終更新: 2022/08/23 13:34 (外部編集)