GAUSS


 GAUSSとは

 GAUSS は、マトリックス(行列)演算用のプログラミング言語です。  行列の演算に長けています。

 GAUSSの入手方法

  GAUSS は Aptech Systems,Inc. の製品です。    ・ GAUSS    :製品版(production release)のもの    ・ GAUSS Light :フリーで提供されるもの   があります。  (1)製品版は GAUSS System 6.0    Stand Alone は 教育機関向けが 72,000円    その他、各種アプリケーションがあります。    私は、商業版では、このバージョンを使用しています。  (2)フリー(無償提供)版   Aptech systems 社は、有り難いことに、    GAUSS 6.0 Light をフリーで提供してくれています。    Aptech のホームページからdemo版を入手して下さい。

 GAUSSの使い方

以下にプログラムを示します。 このプログラムは、そのまま走らせることができ、方程式の解を得ます。  ただし、不等号記号を用いている2カ所は、半角の不等号記号に直して下さい。  該当の個所には、注記があります。 (プログラムで使う半角不等号記号は、ブラウザではタグとみなされ、HTML  ファイルには不適です。  ブラウザ表示を前提に> や < を使うとプログラムとしてはエラー  になります。苦肉の策で全角の不等号記号(<、>)を用いています。) @************************************** *** ex1.e *** 逆行列を用いて一遍に解を求めるのではなく、 *** 解をSecant method(割線法)を用いて *** 繰り返し計算で求めます。 *** *** 応用として、ヤコビアン行列(Jacobian matrix)と逆行列を用いる *** ニュートン法のプログラムを作成して下さい。 *** 非線形方程式の解を求める場合に、ニュートン法が有効ですし *** 必要になります。 *** *** 3x1 + x2 + 25 = 0 *** 5x1 - 9x2 - 1 = 0 *** 行列表示では *** Ax + b = 0 *** *** GAUSS Light 4.0 *** *** 2002/08/10 *** Coded by Toshiyoshi Furuta **************************************@ /* 行列A */ a = {3 1, 5 -9}; /* ベクトルb */ b = {-25, 1}; /* xの二組の初期値 */ let x0= 1, 1; let x1= 5, 2; x=cal(a,b,x0,x1); print "solution =" x; /* ************************ */ proc cal(a,b,x0,x1); local xt0,xt1,xt2,vf0,vf1,maxiter,tol,i; maxiter = 100; /*1e+3;*/ tol = 1e-8; xt0=x0; xt1=x1; vf0=a*x0+b; vf1=a*x1+b; print "f(x0)=" vf0; print "f(x1)=" vf1; i= 1; do while i<=maxiter; /* 左の不等号記号は全角、半角に直せ */ print "Iterration NO. " i; xt2 = (xt0.*vf1-xt1.*vf0)./(vf1-vf0); if( abs(sumc(xt2-xt1)) <tol); /* 左の不等号記号は全角、半角に直せ */ break; endif; xt0 = xt1; xt1 = xt2; vf0 = vf1; vf1 = a*xt1+b; print "xt0=" xt0; print "xt1=" xt1; i=i+1; endo; retp(xt2); endp;

戻る