LabVIEW & myDAQ 4 / MAX のテストパネルで動作確認をする 2 / アナログ入力 (AI) を使う

参考: ミニ・アダプタmyDAQとLabVIEWで作るMy実験ベンチ: パソコンに取り込んで計測・制御思いのままに (計測・制御シリーズ), p.38-39 MAX を起動する。 左のペインで [マイシステム]、[デバイスとインタフェース] の順に展開して [NI myDAQ "myDAQ1"] を選…

シングルショット信号を捉える / this particular, simulate

予想されるシングルショット信号に合わせて画面の縦横のスケール、画面のオフセット、トリガーレベルを変える。 次のいずれかの操作をする。 [Run] 取得モードのままで [Normal] トリガーモードにする。発生したシングルショット信号がトリガーレベルを交叉…

TI-Nspire & Lua / 常微分方程式の数値解法 / 応用例 / 2 重振子でバタフライ効果を見る / 古典的 Runge-Kutta 法

L2 の長さを 0.01% だけ違えた 2 組の 2 重振子を同一座標に描く。t = 6 あたりまでは同じ軌道を描くが、t = 10 を過ぎると全然違う軌道になる。 DoublePend = class() function DoublePend:init(funcs, t0, inits, h, numOfDiv, len1, radius1, len2, radiu…

TI-Nspire & Lua / 常微分方程式の数値解法 / 応用例 / 2 重振子 / 古典的 Runge-Kutta 法

参考: 工業力学 (機械工学基礎講座), p.229-231 DoublePend = class() function DoublePend:init(funcs, t0, inits, h, numOfDiv, len1, radius1, len2, radius2) self.len1 = len1 self.radius1 = radius1 self.len2 = len2 self.radius2 = radius2 self.hi…

TI-Nspire & Lua / コルーチン 6 / yield の引数が resume の返値になる

function test() for i = 1, 3 do coroutine.yield("stopped at", i) end end co = coroutine.create(test) for i = 1, 7 do print(coroutine.resume(co)) -- resume は、resume に成功したかどうかを示す true/false を返すほか、yield に指定された引数を…

TI-Nspire & Lua / 常微分方程式の数値解法 / 応用例 / Pendulum Waves / 古典的 Runge-Kutta 法

長さの違う複数の振子を同じ初期角から一斉に振る。各糸の長さは、たとえば同じ 30 秒間に振子 1 は 15 往復、振子 2 は 16 往復、振子 3 は 17 往復 ...... するように設定する。参考: Pendulum Waves Pend = class() function Pend:init(funcs, t0, inits,…

TI-Nspire & Lua / 常微分方程式の数値解法 / 応用例 / 単振子 / 古典的 Runge-Kutta 法

参考: Excelで学ぶ微分方程式, p.171-176 Pend = class() function Pend:init(funcs, t0, inits, h, numOfDiv, len, radius) self.len = len self.radius = radius self.Unpack = unpack or table.unpack self.Sin = math.sin self.Cos = math.cos self.func…

TI-Nspire & Lua / 常微分方程式の数値解法のまとめ (『パソコンで見る天体の動き』) / クラス化する

同じ処理を今度はクラス化する。 1. 古典的 Runge-Kutta 法 構文: rkClassic({funcs}, t0, {inits}, h [, numOfDiv])▶ソースコードを表示する/非表示にする rkClassicClass.lua 実行結果 (左から t, x, y) 2. Shanks による 12 段 8 次の Runge-Kutta 法 構…

TI-Nspire & Lua / リストをランダムに並べ替える / Fisher-Yates のシャッフル

function FisherYates(list) local unpack = unapck or table.unpack local oldlist = {unpack(list)} local newlist = {} for i = 1, #list do newlist[#newlist+1] = table.remove(oldlist, math.random(#oldlist)) -- 「リストに残っている要素をランダム…

TI-Nspire & Lua / コルーチン 5 / resume するときに coroutine に引数を渡す

参考: はじめてのLuaプログラミング―人気の軽量スクリプトでアプリケーション開発! (I・O BOOKS) function test(from, to) while true do for i = from, to do input = i calcRoot(i) end end end co_test = coroutine.create(test) function calcRoot(n) ou…

TI-Nspire & Lua / コルーチン 4 / 他の函数から間接的に中断する

参考: はじめてのLuaプログラミング―人気の軽量スクリプトでアプリケーション開発! (I・O BOOKS) function test() while true do for i = 1, 10 do input = i calcRoot(i) end end end co_test = coroutine.create(test) function calcRoot(n) output = "?" …

C/C++ / hello, world

参考: 12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 [新しいプロジェクト] ボタンをクリックする (あるいはメニューバーから [ファイル]、[新規作成]、[プロジェクト] の順に選択する)。 左のテンプレートにある [Visual C++] を選択し、真ん…

TI-Nspire & Lua / コルーチン 3 / 他の函数から間接的に再開する

参考: はじめてのLuaプログラミング―人気の軽量スクリプトでアプリケーション開発! (I・O BOOKS), p.260-276 function on.construction() var.store("k", 0) end function test() while true do for i = 1, 5, 1 do var.store("k", i) coroutine.yield() end…

TI-Nspire & Lua / コルーチン 2 / ループの中断と再開とを繰り返す

参考: Programming in Lua プログラミング言語Lua公式解説書, p99-113 function test() for i = 1, 3 do print(i) coroutine.yield() end end co = coroutine.create(test) coroutine.resume(co) -- コルーチンを開始し、"1" をプリントし、コルーチンを中断…

TI-Nspire & Lua / コルーチン 1 / コルーチンを作って開始する

参考: Programming in Lua プログラミング言語Lua公式解説書, p99-113 co = coroutine.create(function() print("hello, world") end) -- coroutine.create(函数) という構文でコルーチンを作成する。 print(co) -- 返値はスレッド (1) print(coroutine.stat…

arm

いつでも何かができるように準備しておく Educator’s Training Kit for 1000 X-Series Oscilloscopes, p.46-47, Keysight Technologies, Inc. With trigger holdoff, we can instruct the scope to always arm triggering during the signal dead-time betwe…

TI-Nspire & Lua / 常微分方程式の数値解法のまとめ (『パソコンで見る天体の動き』) / クロージャを利用する

『パソコンで見る天体の動き』に解説してある常微分方程式の数値解法を Euler 法以外全部 Lua で実装したのでここにまとめておく。全部クロージャを利用している。 「特殊な方程式」とは独立変数も 1 次微分の項も含まない 2 階微分方程式のこと。 ここで函…

TI-Nspire & Lua / 特殊な方程式に対する補外法

参考: パソコンで見る天体の動き, p.131-142 function gragg(funcs, t0, inits, initsDot, h) local unpack = unpack or table.unpack local t0 = t0 local inits = inits local initsDot = initsDot local function list2oneColMat(list) local oneColMat =…

TI-Nspire & Lua / 補外法 6 of 6 / まとめ

参考: パソコンで見る天体の動き, p.131-142 function extrapolation(funcs, t0, inits, h) local unpack = unpack or table.unpack local t0 = t0 local inits = inits local function list2oneColMat(list) local oneColMat = {} for i = 1, #list do oneC…

TI-Nspire & Lua / 補外法 5 / 補外にかける点列を中点法で求める

参考: パソコンで見る天体の動き, p.131-142 function newMat(numRows, numCols, val) local mat = {} for i = 1, numRows do mat[i] = {} for j = 1, numCols do mat[i][j] = val or nil end end return mat end function midPoints(funcs, t0, inits, h, s…

TI-Nspire & Lua / 数列を作る

function seq(func, from, to, step) local sequence = {} local step = step or 1 for i = from, to + step/2, step do sequence[#sequence+1] = func(i) end return sequence end -- 確かめる。 a = seq(function(n) return 1/2^n end, 1, 7, _) print("{"…

TI-Nspire & Lua / 新規行列を作る

function newMat(numRows, numCols, val) local mat = {} for i = 1, numRows do mat[i] = {} for j = 1, numCols do mat[i][j] = val or nil end end return mat end -- 確かめる。3 × 7 行列を作る。初期値は 1 とする。 a = newMat(3, 7, 1) for r = 1, #…

C# / ウィンドウ内のボタンが押されたときに何らかのメッセージダイアログを表示する

C#

参考: 日経ソフトウエア 2017年 3月号 [雑誌], p.60-65 メニューバーから [ファイル]、[新規作成]、[プロジェクト] の順に選択する。 [新しいプロジェクト] ダイアログが表示される。 左側の [テンプレート] にある [Visual C#] を選択し、中央にある [WPF …

TI-Nspire & Lua / 補外法 4 / 何かを偶数次多項式で補外する / Neville の算法で補外値だけを求める / 刻み幅を順次 1/2 にした場合 / 複数の点列に適用する

参考: パソコンで見る天体の動き, p.131-142 local function list2oneColMat(list) local oneColMat = {} for i = 1, #list do oneColMat[i] = {} oneColMat[i][1] = list[i] end return oneColMat end local function neville(...) local listOfLists = {..…

TI-Nspire & Lua / 補外法 3 / 何かを偶数次多項式で補外する / Neville の算法で補外値だけを求める / 刻み幅を順次 1/2 にした場合

参考: パソコンで見る天体の動き, p.131-142 h = {1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128} a = {{0.53627861}, {0.53951755}, {0.54011910}, {0.54025730}, {0.54029111}, {0.54029951}, {0.54030161}} for i = 2, #h do for j = 2, i do --a[i][j] = a[i]…

TI-Nspire & Lua / 補外法 2 / 何かを偶数次多項式で補外する / Neville の算法で補外値だけを求める

参考: パソコンで見る天体の動き, p.131-142既知のポイントの数列は前回と同じとする。 h = {4, 3, 2, 1, 1/2} a = {{277}, {-472}, {-167}, {-8}, {277/64}} for i = 2, #h do for j = 2, i do a[i][j] = a[i][j-1] + (a[i][j-1] - a[i-1][j-1]) / ((h[i-j+…

TI-Nspire & Lua / 補外法 1 / 何かを偶数次多項式で補外する / 聯立方程式を解いて求める

参考: パソコンで見る天体の動き, p.131-142既知のいくつかのポイントを通過する未知の曲線が偶数次多項式であると假定してその既知のポイント群の外側に存在する未知のポイントを推定する。聯立方程式を解いて求める。 この数列を既知のポイントとする。 こ…

TI-Nspire & Lua / 特殊な方程式に対する 7 段の Cowell 法

参考: パソコンで見る天体の動き, p.112-119 function cowell7(funcs, t0, inits, h) local unpack = unpack or table.unpack local t0 = t0 local inits = inits local function maxOfErr(listA, listB) local sute = {} for i = 1, #listA do sute[i] = ma…

TI-Nspire & Lua / 特殊な方程式に対する 4 段の Cowell 法 4 of 4 / 確かめる

参考: パソコンで見る天体の動き, p.112-119 function cowell4(funcs, t0, inits, h) local unpack = unpack or table.unpack local t0 = t0 local inits = inits local function maxOfErr(listA, listB) local sute = {} for i = 1, #listA do sute[i] = ma…

TI-Nspire & Lua / 特殊な方程式に対する 4 段の Cowell 法 3 / 前の近似値から次の近似値と近似値同士の最大誤差とを求める、それに意味のないとき

参考: パソコンで見る天体の動き, p.112-119 function approx2(funcs, w, preApprox, h) -- ({微分方程式}, {変化しない部分}, {前の近似値}, 刻み幅) local function maxOfErr(listA, listB) local sute = {} for i = 1, #listA do sute[i] = math.abs(list…