計算情報数学, 2023

修正と補足, Q and A ,
科目番号: 1S654

MathLibre-2019, MathLibre-2023

スクリーンがロックされてパスワードをもとめられたら? ユーザ名は user, パスワードは live です.
質問には screen copy も添付 screen copy のとり方

講義資料

昨年度のページ には動画, ノートのコピー等がありますので操作方法や講義内容などを再確認したいときに 活用してください.
  1. 4/10 [1(hybrid), 2(hybrid)]
    教室で受講の場合は laptop PC とヘッドホンを持参.
  2. 4/17 [1(hybrid), 2(hybrid)]
    教室で受講の場合は laptop PC とヘッドホンを持参. 次回以降も毎回.
    レポート1解説, RSA 暗号, gpg.
    参考資料.
  3. 4/24 [1(hybrid), 2(hybrid)]
    プログラミング言語の基本概念といろいろなプログラミング言語
    参考資料.
  4. 5/8 [1(hybrid), 2(hybrid)]
    整数の足し算と掛け算.
  5. 5/15 [1(hybrid), 2(hybrid)]
    1次不定方程式, syzygy, Macaulay2の使い方.
  6. 5/22 [1(hybrid), 2(hybrid)]
    環論システムMacaulay2で, 幾何(三角形分割), 最適化(整数計画), 統計(モンテカルロ法).
  7. 5/29 [1(hybrid), 2(hybrid)]
    最適化アルゴリズム早わかり. scipy, PyTorch.
  8. 6/5 [教室はなし. 2限目はonlineで質問対応]
    online での質問対応の他, あらかじめ質問をメールで送ってもらえれば, このページに答え(文字またはyoutube)を掲載しておきます.

参考

  1. UNIX(Linux) 入門 (農林水産研究情報総合センター).
  2. 新・明解C言語 入門編, 柴田 望洋
  3. ドットインストールのC言語入門 (動画)
  4. とほほのC言語入門
  5. 数学ソフトウェアの作り方 (コンピュータと数学の織りなす革新), 高山 信毅 (著, 編集), 野呂 正行 (著), 小原 功任 (著), 藤本 光史 (著), 濱田 龍義 (編集)
  6. 佐々木(信州大学), Python と SageMath
  7. google colaboratory

グループ活動報告

  1. 4/10. 各メンバーからの報告や質問の紹介. mydump.c, decrypt-0.c を動かせたか? R を動かせたか?
  2. 4/17. 各メンバーからの報告や質問の紹介. レポート1をすすめる. gpg を使ってみる. コマンドライン(対話型)インタフェースとは? TeXは順調?
  3. 4/24. 各メンバーからの報告や質問の紹介. レポート1をすすめる. 本日のサンプルプログラムを実行してみる. 素朴な和計算の遅さを実感する. プログラムを変更してみる. その他レポート課題.
  4. 5/8. 各メンバーからの報告や質問の紹介. レポートをすすめる. 本日のサンプルプログラムを実行, 解読し, また asir-mul2.rr の実行時間測定をするか掛け算のプログラムを書くことを試みる.
  5. 5/15. 各メンバーからの報告や質問の紹介. Macaulay2 を用いてレポート5A にトライ.
  6. 5/22. 各メンバーからの報告や質問の紹介. Macaulay2 を用いてレポート6A, 6B にトライ.
  7. 5/29. 各メンバーからの報告や質問の紹介. レポート7A, 7B にトライ.

レポート (report)

  1. レポート提出先: report で始まるメールアドレス. beef に記載.
  2. 必修と選択をあわせて3レポート以上. 提出物の最終締切は 6/12. 毎回の実習報告を上記のレポート提出先へ提出.
  3. レポート1締め切り 5月15日(月曜日)まで.
  4. レポート 1 (必修).
    (1) Prog1 フォルダ にある, c-text1.txt, c-text2.txt, c-text3.txt, c-text4.txt(これのみUTF8日本語) の中ですくなくとも一つを解読しなさい(clickで表示しても正しいファイルを取得できない, 右クリックでdownloadすること). 追記: c-text4.txt は mod 0x80 で暗号化してる. UTF-8 コード系の特徴を用いて復号化する(1,2,3より難易度高い.)
    (2) 解読に用いた方法(mod 計算, C のプログラム decrypt-0.c, mydump.c, 統計システム R の関数, ascii コード表, unix のコマンド, しらみつぶし法, 解読の方針)を解説せよ.
    (3) 何が書いてあるか? も関係の参考文献も調べて解説.
  5. レポート 2. gpg とレポート1のなんちゃって暗号化プログラムの速度をサイズの大きなファイル(500M以上, 動画ファイル, isoファイルなど)で比較. 時間測定法は
    time ./a.out <入力ファイル >出力ファイル
    time gpg -e -r 受取人 入力ファイル
    
    実行時間が異なる理由を考察せよ.
  6. レポート 3. 4/25に解説したプログラムをもとに(各自の知識, 技能に応じて)アプリを作成.
  7. レポート4A. 高速Fourier変換による掛け算アルゴリズムの A.Emerencia による解説 (PDF) をノートにまとめる. (一部分を読むだけでもよい.)
  8. レポート4B. 筆算による掛け算アルゴリズムを実装し高速フーリエ変換による掛け算を実装してある gmp を利用したプログラム mpz-mul.c , mpz-mul2.c との速度の比較を行う. madd.c は unsigned char の配列なので桁数は 255 まで. unsinged int の配列を使うと同じプログラムでもっと多い桁数の数を扱える.
  9. レポート4C. Risa/Asir プログラム asir-mul2.rr で Test_size を大きくして行ったときに計算時間がどう変化していくか調べる. Risa/Asir の実行方法は Risa/Asir超入門3章前半graphic (youtube) の 8分20秒から10分55秒からの実演も参照. 参考: 計算数学1 .
  10. レポート5A. ${\bf Q}[x,y]$ または ${\bf Q}[x,y,z]$ における1次不定方程式 $\sum c_i f_i = d$ を解く問題を 5題作成して, Macaulay2 で解く. さらに $d=1$ で $f_i$ の次数にくらべて $c_i$ の次数がなるべく低くなるものを求めることを試みる. (背景: effective Nullstellensatz)
  11. レポート5B. グレブナー基底を用いると1次不定方程式の解をすべて求めるアルゴリズムを 与えることができることを示すことを目標に グレブナー基底入門 (手書きノート, 1989) を読めるところまで読む.
  12. レポート6A. affine toric ideal のグレブナー基底を用いた三角形分割の例を3個作成.
  13. レポート6B. affine toric ideal のグレブナー基底を用いた整数計画法の例を3個作成.
  14. レポート7A. Rosenbrock 関数の変数を増やして行った時, 素のgradient descent, bfgs, conjugate gradient method で反復回数, 実行時間がどう変化するか考察する. グレブナー基底により停留点を求める方法とも比べる.
  15. レポート7B. 極小点を求めるアルゴリズムをまとめる.