三浦と窮理とブログ

自分の経験したことを検索可能にしていくブログ.誰かの役に立ってくれれば嬉しいです.

1次不定方程式を解くC++/boostライブラリ

boost の boost/integer/extended_euclidean というライブラリに1次不定方程式を拡張ユークリッド互除法で解く型があるので使ってみます. 1次不定方程式 $mx + ny = \operatorname{gcd}(m, n)$ の解 $x, y$ を1つ求めることができます. 以下のプログラムを…

整数配列の最大公約数を求めるC++/boostライブラリ

boost の boost/integer/common_factor_rt というライブラリで整数配列の最大公約数や最小公倍数を求める関数があるので使ってみます. 最大公約数を求めるのは gcd_range,最小公倍数を求めるのがlcm_range です.戻り値のpairの1成分目に値が入っています…

MathJax3.0 で数式番号が改行されない原因

本ブログでは数式の表示にMathJaxを用いている.少し前にバージョンを3.0にしたのだが,数式番号だけがうまく改行されずに表示されるという問題が発生していた. この問題の根本原因や理由は分からないのだが,とりあえず解決策は見つかったのでまとめておく…

相加・相乗・調和平均の極限値

$\quad $ 実数列 $ \{a _ n\}, a _ n>0 ~ (\forall n) $ に対して,相加平均 $ A _ n $ ,相乗平均 $ G _ n $ ,調和平均 $ H _ n $ は次のように定義される. \begin{align} A _ n &= \frac{a _ 1 + a _ 2 + \cdots + a _ n}{n} \\ G _ n &= \sqrt[n]{a _ 1…

ABC150D - Semi Common Multipleまとめ

Atcoder ABC150D D - Semi Common Multiple 時間内にはできませんでした.解説を見ながらやり直したのでまとめます. a = { a₁ ,a₂ ,... ,aN } a/2 = { a₁/2 ,a₂/2 ,... ,aN/2 } と表すことにします.a が偶数列なので,a/2 は整数列です.a の半公倍…

剰余の関数プロット

atcoder の D - Remainder Reminder のような,剰余 a%b を調べる問題で a と b のどちらを固定するかで議論の難しさがとても違ったので(自分は最初 a を固定して考えていて分からなくなった),この際,剰余の関数グラフをプロットして見てみる. 特別な結…

条件付き期待値の期待値による期待値漸化式

次のページの証明1:確率漸化式について自分はすこし戸惑ったので補足説明をする. AtCoder ARC 085 C - HSI (300 点) - けんちょんの競プロ精進記録 この漸化式を保証しているのは次の公式である. 確率変数 X, Y に対し,E[X] = E[E[X|Y]] である. これは…

電弱理論・中性カレント過程の散乱断面積の計算ノート

Cheng & Li 『Gauge theory of elementary particle physics』p365 から説明されている素粒子の散乱過程についての計算ノートをまとめる. Gauge Theory Of Elementary Particle Physics (Oxford Science Publications)作者:Ta-Pei Cheng出版社/メーカー: Ox…

Ford-Fulkerson法の実装解説

グラフの最大流問題を解くアルゴリズムのFord-Fulkerson法のC++実装例が プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ (蟻本)p190にあります.アルゴリズム自体は本文にある説明…

2次元イジングモデルのオンサーガー解の数値計算

無限体積の2次元イジングモデルの厳密解であるオンサーガー解を数値的に計算する. 1スピン当たりの自由エネルギー \begin{align} -\beta f &= \log(2\cosh 2K) + \frac{1}{2\pi ^ 2} \int ^ \pi _ 0 d\omega _ 1 \int ^ \pi _ 0 d\omega _ 2 \log(1 - k ^ 2…

Qiskit で平方根ゲート を使う方法

Qiskit で平方根ゲートを作るには power メソッドを使います. 例えば $\sqrt{NOT}$ ゲートは XGate().powre(.5) です. power メソッドは Gate クラスに対して使えます. 参考 Gate — Qiskit 0.13.0 ドキュメント 使用例 実際に $\sqrt{NOT}$ ゲートをつく…

Qiskit で一度追加した量子ゲートを削除する方法

Qiski で量子回路を組んでいて,一度 QuantumCircuit に追加した Gate (およびInstruction )を削除する方法を説明します. ドキュメント QuantumCircuit に追加した Instruction の情報は,data という属性にリストになって保存されています *1. ですので…

量子プログラミング入門【物理学科生向け】

前置きの前置き 量子コンピュータについて少し勉強してみたので,量子プログラミング入門という題でまとめていきたいと思います. 「現在利用可能な量子コンピュータを触ってみよう」というようなモチベーションです. ハードウェア自体は現在も世界各地で絶…

剰余の変域

問題 L ≦ x ≦ R な自然数 x に対して, 自然数 m を法とする剰余の値 y = x%m の変域は if (R - L ≥ m) 0 ≦ y ≦ m - 1 else if ($\lfloor$L/m$\rfloor$ = $\lfloor$R/m$\rfloor$) L%m ≦ y ≦ R%m else if ($\lfloor$L/m$\rfloor$ + 1 = $\lfloor$R/m$\rfloor$…

A - Diverse Word:AGC22

問題 A - Diverse Word 入力された多彩な単語に対し,辞書順で次の多彩な単語を求める. 理解 多彩な単語の辞書がすぐには想像できないので書き下すことにする.「見たものは想像できる」の精神. a から始まる多彩な単語について,次の図のように木の形に単…

sundiskのusbメモリが書き込み禁止になったので,sumsungのメモリを買った.

1年前に買った Sundiskのusbメモリが突然書き込み禁止になりました. ネットで調べた書き込み禁止解除の方法を試しても治らなかったので新しいusbメモリを買いました. 今回壊れたのは SanDisk Ultra Fit 128GB です. 【 サンディスク 正規品 】5年保証 USB…

qiskit.aqua で shor アルゴリズムの実行

qiskit.aqua に実装されている shor アルゴリズムを実行してみます. 環境は windows10, python3.7 です. 実行例 jupyter で実行してみました. シミュレーションだと,とても遅いです.N=33のときには3時間かかった上,素因数を見つけられませんでした. …

冪剰余と剰余の逆元を求めるC++/Boostライブラリ

冪剰余 冪剰余 $a ^ b \bmod m$ を求めます.たぶん二分累乗法だと思います. #include <boost/multiprecision/integer.hpp> boost::multiprecision::powm(a, b, m) 剰余の逆元(拡張ユークリッド互除法) 剰余の逆元 $a^{-1} \bmod m$ が存在すれば求めます. (2019年10月5日追記:これはboos</boost/multiprecision/integer.hpp>…

Qiskit.Aqua を使おうとしたら,numpy+mklを要求されたこと.

環境 win10,python3.7 >>>import qiskit >>>qiskit.__qiskit_version__ {'qiskit-terra': '0.9.0', 'qiskit-ignis': '0.2.0', 'qiskit': '0.12.0', 'qiskit-aer': '0.3.0', 'qiskit-ibmq-provider': '0.3.2', 'qiskit-aqua': '0.6.0'} エラー内容 Qiskit.Aq…

Qiskit で量子フーリエ変換を実装する.

量子フーリエ変換について勉強してQiskitで実装してみたのでまとめていきたいと思います. 量子フーリエ変換(QFT) については日本語で解説しているサイトがたくさんあるのでとても助かりました. Qiskit による実装 python3.7 で実行しています. IBM Q Expe…

Mathjax version 3 で数式表示が速くなった

このブログでは数式の描画にMathjaxを使っています。 Mathjaxのversion 3 がでてたので今までの version 2.7.5 から移行しました。 設定の仕方が少し変更されてました。 デモが用意されていたのですぐにできました。 今まで書いた記事全てを確認したわけでは…

量子コンピュータで量子もつれ状態を生成する(Qiskitチュートリアル)

Qiskit をインストールして,チュートリアルの 量子もつれ状態の生成を実機で行うまでやってみたのでまとめていきます.公式のドキュメントがとても詳しいので簡単でした. windows10 ,python 3.7.3 で行いました. Qiskit のインストール Qiskit の APIド…

TOSHIBA dynabook R734/K ノートパソコンのバッテリー交換

ノートパソコンのバッテリーの持ちが悪くなってきたので交換しました. 仕様 ノートパソコンの機種は TOSHIBA dynabook R734/K PR734KEF637AD31 です. 標準で装着されているバッテリーは バッテリパック31AQ,PA5161U-1BRS,PABAS276 という型番です. 10.8…

C++ で2次元配列の最大値を求める.

C++ で1次元配列の最大値を求めるならばfor文を使わずに max_element を使うと楽です. 2次元配列の最大値を一度に求めるSTL関数は私は見つけられませんでしたが,各行に対して max_element を繰り返せばいいでしょう. max_element のおかげで for を書く手…

C++ で std::queue を定数時間で空にする方法

C++ でstd::queue の内容を全て削除したくなったのですが,std::queue には clear 関数がありませんでした. なので,私は直観的には queue が空になるまで pop を繰り返せばいいと思ったのですが,これはqueueのサイズに比例した時間がかかります. もっと…

nvidia/cudaのdockerイメージをrunする時にNVidiaドライバーのバージョンが古いため出るエラーメッセージ

動作環境 グラボ GeForce GTX1080Ti NVidiaドライババージョン 384.66 Docker バージョン 18.09.7, build 2d0083d nvidia-dockerバージョン 2.0.3 エラー発生 上述の環境でCUDA10.1が入ったdockerイメージを次のようにrunしようとしました. $ docker run --…

numpy.gradientで配列の微分をするとき,両端の微分の精度を上げるには

numpy.gradientで配列を微分するとき,配列の境界部分(始端終端)の値だけ目的の正しい微分値が出ないことがあった. すぐに解決したのでメモです. 境界部分での微分はedge_orderというオプションで精度を選べる. numpy.gradient — NumPy v1.16 Manual 何…

TOSHIBA dynabook R734/K ノートパソコンのmSATA SSDの換装(128GB→240GB)

ノートパソコンに入っていた128GBのmSATA-SSDを240GBのものに換装しましたのでその記録です.Cドライブが入ったSSDなのでクローン作業も必要でした.mSATAを扱うのは初めてだったので,面白かったです. 目次 仕様 作業工程 新SSDをmSATA-USB変換アダプタに…

【熱力学】気体の定圧比熱と定積比熱の差とエンタルピー

気体の定圧比熱と定積比熱の差はで与えられる.また,温度変化に伴う体積変化が $ dV = (\partial V / \partial T) _ {過程} d T $ であるような準静的過程での比熱 $ C _ {過程} $ はエンタルピーを $ H=U+p V $ としたとき,比熱は熱力学第一法則より,

【熱力学】体膨張率と等温圧縮率が一定な気体の状態方程式

気体の体膨張率を $ \alpha $ ,等温圧縮率を $ \kappa _ T $ とするとき,次の関係が成り立つ. \begin{equation} \frac{1}{V} d V=\alpha d T-\kappa _ {T} d p \end{equation} $ \alpha $ と $ \beta $ が温度や圧力に依らぬ定数であったとし,温度 $ T _…