自分のブログ名

物理の空き地 by M.E_K

日々の学び、感じたことを書いております。ブログ移行中->https://physics-mek.com

移転しました。

リダイレクトします。

【boost】LNK1104 Cannot open file "libboost_date_time-vc142-mt-gd-x32-1_74.lib"

Visual Studio2019でboostライブラリを使うと,以下のエラーが出た.

LNK1104 Cannot open file "libboost_date_time-vc142-mt-gd-x32-1_74.lib"

※バージョンによって1_74が違う

【対処法】
1. "C:\boost_1_74_0"のディレクトリ内にある"bootstrap.bat"を実行
2. "C:\boost_1_74_0"内に"b2.exe"が生成されるので,"b2.exe"を実行
※"bjam.exe"が生成される可能性もあるらしい.
3. "C:\boost_1_74_0\stage\lib"が生成され,ディレクトリ内にlibファイルが生成される.
4. VisualStudioのLinker-Inputに"C:\boost_1_74_0\stage\lib\*.lib"を追加

exeファイルをStartupAppに設定する

1.Win + R
→”ファイル名を指名して実行”が立ち上がる
2.shell:starup→OK
エクスプローラーが立ち上がる
ディレクトリパス→

PATH="C:\Users\○○\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" 

3.windowsのstartupAppにしたいexeファイルをコピー.

US配列 再起動なし レイアウト切替

【筆者の現状】
これまでデスクトップPCをメインPCとし,キーボードをJIS配列の茶軸メカニカルを使用していた.最近外でのPC使用が増え,メインPCをLaptopに変えること決意.LaptopPCを新調.これまでUS配列のキーボードに憧れていたことからUS配列のLaptopを購入.

以前:デスクトップ,JIS

現在:Laptop,US


【問題】
JIS配列とUS配列のキーボードを切り替える際に,windowsの設定からキーボードレイアウトを切り替え,再起動する必要がある.
せっかくLaptopにしたのに,席から外れるたび再起動は渋い.


【解決法】
ULE4JISというソフトフェアだ.
https://www.vector.co.jp/soft/winnt/util/se476294.html
これはJIS配列をUS配列に偽装するソフトフェアで,US配列はUS配列のまま使える.これで,windowsをUS配列に統一することができる.


このソフトフェアのおすすめの使い方は,startupAppにすることである.
設定の仕方は以下を参照
exeファイルをStartupAppに設定する - 物理の空き地 by M.E_K

US配列 日本語入力切替

キーボードにはJIS配列とUS配列の二種類が存在する.

JIS配列は日本仕様に作られていて,日本語入力切替キーが存在する.一方,US配列は英語仕様であるため,そんなものは存在しない.


そこで,US配列では日本語入力の切り替えを(Shift+Caps)(Alt+`)が担当している.組み合わせで切り替わるため慣れが必要ではあるが,そんな大きな問題ではないだろう.

Scratchで素数判定してみた

Scratchはpython以上に変数の定義が独特でstringでの出力になかなか苦労した。
因数もすべて表示させたかったが、うまくいかず断念。
Scratchで論理的思考力を十分身につけられるので教材としてよいと思った。
こどもの出来る出来ないが明白化するので集団で取り組むとなると難しいとも思う。

C++ 文字列に含まれる特定の文字列を数える

#include <string>
#include <sstream>

using namespace std;

int main ()
{
   string str = "*****||||||||||||";
   int count = 0 ;
   for (int i = 0;i < str.size();i++)
   {
       if (str[i] == '*'){count++:}
   }
   cout << count << endl;
}

冬課題の解法

はじめに

基礎物理学実験の冬休み課題の解法を解説する。

1-1

問題
y = ax^b
係数、それぞれの平均誤差を求める式を示せ。

解法
元の形のままではxの項にbがあるため、最小二乗法をすることが出来ない。そこで、対数を取ることで肩の文字を下し、一次式に置き換える。
\begin{align}
\log{y}&=\log{(ax^b)}\\
&=\log{a}+b\log{x}
\end{align}

各項をY,A,B,Xに置き換える。
Y=A+BX
\begin{align}
Y&=\log{y}\\
A&=\log{a}\\
B&=b\\
X&=\log{x}
\end{align}

一次式が得られ、最小二乗法が行える。ここから最小二乗法を行う。
S=\sum_{i=1}^{n}{\{Y_i-(A+BX_i)\}}が最小になる値A,Bを決定する。
SA,Bでそれぞれ偏微分し、それを0にすると最小となる。
\begin{align}
\dfrac{\partial{S}}{\partial{A}}&=-\sum_{i=1}^{n}{\{Y_i-(A+BX_i)\}}=0\\
\dfrac{\partial{S}}{\partial{B}}&=-\sum_{i=1}^{n}{X_i\{Y_i-(A+BX_i)\}}=0
\end{align}

\sum{Y_i}=[Y]のように示すと、
\begin{align}
A&=\frac{[Y][X^2]-[XY][X]}{n[X^2]-[X]^2}\\
B&=\frac{n[XY]-[Y][X]}{n[X^2]-[X]^2}
\end{align}

またその平均誤差は、
\sigma{[Y]}=\sqrt{\frac{[Y^2]-A[Y]-B[YX]}{n-2}}
誤差伝搬法で、A,Bの誤差は以下のように求まる。

\begin{align}
\sigma{A}&=\sqrt{\left(\dfrac{\partial{A}}{\partial{[Y]}}\right)^2\left(\sigma{[Y]}\right)^2}\ \ \ \ \ \ \ \ 
\sigma{B}=\sqrt{\left(\dfrac{\partial{B}}{\partial{[Y]}}\right)^2\left(\sigma{[Y]}\right)^2}\\
&=\sigma{[Y]\frac{[X^2]}{n[X^2]-[X]^2}}\ \ \ \ \ \ \ \  \ \ \ \ \ \ \ 
=\sigma{[Y]\frac{n}{n[X^2]-[X]^2}}
\end{align}

まとめて表すと、
A=\frac{[Y][X^2]-[XY][X]}{n[X^2]-[X]^2}\pm\sigma{[Y]\frac{[X^2]}{n[X^2]-[X]^2}}
B=\frac{n[XY]-[Y][X]}{n[X^2]-[X]^2}\pm\sigma{[Y]\frac{n}{n[X^2]-[X]^2}}

ここで、
A=\log{a}\ \ \ \ \ B=b\\
\therefore a = e^{\frac{A}{B}}\ \ \ \ b=B
また、それらの誤差は誤差伝搬法より、
\sigma a=\sqrt{\left(\dfrac{\partial{a}}{\partial{A}}\right)^2\left(\sigma{A}\right)^2+\left(\dfrac{\partial{a}}{\partial{B}}\right)^2\left(\sigma{B}\right)^2}

\sigma b=\sqrt{\left(\dfrac{\partial{b}}{\partial{A}}\right)^2\left(\sigma{A}\right)^2+\left(\dfrac{\partial{b}}{\partial{B}}\right)^2\left(\sigma{B}\right)^2}


この後は偏微分するだけなのでぜひ自分で手を動かして答えを導いてほしい。