ナチュログ管理画面 海釣り・ソルトウォーター 海釣り・ソルトウォーター その他 アウトドア&フィッシングナチュラムアウトドア用品お買い得情報
ブログ作成はコチラ
あなたもナチュログでアウトドア生活を綴ってみませんか?
QRコード
QRCODE
Information
アウトドア用品の
ご購入なら!

アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 0人
プロフィール
トシちゃん先生の海釣り
トシちゃん先生の海釣り
先生,etc.です。
海釣りは趣味、本職は教育研究です。趣味は本職に影響のないことが鉄則。
たまたま中学時代のラジオ工作が機縁でおもちゃ病院のドクターをすることに。子供たちのためのボランティア活動です。
おもちゃ病院では「アマチュア無線の2級くらい持ってないの?」と修理技術に関する品定めを受けました。
私はアマチュア無線を始め無線工学、電磁気学とは数学を除いて無縁でした。
そこでやむなくアマチュア無線の国家試験をパスして技術レベルを示すことに。2017年10月23日第3級、同12月3日第2級、翌年4月7日第1級の試験を受けそれぞれ1回でパスしました。
無線工学関連のことは数学で理解するのが正確しかも早道です。ラジコン等でのデジタル信号の変調(パルス幅変調、パルス位置変調、パルス符号変調)は複素数で表現され、OFDM(直交周波数分割多重)では離散フーリエ変換の方法が利用されます。頼れるのは最終的には数学しかありません。

スポンサーリンク



上記のお知らせは30日以上更新のないブログに表示しています。
記事を更新するとこのお知らせは表示されなくなります
  

Posted by naturum at

2024年03月19日

3月19日 パソコンでプログラミング

MIFES

これまで数値計算のために各種プログラミング言語でプログラムを書いてきました。
数値計算は、私の場合は、主として微積分方程式体系や動学方程式体系の数値
解を計算したり、方程式体系の不動点(fixed point)を数値で求めることことを指し
ます。
1.そのために、まず解きたい問題を方程式体系等でモデル化します。
これは紙の上に鉛筆で方程式を書くような作業が主です。
2.次に、使いたい数値計算ソフトウェアの文法に即して、モデルを式で書き、解を求
める手順もプログラムにします。
3.次に、MATLABなどのソフトウェアでプログラムを読み取り、変数に値を代入する
など,プログラムが解を計算できる状態にし、実行させます。
まずは、ソフトウェアがエラーを出さずに最後までプログラムが走るか見ます。
エラーが出たらデバッグです。
また、最後まで走り、一応もっともそうな答えを出すからといっても、正しい解を与え
るという保証はありません。
例えば、解法のプログラミングがまずく、解への収束が悪いのだが、変数の初期値
をたまたま一つの解の近傍に設定したのでその解に収束したのかもしれません。
4.あれやこれやプログラムのデバッグと修正を続け研究に必要な結果が出るという
意味で実用程度になるまで精緻化していきます。

私の場合は、数値分析しながら研究を進める事が目的ですのでプログラミング自体
は手段であって目的ではありません。
先述の「各種プログラミング言語でプログラムを書いてきました」というのは主に2と
3です。

プログラム自体はアルファベットや数字、記号からなる単なる文字列です。
文字列からなる命令を読み取り、指示通りに計算処理をするのが、数値計算に関し
てはGAUSS、MATLAB、MATHEMATICAといったソフトウェアです。
このうちGAUSSはそれほど高価ではありません。
しかし、MATLAB、MATHEMATICAは各種のライブラリやソルバーといったものを含
む、フル装備となると使用料が非常に高額です。通常は大学や研究機関で使用する
ことになるといえましょう。
しかし研究者は自宅でも研究を続けたいので、自宅でサービスを受けられないのは
残念です。
そこで、そういう研究者には幸いなことに、自宅バージョンも用意されているのです。

厳密な監理の下で許可されるのですが、長らく恩恵にを受けてきました。

C(C++)は各種OSやソフトウェアを作るための汎用ソフトウェアといえます。
実行ファイル(ソフトウェア、アプリ)を作成するには、コンパイラにかけないといけ
ません。

プログラムを書くためのソフトウェア
ところで、プログラムを書くのに、私は長年MIFESというソフトウェアを使ってきました。
MIFESは、WORDと違って、いわゆるTEXTファイルの作成にほとんど特化したソフ
トウェアです。
特長
1. スクロールスピードが極めて高速。
複数行の文字列、データを丸ごと超スピーディにコピー&ペーストできます。
例えば、プログラムの一部分(40桁300行とか500行丸ごととか)をコピーし、
それを別のWindowに表示させている別のプログラムのある個所に素早く
ペーストすることができます。
C言語では、一つの処理が関数型のまとまりからなっています。
その処理が300行で書かれているなら、それを別のプログラムで使うときは、
その300行を丸ごとコピー&ペーストすれば良いので作業効率が上がります。
2. 16進数で文字を処理できますし、機械語でプログラムを書くこともできます。
3. MIFESからCなどのコンパイラーを走らせる事ができます。
4. コピー&ペーストの速度は鉛筆で紙にメモするのを遙かに凌ぎます。
ばらばらのデータでもMIFESにテキストデータとして記録しておけば、後から
それらをまとめて推敲すれば、文献目録や、講義原稿等の素稿できてしまい
ます。
WORDやPOWERPOINTにペーストし、フォントを変えたりすることも容易です。

数値計算するためのソフトウェア
まずはGAUSSです。

数値計算用のソフトウェアです。
最近はR,Pythonといった無料(Free)ソフトウェアがが使えますが、私はそれらの前
からGAUSSを使ってきました。
現在、家では、GAUSS Light Ver12 (Free Version)を使っています。

上の画面では、GAUSSの文法に沿って自然対数の底(e)を求める数値計算プログラム
を書き、その値を求めています。
階乗(!)を利用しています。kの階乗とは 1*2*3*・・・・・*k です。
また、eはe=Σ1/k!  (k=0,1,2,3,・・・・・・∞)で与えられます。
なお、0!=1です。
画面では、kは1から14までとしています。
format 文で桁数等を指定します。画面では、計算結果が
e=2.718281828459
と表示されています。
小数点以下12桁まで正しい値が得られています。

さらに最近ではFree SoftwearのJuliaがあります。
以下は、私のパソコンにインストールしたJuliaを起動させた写真です。

画面ではJulia で3行3列の対称行列A
6 8 4
7 5 7
4 8 6
の逆行列を計算させるプログラムを示しています。
 A=[6 8 4; 7 5 7; 4 8 6]
とすれば上のような3行3列の対称行列を作成できます、
 print(inv(A))
とすると、行列Aの逆行列(inverse matrix of A)が画面にプリント(print)されます。
Juliaはマサチューセッツ工科大学(MIT)の研究者を中心にして開発されたソフト
ウェアです。Freeで使えます。Microsoft Visual Studio Codeの下で走らせること
できます。
MIFESでプログラムし、VSCodeで読み取り、デバッグして走らせることができま
す。
GAUSSは行列の操作に少し弱みがあります。
最近のハイスペックでかつFreeのものといえばJuliaかもしれません。

R、Python、JuliaなどFreeWareのなかから自分の使用目的に合い、使い勝手の良
いものを選ぶとよいでしょう。

プログラム言語の間の文法の違いに注意が必要です。
GAUSS の場合
  for k(1, 14, 1);  という文が写真に写っています。その意味は以下の通りです。
  k(1, 14, 1) --------->、kが1から14まで、1ずつ増加する
  for-------> 各々のkの値に対してと言う意味。for文の最後にセミコロンを付ける。

Cの場合
  for (k = 1 ; k <= 14 ; k++){...........} 
  上と同じ指示。kは括弧の中に入る。セミコロンで区切る。

上のように、プログラミングでは、コンマ、セミコロン、半角スペースのあるなし一つで、
文法違反になりますので要注意です。
半角空白、全角空白などはディスレイ上では単なる空白ですので意味を持たないよう
に見えますが、PC内ではすべてが数値を持っています。16進数を使うと、半角空白
は0x20、全角空白はShiftJISでは0x8140ですからあくまで数値です。
半角空白2個と全角空白1個は、画面上では幅は同じに見えるとしても、0x20が2個
と0x8140が1個ですから、PCの内部では全く違うものなのです。




  


Posted by トシちゃん先生の海釣り at 15:07Comments(0)パソコン2024年