名称 | ・・・・・・・ |
2次式の解法(解の公式) |
|
ルーチン名 | ・・・・・・・ |
Formula2D |
|
スクリプトNo | ・・・・・・・ | sub_set01- 014 | |
file名 | ・・・・・・・ | ScriptSet01.lzh sub_set01のページからセットごとダウンロードしてください。 |
|
概略 | ・・・・・・・ |
1次式について各項の係数から解を求める。 |
|
使用前提 | ・・・・・・・ |
結果(戻り値)を受ける通常のバリアント変数を用意(宣言)しておく。 |
|
依存関係 | ・・・・・・・ |
特に無し |
|
引数説明 | ・・・・・・・ |
a |
(in)2次式の2次の項の係数。 |
戻り値説明 | ・・・・・・・ |
2次式の解(0〜2個)戻る。 |
|
変数説明 | ・・・・・・・ |
D |
判別式の結果用の変数 |
注意点 | ・・・・・・・ |
複数解の可能性があるので変数tの配列要素数は動的に確保する。 |
|
スクリプト | |||
'--------------2次式の解法(解の公式) function Formula2D(a,b,c) '2次式の解を求める。 '戻値---解(tパラメータ) 配列(1次元)0番目は成否に使用する。 '引数--- ' a :(in)2次式の2次の項の係数 ' b :(in)2次式の1次の項の係数 ' c :(in)2次式の定数項 Dim D '判別式の結果用の変数 Dim nd '解の数を保管する変数 Dim t() '解(tパラメータ)用変数 D=round((b^2-4*a*c)*1000000)/1000000 if D>0 then nd=2 Redim t(nd) t(0)=true t(1)=(-b+sqr(b^2-4*a*c))/(2*a) t(2)=(-b-sqr(b^2-4*a*c))/(2*a) elseif D=0 then nd=1 redim t(nd) t(0)=true t(1)=(-b+sqr(b^2-4*a*c))/(2*a) elseif D<0 then nd=0 Redim t(nd) t(0)=false end if Formula2D=t end function |
|||
使用例 | |||
主サブルーチンの例題を参照してください。 |