こちらは学校テキストでの数学の関数、主に微分積分、Σの和の計算を取り扱います。
 *微分・積分についてはサンプルプログラム "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




ここからは化学関数です。


  CHEM$


 [機能] 化学元素に関する様々な物性・基本情報を取得する。

 [書式] CHEM$("元素を示す番号か名前", "返す項目名")

  [説明]

   ## 【1】 基本的な使い方
   
   関数の基本書式は以下の通りです。パラメータはどちらも文字列(String)で渡します。
   
   ```
   chem("元素を示す番号か名前", "返す項目名")
   
   ```
   
   ■ パラメータの指定方法
   
   [第1パラメータ:元素の指定]
   ・原子番号 : "1" 〜 "118"("01" などのゼロ埋めも可能)
   ・元素記号 : "H", "Fe" など
   ・日本語名 : "水素", "鉄" など
   ・英語名 : "Hydrogen", "Iron" など
   
   [第2パラメータ:項目の指定]
   ・項目番号 : "1" 〜 "30"
   ・日本語項目 : "融点", "原子量" など
   ・英語項目 : "Melting Point", "Atomic Weight" など
   
   ■ 表記の柔軟性
   ・英語表記は大文字・小文字の区別をしません("FE", "fe", "Iron" いずれも可)。
   ・スラッシュ付き項目名(例: "分類/元素の分類")は、"分類" や "元素の分類" と
   短縮して指定することも可能です。
   
   ---
   
   ## 【2】 単位表示の切り替え(特殊命令)
   
   戻り値に物理単位(℃, g/cm³, kJ/mol, pm など)を付与するかどうかを切り替えられます。
   
   ・単位を付与する(ON) : chem("unit", "on")
   ・単位を付与しない(OFF): chem("unit", "off") ※デフォルト設定
   
   ---
   
   ## 【3】 戻り値の仕様とデータ形式
   
   戻り値はすべて「文字列(String)」で返されます。データは形式に応じて3つのタイプが
   存在します。プログラム側で展開・利用する場合は、適宜パース(分割処理)してご使用ください。
   
   (1) 単一データ
   例: "1537", "Solid"
   
   (2) 複数データ(コンマ ',' 区切り)
   例: "737.7,1450.7", "+2,+3"
   
   (3) 範囲データ(波線 '~' 区切り)
   例: "12~34"(天然存在比に幅がある原子量や密度などで使用)
   
   ※注意点
   ・単位フラグが ON の場合、複数データや範囲データは各数値の後ろに単位が付きます。
   (例: "737.7 kJ/mol,1450.7 kJ/mol" / "12 g/cm³~34 g/cm³")
   ・未測定のデータや、存在しない元素・項目が指定された場合は、空文字 "" が返ります。
   
   ---
   
   ## 【4】 対応項目一覧(全30項目)
   
   No | 日本語項目名 | 英語項目名
   ----+--------------------------------+------------------------------------------
   1 | 原子番号 | Atomic Number
   2 | 元素記号 | Symbol
   3 | 元素名/英語名 | Element Name/English Name
   4 | 日本語名 | Japanese Name
   5 | 質量数 | Mass Number
   6 | 原子量/相対原子質量 | Atomic Weight/Relative Atomic Mass
   7 | 電子配置 | Electron Configuration
   8 | 結晶構造 | Crystal Structure
   9 | CAS登録番号 | CAS Registry Number
   10 | 発見年 | Discovery Year
   11 | 発見者/発見国 | Discoverer/Country of Discovery
   12 | 分類/元素の分類 | Classification/Element Classification
   13 | 状態/物質の状態 | State/State of Matter
   14 | 放射能 | Radioactivity
   15 | 同位体 | Isotopes
   16 | 代表的化合物 | Representative Compounds
   17 | 族番号 | Group Number
   18 | 周期番号 | Period Number
   19 | 融点 | Melting Point
   20 | 沸点 | Boiling Point
   21 | 比重 | Specific Gravity
   22 | 密度 | Density
   23 | 酸化数/原子価 | Oxidation State/Valence
   24 | 電気陰性度 | Electronegativity
   25 | 電子親和力 | Electron Affinity
   26 | イオン化エネルギー | Ionization Energy
   27 | 原子半径 | Atomic Radius
   28 | 共有結合半径 | Covalent Radius
   29 | ヴァンデルワールス半径 | Van der Waals Radius
   30 | 硬度/モース硬度/ビッカース硬度 | Hardness/Mohs Hardness/Vickers Hardness
   
   ---
   
   ## 【5】 各項目の解説とデータの特性・ばらつきについて
   
   前半の項目(原子番号、周期、族、CAS番号など)は不変の確定値です。一方、物理量や
   後半の微視的パラメータ(各種半径、硬度、酸化数など)は、実験の測定条件、試料の純度、
   同素体、定義する理論モデルによってデータベースごとに数値や見解が異なる場合があります。
   これらは概略値・傾向を把握するための目安としてご活用ください。
   
   1. 原子番号
   原子核に含まれる陽子の数。
   2. 元素記号
   1〜2文字のアルファベット表記。
   3. 元素名/英語名
   IUPACに登録されている標準英語名。
   4. 日本語名
   日本化学会で定められた標準日本語表記。
   5. 質量数
   代表的な同位体の陽子数と中性子の合計数。
   6. 原子量/相対原子質量
   天然同位体の平均質量。
   ※地球上の産地による同位体比率の微妙な不均一性のため、最新のIUPAC規格では
   範囲表記される元素が増加しています。
   7. 電子配置
   K殻から最外殻までの電子数分布。
   8. 結晶構造
   単体固体の常温・常圧における代表的結晶格子。
   ※同素体や測定温度により複数存在することがあります。
   9. CAS登録番号
   化学物質の国際的な識別固有ID。
   10. 発見年
   元素が分離・同定、または合成された西暦。
   11. 発見者/発見国
   発見者名および研究が行われた国。
   12. 分類/元素の分類
   金属、非金属、希ガス、アルカリ金属などの性質による分類。
   13. 状態/物質の状態
   常温・常圧(25℃, 1気圧)での固体・液体・気体の区分。
   14. 放射能
   安定同位体を持たない放射性元素であるかの有無。
   15. 同位体
   天然に存在する主要な同位体とその存在比率(質量数|比率%)。
   16. 代表的化合物
   その元素が形成する主要な化学物質の組成式。
   17. 族番号
   周期表の縦の列(1〜18族)。
   18. 周期番号
   周期表の横の行(1〜7周期)。
   19. 融点 / 20. 沸点
   固体から液体、液体から気体へ相転移する温度。
   ※高温下で昇華する物質や、超重元素の理論計算値は実験精度により差が生じます。
   21. 比重 / 22. 密度
   単位体積あたりの質量。
   ※多形(同素体)の存在や結晶欠陥、気体の測定条件基準の違いにより数値に幅があります。
   23. 酸化数/原子価
   化合物中で取り得る標準的な酸化状態。
   ※文献によって「頻出する酸化数のみ掲載するか」「微量に確認された酸化数も含むか」
   で記載の範囲が異なります。
   24. 電気陰性度
   共有結合内で電子を引きつける強さの尺度。
   ※ポーリング尺度、オールレッド・ロショウ尺度など、評価・計算モデルによって値に
   違いがあります。
   25. 電子親和力
   陰イオンになる際に放出されるエネルギー(第1電子親和力)。
   26. イオン化エネルギー
   陽イオンにするために必要なエネルギー。
   27. 原子半径 / 28. 共有結合半径 / 29. ヴァンデルワールス半径
   原子の大きさを示す尺度。
   ※測定手法(X線結晶構造解析など)、配位数、結合様式の理論モデル(孤立原子か
   結晶内か)によって定義が異なるため、研究機関により値が変動しやすい指標です。
   30. 硬度/モース硬度/ビッカース硬度
   物質のひっかき傷や押し込みに対する強さ。
   ※単結晶の向き、不純物、展延性の高い金属での評価難易度により、データベース間で
   開きが出やすい傾向があります。