洞川温泉旅行記

今年の夏休みは奥さんと一緒に奈良県の洞川温泉に行き、1泊しました。 去年の12月にはじめて行ったとき、空気が澄んでいてとても良い雰囲気でしたので、夏はどうかなと思い行ってみました。 まず初日は新幹線で京都まで行き、京都駅でレンタカーを借りました…

引き戻しと押し出し

多様体間の写像によって誘導される引き戻しと押し出しという写像に対して、以下の関係が成り立つことを示したい。 1. 関数の引き戻し 多様体から多様体への写像を考える。 に対して が定義できる。これをのによる上への引き戻しという。 2. ベクトル場の積分…

ラプラス・ベルトラミ作用素を使った3次元極座標のラプラシアンの導出

前回の記事では曲がった空間のラプラシアンであるラプラス・ベルトラミ作用素を求めた。 nyonyo.hatenablog.com 今回は以下のラプラス・ベルトラミ作用素を使って3次元極座標のラプラシアンを導出してみる。 これを3次元極座標で計算するには3次元極座標の計…

ラプラス・ベルトラミ作用素(ラプラシアンの一般化)

曲がった空間のラプラシアンであるラプラス・ベルトラミ作用素を求める。 これを使うと3次元極座標でのラプラシアンが簡単に計算できる。 ラプラス・ベルトラミ作用素は以下。 ポイントはラプラシアンに含まれる微分を以下の共変微分で置き換えること。 置き…

ルベーグ積分30講を読んだ

ルベーグ積分30講を読みました。26講あたりからわけがわからなくなりました。 いつかまた勉強するときのためにメモの写真を貼ります。

ARMv8.3-CompNum FCMLA命令の動作

FCMLA命令の動作について書く。 FCMLA <Zda>.<T>, <Pg>/M, <Zn>.<T>, <Zm>.<T>, <const> 複素数の乗算はFCMLA命令2つで書ける。 ベクトルレジスタには複数の複素数を格納できる。 偶数番目が実部で、奇数番目が虚部。 ベクトルレジスタが512ビットの場合、倍精度(double, 64ビット)の複素数を4</const></t></zm></t></zn></pg></t></zda>…

C++でrestrictと同様の機能を実現する方法

ループのベクトル化や、その他の最適化を促進させることを目的として、C言語のrestrict修飾子を使うことがよくある。 restrict修飾子を指定したポインタは、同じ関数の他のポインタが指すメモリアドレスを指さない。 複数のポインタが同じメモリアドレスを指…

Linux無線LAN設定

Ubuntu Server 20.04.1 LTS で無線LANの設定を行いました。以下、メモです。 マザーボードに無線LANユニットが無かったので、 IODATA WN-G300UA をUSB2.0ポートに接続し、以下の手順で無線LANの設定をしました。 まず、以下のように設定ファイルを編集します…

浮動小数点数とビット表現の変換

浮動小数点数をビット表現に変換したり、ビット表現を浮動小数点数に変換したりすることが多いので、コンバータを作ってみました。 github.com bfloat16以外の浮動小数点数なら、pythonでも以下のように変換できます。 $ python3 Python 3.8.2 (default, Jul…

ハイティング代数の勉強

J. ヨスト著, 清水勇二訳 現代数学の基本概念 上 を読んでいて、p.35 の練習問題が難しかったので、この問題について書いておく。 p.35の練習問題とは、ハイティング代数において以下を示すことだ。 ハイティング代数は0と1を持つ束で冪対象を持つ。 冪対象…

Kleisli圏の単位律と結合律

西郷 甲矢人 (著), 能美 十三 (著) 圏論の道案内 ~矢印でえがく数学の世界~ (数学への招待シリーズ) の「第9章モナド」で、モナドから随伴を作るときにKleisli圏という圏が登場した。 この記事では、Kleisli圏の単位律と結合律についてまとめてみる。 まず、…

C言語で浮動小数点数をビットパターンに変換する方法

1.0の64bit浮動小数点数、32bit浮動小数点数、16bit浮動小数点数でのビットパターンを求めます。 a.c #include <stdio.h> #include <stdint.h> int main() { union A { double d; float f; _Float16 f16; uint64_t i64; }; union A a; a.d = 1.0; printf("64bit 0x%lx\n", a.i64</stdint.h></stdio.h>…

Pythonで浮動小数点数をビットパターンに変換する方法

64bit浮動小数点数(1.0の例) >>> import struct >>> hex(struct.unpack('<Q', struct.pack('<d', 1.0))[0]) '0x3ff0000000000000' 32bit浮動小数点数(1.0の例) >>> import struct >>> hex(struct.unpack('<I', struct.pack('<f', 1.0))[0]) '0x3f800000' 16bit浮動小数点数(1.0の例) Python3.6以上で動く >>> import struct >>> hex(struct.unpack('</i',></q',>

Vim練習1

正規表現で検索した文字列を置換する方法 ファイル全体に対して、一括で置換を行うコマンド :%s/\v<正規表現>/<置換後文字列/g ドットコマンドを使って置換を行う方法 まず、以下で検索する /\v<正規表現> 次に1つ目の検索対象を置換する cgn<置換後文字列>…

自分用メモ ARM64クロスコンパイルとx86_64での実行

参考サイト qiita.com 環境はx86_64, Ubuntu 18.04.2 LTS。 まず、qemuとg++-aarch64-linux-gnuを以下のようにインストール。 $ sudo apt-get install qemu $ sudo apt-get install g++-aarch64-linux-gnu helloworld.c #include <stdio.h> int main() { printf("hell</stdio.h>…

GroverアルゴリズムでSAT問題を解くための繰り返し回数がわからない

以下のの絶対値を最大化させるを求めたいが、なかなか簡単にならない。 ]

Groverのアルゴリズム

勉強中の量子アルゴリズムについてまとめます。間違いがありましたら、コメントください。 Groverのアルゴリズムはnビットで表される個のビット列から、1個のビット列を探し出す量子アルゴリズムです。 アルゴリズムはおおまかには以下です。とします。 量子…

量子コンピューティング向け言語Q#の問題集 QuantumKatas Teleportation Task 4.1〜4.2 Alice, Bob, Charlie

Task 4.1〜4.2はAlice, Bob, Charlieが登場する量子テレポーテーションの問題です。 Task 4.1は、Alice, Bob, Charlieの状態を|Ψ³⟩ = (|000⟩ + |011⟩ + |101⟩ + |110⟩) / 2 にするという問題です。 Task 4.2は、以下の設定です。 Aliceがメッセージの量子ビ…

量子コンピューティング向け言語Q#の問題集 QuantumKatas Teleportation Task 1.5~1.7 メッセージがパウリ行列の固有状態のときのテレポーテーション

Task 1.5~1.7 はパウリ行列の固有状態をメッセージとするテレポーテーションです。 登場人物は以下の3つです。 AliceからBobに伝えるメッセージの量子ビット Aliceの量子ビット Bobの量子ビット テレポーテーションのおおまかな手順は以下です。 AliceとBob…

C言語でPythonのモジュールを自作する

C言語でPythonのモジュールを自作する方法を書く。 環境 Ubuntu 18.04.2 LTS Python 2.7.15rc1 参考にしたサイト Pythonインタプリタの拡張と埋め込み CUBE SUGAR STORAGE Python: Wheel でパッケージを配布する 1. 準備(virtualenvで実験用環境を作る) virt…

量子コンピューティング向け言語Q#の問題集 QuantumKatas Measurements Task 1.10 ベル状態の識別

Task 1.10は、4つのベル状態を識別する問題です。 解答1 // Task 1.10. Distinguish four Bell states // Input: two qubits (stored in an array) which are guaranteed to be in one of the four Bell states: // |Φ⁺⟩ = (|00⟩ + |11⟩) / sqrt(2) // |Φ⁻⟩ …

量子コンピューティング向け言語Q#の問題集 QuantumKatas Superposition Task 15

Superposition Task 15は2日くらい悩んでやっとテストが通った。 Task 15は、次の入力状態からゴール状態を作る問題。 入力状態: N個の量子ビットの状態|0...0> (Nは2の冪乗とは限らない) ゴール状態: W stateという状態、すなわち、 (|10...0> + |010...0> …

QuantumKatas Superposition Task 14

// And関数を使うためにimport open Microsoft.Quantum.Extensions.Bitwise; // Task 14**. W state on 2ᵏ qubits // Input: N = 2ᵏ qubits in |0...0⟩ state. // Goal: create a W state (https://en.wikipedia.org/wiki/W_state) on these qubits. // W st…

QuantumKatas Superposition Task 12

量子コンピューティングの問題集Microsoft/QuantumKatasでは、Q#プログラムを完成させてユニットテストを実行することにより、問題を解いていくことができます。 今回は、解くのに時間がかかった問題Superposition Task 12について、紹介します。 ユニットテ…

Q#のQuickstartをやってみた

docs.microsoft.com ファイル構成 Bell.qs デバイス側のQ#プログラム。量子ビット(Qubit)に対する操作(operation)を記述。 Driver.cs ホスト側のC#プログラム。デバイス側のoperationを呼ぶ。 Bell.qs namespace Bell { open Microsoft.Quantum.Canon; open …

C++メモ

コンパイルエラー $ clang++ test.cpp test.cpp:18:6: error: non-const lvalue reference to type 'C' cannot bind to a temporary of type 'C' C &c = test(); ^ ~~~~~~ 1 error generated. 上のコンパイルエラーになるソース #include <cstdio> class C { public:</cstdio>…

Microsoft Quantum Development Kitのインストール

環境 $ lsb_release -d Description: Ubuntu 18.04.2 LTS 参照サイト https://docs.microsoft.com/en-us/quantum/install-guide/command-line?view=qsharp-preview 手順 参照サイトに書いてあるとおりにインストールします。 .NET Core SDK 2.0以上(Build Ap…

vim設定メモ

vim初心者の設定です。 以下を行うための.vimrc #で→方向に幅を大きくする "で←方向に幅を小さくする +で↓方向に高さを大きくする -で上方向に高さを小さくする eでファイルツリーを出す gph.is set nowritebackup set nobackup " vim の矩形選択で文字が無…

グラフの圏における冪対象

グラフの圏の対象はグラフである。をエッジ1つの対象、をノード1つの対象とする。 この圏における冪対象, , , はそれぞれどんなグラフだろうか? の形 グラフがどんな形をしているかを調べるためには、まず、射, 射がそれぞれ何個あるかを調べる。 また、グラ…

冪対象に関する定理

定理 を示す ① 射の定義 評価写像を使った以下の図式が可換である。 また、以下の図式も可換である。 次に、2つの評価写像 と、以下の2つの可換図式を使って 2つの射 を定義する。 ここで、以下を可換にする唯一の射をと定義する。 すなわち、 が成り立つ。 …