こちらは学校テキストでの数学の関数、主に微分積分、Σの和の計算を取り扱います。
*微分・積分についてはサンプルプログラム "smp_diff.bas" がありますのでそちらも参照下さい。
xについての式を文字列で取り扱い、式レベルで展開できます。
3x^2+4x+1 …①
3*x^2+4*x+1 …②
通常数学では①のような表記ですが
Basicでは②のようにxの前に *(掛ける)を省略せずに記述して
取り扱える式となります。
関数に与える式は①と②両方使うことができますが(①は内部的に②に変換されて処理されます)
関数が返す文字式は必ず②の書式で返されます。
この②で返された文字式はxに数値を代入したあと
そのままcalc("xの文字式")で計算して値を取得することができます。
例
f$=fcal("x+3","2*x+2","add")
:'2つの式が足されてf$に結果の3*x+5が入る
x=2 :'xに2を代入
print calc(f$) :'代入された値で3*x+5を計算
11 :'結果の11が表示される
また式の計算結果のxの係数は割り切れない無理数になることもあるので
式の結果出力は小数でなく (1/3)*x^3+(5/2)*x^2 のように
括弧で囲われた分数(割り算)で返されることになります。
例 積分計算の場合
print
intgr$("x^2+5*x")
(1/3)*x^3+(5/2)*x^2
GCD |
[機能] 2つの数の最大公約数を求めます。
[書式] GCD(n1,n2)
[例]
print gcd(30,42)
6
LCM |
[機能] 2つの数の最小公倍数を求めます。
[書式] LCM(n1,n2)
[例]
print lcm(30,42)
210
PRIME |
[機能] 指定した数値以降での最初の素数を返します。
[書式] PRIME(n)
[説明]
nで指定した数以降で最初にくる素数を返します。
nが素数の時はnを返すのでnが素数であるかどうかの判別にも使えます。
[例]
print prime(12)
13
ROOT |
[機能] 累乗根を求めます。
[書式] ROOT(s, 次元の数n)
[説明]
n√s の値を返します。(nは掛け算でない左上の小文字)
n乗してsになる数値です。
SQRは2次元の平方のみですがこれは3次元以上の累乗根を求める事ができます。
値は近似値となります。
[例]
r=root(100,3)
print r
4.6415889136718755
print r^3
100.00000517446294
FAC |
[機能] n
の階乗(1からnまでのすべての整数の積)を得ます。
[書式] FAC(n)
[説明]
fac(5)の場合は 1*2*3*+4*5=120
となります。
[例]
print fac(5)
120
PERM |
[機能] 順列(permutation)での場合の数を求めます。
[書式] PERM(n,r)
[説明]
数学で nPr で表される計算です。
異なる n個のものから
r個を取り出して 1列に並べていった樹形図の枝の総数です。
6P3 ならば 6*5*4=120
になります。
[例]
print perm(6,3)
120
COMB |
[機能] 組み合わせ(combination)での場合の数を求めます。
[書式] COMB(n,r)
[説明]
数学で nCr で表される計算です。
異なる n個のものから
r個を選ぶパターンの数です。
この値は PERM(n,r)/FAC(r) で得られます。
[例]
print comb(5,3)
10
SIGMA |
[機能] 数列の和(Σ)を求めます。
[書式] SIGMA(式の文字列,n1,n2)
[説明]
4
Σ(x+1) 数学のΣの和の計算を行います。(この場合はn1=1,n2=4)
x=1
sigma("x+1",1,4)ならば式の
xに1から順に増加させて4までを
代入させていき、その結果を全て加算した値を返します。
このΣの式ではsin(),cos()等、Basicの一般関数を式中に含めて計算させることができます。
各種設定をする機能も持っています。
書式2:sigma("int"|"even"|"odd")
n1,n2への増分は通常1(デフォルトa=sigma("int"))ですが
偶数時だけ加算a=sigma("even")、奇数だけ加算a=sigma("odd")
の指定ができます。
またデフォルトで対象の変数はxですが、a=sigma("v:y")で任意の変数に変更できます。
書式3:sigma("v:1文字変数名")
(v:の後ろに使用する1文字変数を記述します)
ここで指定した変数は微分積分関数での対象変数やFCAL関数の変数にも適用されます。
[例]
print sigma("2*x^2+1",1,4)
64
a=sigma("v:y")
print sigma("2*y^2+1",1,4)
64
a=sigma("odd"):a=sigma("v:x")
print sigma("2*x^2+1",1,4)
22
DERIV$ |
[機能] 与えられた式を微分して導関数の式を文字列で返します。
[書式] DERIV$(式の文字列)
[説明]
導関数
f'(x)=lim
f(x+h)-f(x)
h→0 /h
導関数は x^n ならば
n*x^(n-1) が結果の式となります。
[例]
print deriv$("x^2+2*x+1")
2*x+2
DIFF |
[機能] 微分係数(数値)を求めます。
[書式] DIFF(式の文字列,n)
[説明]
式を導関数にしてxにnを代入した値が得られます。
微分係数はその式のx=nの時点での接線の傾きになります。
[例]
print
diff("x^2+2*x+1",4)
10
INTGR$ |
[機能] 与えられた式を積分して結果の式を文字列で返します。
[書式] INTGR$(式の文字列)
[説明]
∫ f(x)
dx (f(x)は式の文字列で例の場合だと 2*x+2)
積分の式は a*x^n ならば
a/(n+1)*x^(n+1) が結果の式となります。
積分は微分の逆演算で原始関数に戻されます。
結果は積分定数Cを除いたものになります。
[例]
print
intgr$("2*x+2")
x^2+2*x
print intgr$("x^2+5*x")
(1/3)*x^3+(5/2)*x^2
DINT |
[機能] 定積分(数値)を求めます。
[書式] DINT(式の文字列,n1,n2)
[説明]
4
∫ f(x) dx (f(x)は式の文字列で例の場合だと 2*x+2)
1
式f(x)を微分した原始関数F(x)のxにn1,n2を代入して F(n2)-F(n1)
とした値が得られます。
式がx^2の時の定積分の結果は n1<=x<=n2 の範囲で
x軸と式の放物線の間で囲われた部分の面積となります。
[例]
print
dint("2*x+2",1,4)
21
FCAL |
[機能] 式どうしの計算をして結果の式を文字列で返します。
[書式] FCAL(式の文字列1,式の文字列2,"add"|"sub"|"mult")
[説明]
xについての式(デフォルト)を計算します。
第三パラメーターで足し算"add"、引き算"sub"、掛け算"mult"を指定します。
計算できるのは係数が整数の式です。分数を含む式は現在未対応です。
[例]
print fcal("x+3","2*x+2","add")
3*x+5
print
fcal("x^2+1","2x-2","mult")
2*x^3-2*x^2+2*x-2