本堂/シミュレータ職人への道/数値計算ライブラリ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
Japanese
/
English
]
研究について
研究の概要
論文発表
メディア
メンバー
教員
大学院生
学部生
OB
リンク
リンク集
授業
コンピュータプログラミング基礎II
機械知能システム工学特別講義I
機械システム工学特論(MORE SENSE特論)
内部用
物品管理(registries)
外部ソフトウェア
PC環境設定
買い物
プリンタ設定
定例研究会(weekly)
研究発表会(monthly)
閲覧回数順
開始行:
[[本堂/シミュレータ職人への道]]
#contents
*このページは [#d93c697e]
-/home/hondo/svnroot/numericalCalculation のドキュメント
-数値計算関係(非線形代数方程式のソルバ,微分方程式のソル...
*基本的な使い方 [#h229fe28]
**numericalCalculationのインストール [#fc0b2958]
-上記svnリポジトリからチェックアウト
-${チェックアウトしたディレクトリ}/numericalCalculation ...
-numericalCalculationでmake
**numericalCalculationを使ったプログラムの作成 [#c3c4da1e]
-Makefileの例
CC=gcc
CFLAGS=-g -O2 -Wall -I/home/hondo/prog/numericalCalculat...
TARGETS=numtest
LIBS=-lnumerical -lm
$(TARGETS): $(TARGETS).c
$(CC) $(CFLAGS) $^ -o $@ $(LIBS)
-Cプログラムの例
#include <stdio.h>
#include <math.h>
#include <numerical.h> //numerical.h を include
double function( double t , double *params ){
return tan( params[0]*t ) + params[0]*t;
}
double function_d( double t , double *params ){
return params[0]/( cos( params[0]*t )*cos( params[0]*t...
}
int main( void ){
int st;
double omega = 1.0 , sol;
st = newton1var( function , function_d , &omega , &sol...
printf( "%d\t%lf\n" , st , sol );
}
*関数リファレンス [#xf42160f]
**関数の型 [#u63f4fff]
-FUNC1VAR
--double (*FUNC1VAR)( double , double * )
--第1引数に変数,第2引数にパラメータ配列をとる1変数関数
-DynamicalSystem
--MAT (*DynamicalSystem)( MAT , double , int * , double * )
---第1引数:状態量 第2引数:時刻 第3引数:整数パラメー...
---常微分方程式の接ベクトルの関数
**代数方程式を解く(alg-equ-solver.c) [#y4e0577b]
- int newton1var( FUNC1VAR f , FUNC1VAR f_diff , double *...
--役割
---1変数代数方程式をNewton法で解く
--引数
---FUNC1VAR f:解くべき方程式 f(x) = 0 の左辺 f(x).
---FUNC1VAR f_diff:f(x)の微分 df/dx
---double *vars:fおよびf_diff内部で用いるパラメータ配列
---int max_trial:Newton法の最大試行回数
---double eps:許容誤差
--返り値
---設定した最大試行回数以下で計算が終了した場合:試行回数
---設定した最大試行回数で計算が終了しなかった場合:-1
**常微分方程式を解く(numerical-integration.c) [#mde8bef2]
-MAT rungeKutta4( DynamicalSystem sys , MAT x , double t ...
--役割
---常微分方程式 x' = f(x,t) を1ステップ4段4次ルンゲクッタ...
--引数
---DynamicalSystem sys:接ベクトルf(x)
---MAT x:ステップi(=時刻t)における状態量,状態空間の次...
---double t:ステップiのシミュレーション時刻
---double dt:積分の時間刻み
---int *flags:接ベクトルsysに渡す整数パラメータ
---int *vars:接ベクトルsysに渡す小数パラメータ
--返り値
---ステップi+1(=時刻 t+dt)における状態量
-MAT euler( DynamicalSystem sys , MAT x , double t , doub...
--役割
---常微分方程式 x' = f(x,t) を1ステップオイラー法で計算する
--引数と返り値
---rungeKutta4と同じ
**行列関係(linear.c) [#x3232117]
- MAT defmat( int n , int m );
--役割
---行列サイズの設定
--引数
---int m:行数
---int n:列数
--返り値
---m×nの空の行列
--備考
---現在10×10が最大サイズ
終了行:
[[本堂/シミュレータ職人への道]]
#contents
*このページは [#d93c697e]
-/home/hondo/svnroot/numericalCalculation のドキュメント
-数値計算関係(非線形代数方程式のソルバ,微分方程式のソル...
*基本的な使い方 [#h229fe28]
**numericalCalculationのインストール [#fc0b2958]
-上記svnリポジトリからチェックアウト
-${チェックアウトしたディレクトリ}/numericalCalculation ...
-numericalCalculationでmake
**numericalCalculationを使ったプログラムの作成 [#c3c4da1e]
-Makefileの例
CC=gcc
CFLAGS=-g -O2 -Wall -I/home/hondo/prog/numericalCalculat...
TARGETS=numtest
LIBS=-lnumerical -lm
$(TARGETS): $(TARGETS).c
$(CC) $(CFLAGS) $^ -o $@ $(LIBS)
-Cプログラムの例
#include <stdio.h>
#include <math.h>
#include <numerical.h> //numerical.h を include
double function( double t , double *params ){
return tan( params[0]*t ) + params[0]*t;
}
double function_d( double t , double *params ){
return params[0]/( cos( params[0]*t )*cos( params[0]*t...
}
int main( void ){
int st;
double omega = 1.0 , sol;
st = newton1var( function , function_d , &omega , &sol...
printf( "%d\t%lf\n" , st , sol );
}
*関数リファレンス [#xf42160f]
**関数の型 [#u63f4fff]
-FUNC1VAR
--double (*FUNC1VAR)( double , double * )
--第1引数に変数,第2引数にパラメータ配列をとる1変数関数
-DynamicalSystem
--MAT (*DynamicalSystem)( MAT , double , int * , double * )
---第1引数:状態量 第2引数:時刻 第3引数:整数パラメー...
---常微分方程式の接ベクトルの関数
**代数方程式を解く(alg-equ-solver.c) [#y4e0577b]
- int newton1var( FUNC1VAR f , FUNC1VAR f_diff , double *...
--役割
---1変数代数方程式をNewton法で解く
--引数
---FUNC1VAR f:解くべき方程式 f(x) = 0 の左辺 f(x).
---FUNC1VAR f_diff:f(x)の微分 df/dx
---double *vars:fおよびf_diff内部で用いるパラメータ配列
---int max_trial:Newton法の最大試行回数
---double eps:許容誤差
--返り値
---設定した最大試行回数以下で計算が終了した場合:試行回数
---設定した最大試行回数で計算が終了しなかった場合:-1
**常微分方程式を解く(numerical-integration.c) [#mde8bef2]
-MAT rungeKutta4( DynamicalSystem sys , MAT x , double t ...
--役割
---常微分方程式 x' = f(x,t) を1ステップ4段4次ルンゲクッタ...
--引数
---DynamicalSystem sys:接ベクトルf(x)
---MAT x:ステップi(=時刻t)における状態量,状態空間の次...
---double t:ステップiのシミュレーション時刻
---double dt:積分の時間刻み
---int *flags:接ベクトルsysに渡す整数パラメータ
---int *vars:接ベクトルsysに渡す小数パラメータ
--返り値
---ステップi+1(=時刻 t+dt)における状態量
-MAT euler( DynamicalSystem sys , MAT x , double t , doub...
--役割
---常微分方程式 x' = f(x,t) を1ステップオイラー法で計算する
--引数と返り値
---rungeKutta4と同じ
**行列関係(linear.c) [#x3232117]
- MAT defmat( int n , int m );
--役割
---行列サイズの設定
--引数
---int m:行数
---int n:列数
--返り値
---m×nの空の行列
--備考
---現在10×10が最大サイズ
ページ名: