お知らせ
2024.03.30 「v52.2.0 リリース」 New!
- テーブル、ファンクション、パックに等価、不等価演算子
- テンソルの要素演算子
- グラフウィンドウに他アプリケーションからの画像の貼付け
2024.03.25 「v52.1.0 リリース」 New!
- テンソルの要素演算子を拡充
- テンソルの ::equal、==、!=
- 物理定数を改正
2024.03.15 「v52.0.1 リリース」 New!
- 各種不具合の修正
2024.03.07 「v52.0.0 リリース」 New!
- 多項式の計算関数を各種追加
::polymul、::polydiv、::polydiff、::polyinte、::polyfnc、::polycalc - 数式処理で式の根を求める関数を追加 ::roots
- 任意の底の対数関数を追加 logn[b, x]
2024.02.27 「v51.5.2 リリース」 New!
- 数式処理の不具合を修正
2024.02.24 「v51.5.1 リリース」 New!
- 数式処理での積分を性能向上
2024.02.20 「v51.5.0 リリース」 New!
- ファンクションの簡単な式の積分を追加 ::inte
- グラフ描画の基本単位を設定可能に変更
2024.02.09 「v51.4.0 リリース」 New!
- ファンクションの引数の個数を返す関数を追加 ::narg
- 数式処理の性能向上
2024.01.29 「v51.3.0 リリース」 New!
- 数式を展開する関数を追加 ::expand
- 数式処理を書式入力に追加
- ::standard の性能向上
2024.01.24 「v51.2.1 リリース」 New!
- システム不具合を修正
- :measTIme の表示を変更
2024.01.22 「v51.2.0 リリース」 New!
- :setGraphExpression 数値、行列、ベクトルの表示方法を変更
- マルチモニターでモニターごとの倍率に対応
2024.01.18 「v51.1.0 リリース」 New!
- ファンクション変数の演算を追加
- ファンクション変数の多価関数での比較関数を追加
v.e = ::equal_branch[n_branch, n_prec, eps, f.a, f.b, arg, ...]
v.e = ::equal_branch[n_branch, n_prec, eps, val, f.b, arg, ...]
v.e = ::equal_branch[n_branch, n_prec, eps, "", f.b, arg, ...] - ファンクション変数の変数変換関数を追加
f.c = ::var_trans[f.a, $var, f.b]
f.c = f.a:>var_trans[$var, f.b]
2024.01.14 「v51.0.0 リリース」 New!
- 数式処理の機能を追加
- - ファンクション変数の直値による生成
- 例:f.a = F.[x, y]{x^2+y^2}
- - 式の標準形式への変換
- f.s = ::standard[f.a] f.s = f.a:>standard[]
- - 式の微分
- f.d = ::diff[f.a, $var] f.d = f.a:>diff[$var]
- - 式の多価関数への変換
- f.b = ::branch[f.a] f.b = f.a:>branch[]
- - 式の文字列への変換
- $str = ::fnc_to_str[f.a] $str = f.a:>fnc_to_str[]
- :foreach コマンドを全ての変数の型に対応とパック変数の展開
2023.12.18 「v50.4.0 リリース」 New!
- グラフのグループでの設定項目を拡大
- グラフウィンドウへの数式やベクトル、行列を描画するコマンドを追加
:setGraphExpression
2023.11.28 「v50.3.0 リリース」 New!
- Internet の拡張ライブラリに base64 のエンコード関数とデコード関数を追加
- :exec コマンドにウィンドウを表示するか非表示にするかのオプションを追加
2023.11.17 「v50.2.0 リリース」 New!
- 一行に複数文の記述が可能
2023.11.09 「v50.1.0 リリース」 New!
- スクリプトエディタに行番号を付けるメニュー
2023.11.02 「v50.0.0 リリース」 New!
- データ型に「ファンクション」を追加
- 接頭辞は f.
- 生成 f.a = F.userFuncName
- 実行 ::f.a[arg0, ...] or arg0:>f.a[arg1, ...]
- パック変数から実行すると、p.@ が設定される
::p.a{func}[arg0, ...] or arg0:>p.a{func}[arg1, ...]
この場合、p.a が呼び出し先の p.@ に設定される - 一行のコマンドブロックは ' : ' で区切って一行で記述可能
- データウィンドウの保存で文字列にダブルクォーテーションを付けないオプション
2023.10.24 「v49.1.0 リリース」 New!
- パック変数に追加機能
- p.a:=append_key[$v.name]
- index p.a:>key[$name]
- $v.name p.a:>key[]
- p.a[i], p.a{name}, p.a{name}[index]... で参照可能
- :setVarPackRefNamed p.a, $v.name, \var1, \var2, ...
- :checkHash p.a - 行列の列ベクトルを取得する関数を追加
v.col ::getat_t[m.a, col] - システムコマンドとシステム関数のエイリアスを付けるコマンドを追加
:alias 'newName', 'orgName'
:alias 'newName*', 'orgName*' - スクリプトライブラリに Alias を追加
- スクリプトエディタで定義に移動した場合に元の編集位置に戻るメニューを追加
- コード分析の強化
- 拡張ライブラリの関数追加
TextFile::closeAllTextFile、BinaryFile::closeAllBinaryFile
2023.10.12 「v49.0.0 リリース」 New!
- データ型に「パック」を追加
- 接頭辞は p.
- データウィンドウの読取り、書出しはなし
- 関数とコマンドへはテンソルと同じく参照渡し
- 生成 p.a = [var0, ...]
- 代入 [var0, ...] = p.a
- 連結 p.c = p.a + p.b、p.a += p.b
- 参照 :setVarPackRef p.a, var0, ...
変数はパック内の変数の参照
ブロック内で実行すると自動的にローカル変数
- 関数 ::size p.a、::shape p.a - 次の関数の戻り値をパックに変更
::sec_to_day、::sec_to_hour、::sec_to_minute、::eigen、::svd - FileCommand::fileGetMTime の戻り値を文字列のみに変更
- ::eigen 対象行列でないときの固有値の順序は不同に変更
- テンソル関数の追加
z.c = ::shrink_slice[z.a, axis, index]
z.a:=embed[z.c, axis, index]
z.a:>select_get[v.key0, v.key1, ...]
z.a:=select_set[v.a, v.key0, v.key1, ...]
z.a:=select_add[v.a, v.key0, v.key1, ...]
z.a:=select_sub[v.a, v.key0, v.key1, ...] - 文字列関数の追加
$c ::getat[$str, pos] - ニューラルネットワークのサンプルを拡充
2023.09.22 「v48.4.0 リリース」 New!
- 行列の特異値分解を実行する関数を追加 ::svd
- ::trace と ::diag 関数は正方行列でなくても実行可能に変更
2023.09.02 「v48.3.1 リリース」 New!
- 2次元陰関数グラフの不具合を修正
2023.08.21 「v48.3.0 リリース」 New!
- データマークの位置指定を改正
- V{...}[..] は縦、H{...}[..] は横に統一
- H{...}[?][?] の位置は V{...}[?]{?] と統一 - データウィンドウで数値を整列するオプションを追加
- グラフのマーク :setGraphMark
- テーブル変数に行を追加する関数 ::append_line
- テーブルで未登録の新規項目は警告
2023.08.11 「v48.2.0 リリース」 New!
- データウィンドウの「新規」のインターフェイスをグラフウィンドウに合わせる
- 関数、コマンドのドロップダウンリストが出ているときに Ctrl+Tab を押すと補完
- 3次元ベクトル場とスカラ場の計測 :getValFrom3DVecSca
- 3次元ベクトル場とスカラ場の演算 :draw3DGraphVecScaCalc
- 3次元ベクトル場とスカラ場の変換 :draw3DGraphVectorTrans、:draw3DGraphScalarTrans
- 3次元グラフのスライスを表示 :set3DPlotSlice
2023.08.04 「v48.1.1 リリース」 New!
- 不具合の修正
2023.08.03 「v48.1.0 リリース」 New!
- 3次元ベクトル場とスカラー場の変換 :draw3DGraphFrom3DVS
- 3次元スカラー場のレンジを設定 :setPlotScalarRange
- データウィンドウの列幅自動調整
2023.07.28 「v48.0.0 リリース」 New!
- 特殊変数 EPS を導入。絶対値が EPS 未満の数値の「表示」を 0_ にする
- グラフプロットのデータをデータウィンドウに保管するときの抽出率を廃止
:storeDataFrom2DGraph、:storeDataFrom2DVector、:storeDataFrom3DGraph - コマンド名変更 :set2DPlotVectorSize → :setPlotVectorSize
- ::equal 関数の修正
- isfinite 関数を追加
- コマンドウィンドウで文字列出力にはダブルクォーテーションを付けて出力
- データウィンドウで "’" (全角)による文字列入力
- データウィンドウの列幅をマウスで変更可能
- 2Dプロットの不連続点で線を引くかどうかのコマンド追加
:set2DPlotLineDiscontinuity - _zeta 特殊関数を追加
- 3次元ベクトル場グラフ
:draw3DGraphVectorFunc、:draw3DGraphVectorData、:storeDataFrom3DVector - 3次元スカラ場グラフ
:draw3DGraphScalarFunc、:draw3DGraphScalarData、:storeDataFrom3DScalar
2023.07.12 「v47.2.0 リリース」 New!
- データウィンドウで UTF-8 の読込、書込
- 三角形ポリゴンデータによる3Dグラフ :draw3DGraphDataPolygon
- グラフウィンドウで相似を保持してスケール自動調整
- 3Dグラフの法線ベクトルの計算を修正
2023.07.06 「v47.1.0 リリース」 New!
- データウィンドウで[現在位置に挿入読込][テキストとして保存][切り取り削除][挿入貼り付け][テキストとしてコピー][形式を指定して貼付け]を追加
- 三次元グラフのモデル化を追加
- 三次元グラフでの移動、片側スケール変更を向きに関係なく操作可能
- スクリプトライブラリに GraphFigure を追加
2023.06.23 「v47.0.0 リリース」 New!
- グラフウィンドウのコピー、貼り付けをクリップボードに変更
- 数式の自然表記をポップアップ
- 誤差範囲付き2Dグラフのデータ転送
2023.06.16 「v46.2.0 リリース」 New!
- ベクトル解析 :draw3DGraphFrom2DV
- ベクトル場の表示に格子優先 :setPlotNumPts
- ベクトル場のデータ転送 :storeDataFrom2DVector
- ベクトル場の計測 :getValFrom2DVector
- ベクトル場の演算 :draw2DGraphVectorCalc
- ベクトル場の変換 :draw2DGraphVectorTrans
2023.06.02 「v46.1.1 リリース」 New!
- 不具合の修正
2023.06.02 「v46.1.0 リリース」 New!
- グラフ動画の保存形式を追加
2023.05.19 「v46.0.0 リリース」 New!
- 2個以上デフォルト値があるコマンド引数では "名前:値" による指定が可能に変更
- グラフ画像の保存形式に WebP を追加
- 3Dグラフでの光源の方向の計算方法を修正
- :set3DPlotColoringFree コマンドで変数の値を捕えるオプションを追加
2023.05.07 「v45.3.1 リリース」 New!
- 不具合の修正
2023.05.02 「v45.3.0 リリース」 New!
- 動画の出力に WebP フォーマットを追加
- 1D凡例をマウスで移動可能に修正
- 次のコマンドを追加
- :setGraphVideo
- :set1DPlotLegend
2023.03.18 「v45.2.0 リリース」 New!
- 選択したグラフ図形を一括設定する機能を追加
2023.02.25 「v45.1.0 リリース」 New!
- グラフにクリップボードの貼り付け機能を追加
- 関数呼び出しの高速化
2023.02.04 「v45.0.0 リリース」
- Graph1D として、円グラフと帯グラフを追加
- フォーカスされているグラフのプロットを指定する方法として GP[pn] を追加
- 同様に、フォーカスされているグラフの図形を指定する方法として GF[fign] を追加
- フォーカスグラフを指定する :setGraphFocus コマンドを追加
- グラフ図形に扇形を追加
- グラフ図形の変形ポインタを改良
- グラフの余白を変更するメニューを追加
2023.01.14 「v44.0.0 リリース」
-
データ型にテンソルを追加
- 接頭辞は z
- 任意の階数の数値を扱う
- 自動拡張はなし
- サイズの変更には :=create 関数を使う
- 関数とコマンドへは参照渡し
PrimMathとは?
PrimMath(プライム・マス)は、グラフ作成、データ解析、数値計算を実行できます。 また、独自スクリプト言語によるプログラミングも行うことができます。
グラフのスケールは拡大、縮小、移動が簡単に行え、グラフの計測、変換も様々に実行できるなど、グラフ表示に重点を置いていることが特徴です。 書式入力フォームに必要な情報を入力するだけでグラフとして表示します。 グラフを見てからデータウィンドウに値を移すことができます。 もちろん、データウィンドウからグラフ表示を行うこともできます。
トップウインドウは、コマンドウインドウ、データウインドウ、グラフウインドウの3ウィンドウに分割しており、 方程式の解を求めるとともにグラフで確認する、あるいは実測データの解析をグラフを見ながら行うなど、 数値計算やデータ分析において使いやすいソフトウエアです。
コマンドウィンドウでは、サブルーチンも作成できるコマンド入力形式を採用しており、スクリプトファイルによる実行も可能です。 スクリプトを書く場合でも、コマンド入力の補助機能をサポートしていますので、コマンドを覚える必要はありません。
データウィンドウでは、他のプログラムとの表データのカット・アンド・ペーストによるデータ交換、 あるいは、CSV形式、タブ区切りなど、任意の形式のファイルの読込、保存ができます。 コマンドウィンドウによるスクリプト処理を行うことで、強力なデータ処理ツールとしても活用できます。
グラフウィンドウでは、多様なグラフ作成はもちろん、図形を描画することもできます。 図形は、そのままスクリプトに変換したり、スクリプトから図形を描画することができ、作図ツールとしても便利です。 グラフ図面はコピーして他のアプリに貼り付けすることができます。 また、アプリ側で図の編集を行うこともできます。
PrimMathでは、簡単な問題でしたらGUIの操作だけで解くことが可能です。 また、難しい問題もスクリプトで簡単に解くことができます。
何が出来るのか?
活用方法
- データの分析
- CSV ファイルはもちろん、様々なデータを読込めます。
- すぐにグラフで確認ができます。
- 膨大なデータであっても、グラフ領域の拡大、縮小、移動により簡単に俯瞰できます。
- グラフで、フーリエ変換、フィルタ処理、モデル化、計測など自由に分析可能です。
- スクリプトで自動化が簡単です。
- 関数の確認
- 陽関数、陰関数、媒介変数形式など、様々な関数の形状を、2次元グラフ、3次元グラフで確認できます。
- グラフで、演算、変換、微分、積分も可能です。
- 方程式の解、関数の最大値、最小値を求めることも可能です。
- 数学の問題を解く
- 線形代数(行列式、逆行列、固有値問題、特異値分解)
- ベクトル解析(勾配、発散、回転)
- 複素関数(指数関数、対数関数、三角関数、ガンマ関数、ゼータ関数、など)
- 微積分(任意の階数の微分積分)
- 微分方程式(常微分方程式、偏微分方程式)
- 最適化(最大値、最小値、条件付)
- 統計学(検定、区間推定)
- ニューラルネットワーク(分類問題、生成系)
- 煩雑な繰り返し処理を自動化
- 汎用性の高いスクリプト言語仕様のため、理数系の問題に限らず様々な処理を自動化できます。
- Excel のファイルでリストがあった場合でも、Excel から CSV ファイルに保存すれば PrimMath で処理可能です。
- 動画の作成
- スクリプトで動きを与えれば動画が作成可能です。
- どこにでもアップロードできる mp4 の形式をはじめ、avi、webm、webp の形式で作成できます。
基本機能
- 複素数による四則演算と関数計算
- 一部の特殊関数を除き、計算は複素数です。また、乗算記号を省略できます。
- 2次元グラフ、3次元グラフの描画
- 数式、もしくはデータウィンドウの値からグラフを描画します。2次元極座標、2次元領域グラフ、対数グラフ、陽関数、陰関数、ベクトル場のグラフなどあらゆるグラフを描画できます。
- 2次元グラフ、3次元グラフの解析
- グラフの演算、計測、トレース、フィルタリング、微分、積分を実行します。3次元グラフでは、スライス機能により見にくい3次元を見やすく表示します。
- 2次元グラフ、3次元グラフのデータのモデル化
- グラフの値から、非線形を含む任意の数式に最小二乗法で複数の変数の値を求めます。
- 2次元グラフのパワースペクトル
- グラフの値からフーリエ変換を実行しパワースペクトルを描画します。
- 2次元グラフの相関
- グラフの相関を計算して結果を描画します。
- 線形/非線形方程式の解
- 方程式を満たす変数の値を求めます。連立方程式も解けます。
- 数式の最小化、最大化
- 数式の値を最小、最大にする複数の変数の値を求めます。制約条件を付けることもできます。
- 微分、積分の計算
- 数式の微分値、積分値を計算します。
- 常微分方程式の解
- 常微分方程式を初期値から解いてグラフとして描画します。
- 偏微分方程式の解
- 拡散方程式、波動方程式、ラプラス方程式を解き、データウィンドウに格納します。
- 行列、ベクトル計算
- 逆行列、行列式、行列の階数、固有値、固有ベクトル、特異値分解を求めることができます。
- 統計計算
- データウィンドウの値から各種統計計算を行います。検定、区間推定もできます。
- 重回帰分析
- データウィンドウの値から線形/非線形の重回帰分析を行います。
- 主成分分析
- データウィンドウの値から主成分分析を行います。
- クラスタリング
- 任意次元のデータウィンドウの値を指定個数に分類します。
- パターン認識
- サポートベクトルマシン、ニューラルネットワークによる識別を行います。
- 特殊関数、分布関数
- ガンマ関数、ベータ関数、誤差関数、リーマンゼータ関数、また、正規分布、指数分布、χ2乗分布、t分布、F分布、ガンマ分布など、豊富に揃えています。
- テンソル計算
- CPU 処理では最速レベルに高速です。
- 10億行、10億列の領域を持つ表計算
- 実装メモリ量や実行速度からの限界はあります。
- 多彩な出力
- グラフは画像として、png、jpg、webp、gif、bmp、emf、svg 形式で保存可能です。また、他のアプリで編集可能な図形データとしてコピーが可能です。
グラフのサンプル
ダウンロード
下のリンクをクリックしてファイルを保存して下さい。ファイルは ZIP形式の圧縮ファイルです。
解凍して setup.exe を実行すればインストールできます。
最新ヴァージョンは 52.2.0 です。
Microsoft Edge でダウンロードの警告が出る場合の対処法
[その他のアクション]→[保存]→[詳細表示]→[保持する]
の手順で保存されます。
Microsoft Defender がインストールの警告を出す場合の対処法
以下のような警告が出た場合には、左側にある[詳細情報]をクリックします。
すると、[実行]のボタンが現れるのでこれをクリックします。
動作環境
OS: Windows 10/11
問い合わせ
左記の掲示板リンクにてお願いします。
また、メールでの質問、要望も受け付けます。
ニューラルネットワークのサンプルが動かない
プロキシを経由していると、ファイルのダウンロードがうまく実行されていない可能性があります。
下のリンクをクリックして4つのファイルを保存して下さい。
保存したファイルを 「ドキュメント\PrimMath\MNIST」 のフォルダに格納して下さい。
train-images.idx3-ubyte
t10k-images.idx3-ubyte
train-labels.idx1-ubyte
t10k-labels.idx1-ubyte
プロットを描画したのに表示されない
描画領域があっていないのかもしれません。
グラフウィンドウで F キーを押して下さい。
それでも表示されない場合は、W キーをプロットが現れるまで何度か押して下さい。
プロットが現れたら、矢印キーと W, Shift+W で調整します。
データのプロットなど、プロット数が決まっている場合には F キーで表示されます。
関数のプロットで始点か終点に AUTO を指定している場合や陰関数のプロットの場合には、
W, Shift+W, 矢印キーで表示するようにします。
プロットのマーカーを消したい
サイズを 0 にすると表示しなくなります。
同様に線を消したい場合には、線幅を 0 にすると表示しなくなります。
終了時に編集中のスクリプトやデータの保存を促すダイアログが表示されない
使い捨てのことが多いので、そのような仕様にしています。
大切なスクリプトやデータは終了前に保存して下さい。
イプシロンによる切捨てを止めたい
コマンドウィンドウの「表示」メニューの「イプシロンによる切捨て」のチェックを外せば
イプシロンによる切捨てが解除されます。
また、始めから止めたいときには、次のファイルを作成して「ドキュメント\PrimMath」のフォルダに格納して下さい。
ファイル名:.init.pml
内容:
:loadScrFile $PATH + "\.init.pml"
EPS = 0;