約 11,924 件
https://w.atwiki.jp/yanprog/pages/24.html
行列 高速行列冪演算系の問題を解く場合、次を貼り付ける。 ll mod=1000000007; struct mint{ ll value; mint() value(0){} mint(ll v) value((v%mod+mod)%mod){} }; mint operator+=(mint a, mint b){return a=a.value+b.value;} mint operator-=(mint a, mint b){return a=a.value-b.value;} mint operator*=(mint a, mint b){return a=a.value*b.value;} mint operator+(mint a, mint b){return a+=b;} mint operator-(mint a, mint b){return a-=b;} mint operator*(mint a, mint b){return a*=b;} mint operator-(mint a){return 0-a;} /*bool operator==(mint a, mint b){return a.value==b.value;} bool operator!=(mint a, mint b){return a.value!=b.value;} std ostream operator (std ostream os, const mint m){ return ( os m.value );} ll extgcd(ll a, ll b, ll x, ll y){ ll d=a; if(b!=0){ d=extgcd(b, a%b, y, x); y-=(a/b)*x; } else{ x=1,y=0; } return d; } ll modinverse(ll a, ll b){ ll x,y; extgcd(a,b, x, y); return (x%b+b)%b; } mint operator/=(mint a, mint b){return a=a.value*modinverse(b.value,mod);} mint operator/(mint a, mint b){return a/=b;} */ template typename T struct matrix vector vector T { matrix(int n){ vector vector T clear(); resize(n, vector T (n) ); REP(i,n) (*this)[i][i]=1; } matrix(int n, int m){ vector vector T clear(); resize(n, vector T (m) ); } matrix T operator*(const matrix T b){ int n1=this- size(), n2=b.size(), n3=b[0].size(); assert(this- size()==n2); matrix T ret(n1,n3); REP(i,n1) REP(j,n3) REP(k,n2) ret[i][j]=ret[i][j]+(*this)[i][k]*b[k][j]; return ret; } matrix T pow(ll n){ int m=this- size(); assert((*this)[0].size()==m); return pow2(matrix T (m) ,n); } matrix T pow2(matrix t, ll n){ if(n==0)return t; if(n%2==0)return ((*this)*(*this)).pow2( t, n/2); else return ((*this)*(*this)).pow2 ((*this)*t, n/2); } /*T det(){ int n=this- size(); vector vector T x; REP(i,n) x.pb((*this)[i]); T h=1; REP(i,n){ FOR(j,i,n){ if(x[j][i]!=0 j!=i){ REP(k,n)swap(x[j][k], x[i][k]); h*=-1; break; } } if(x[i][i]==0)return 0; T v=1/x[i][i]; h=h*x[i][i]; FOR(j,i+1,n){ T v2=v*x[j][i]; REP(k,n) x[j][k]=x[j][k]-x[i][k]*v2; } } return h; }*/ }; 使用例 SRM544 Div1HARD #include cstdio #include cstdlib #include cmath #include climits #include cfloat #include map #include utility #include set #include iostream #include memory #include string #include vector #include algorithm #include functional #include sstream #include complex #include stack #include queue #include cstring #include assert.h #define FOR(i,a,b) for(int i=(a);i (b);++i) #define REP(i,n) FOR(i,0,n) #define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i) #define EXIST(s,e) ((s).find(e)!=(s).end()) #define ALL(s) (s).begin(),(s).end #define clr(a) memset((a),0,sizeof(a)) #define nclr(a) memset((a),-1,sizeof(a)) #define pb push_back #define INRANGE(x,s,e) ((s) =(x) (x) (e)) #define MP(a,b) make_pair((a),(b)) using namespace std; // BEGIN CUT HERE #define debug(x) cerr #x " = " (x) " (L" __LINE__ ")" " " __FILE__ endl; #define deb(x) cerr #x " = " (x) " , "; #define debl cerr " (L" __LINE__ ")" endl; template typename T std ostream operator (std ostream os, const vector T z){ os "[ ";REP(i,z.size())os z[i] ", " ;return ( os "]" endl);} template typename T std ostream operator (std ostream os, const set T z){ os "set( "; EACH(p,z)os (*p) ", " ;return ( os ")" endl);} template typename T,typename U std ostream operator (std ostream os, const map T,U z){ os "{ "; EACH(p,z)os (p- first) " " (p- second) ", " ;return ( os "}" endl);} template typename T,typename U std ostream operator (std ostream os, const pair T,U z){ return ( os "(" z.first ", " z.second ",)" );} // END CUT HERE typedef long long ll; typedef pair int,int pii; typedef pair long long, long long pll; typedef vector int vi; typedef vector vector int vvi; typedef vector long long vl; typedef vector vector long long vvl; typedef vector double vd; typedef vector vector double vvd; typedef vector string vs; ll mod=1000000007; struct mint{ ll value; mint() value(0){} mint(ll v) value((v%mod+mod)%mod){} }; mint operator+=(mint a, mint b){return a=a.value+b.value;} mint operator-=(mint a, mint b){return a=a.value-b.value;} mint operator*=(mint a, mint b){return a=a.value*b.value;} mint operator+(mint a, mint b){return a+=b;} mint operator-(mint a, mint b){return a-=b;} mint operator*(mint a, mint b){return a*=b;} mint operator-(mint a){return 0-a;} //bool operator==(mint a, mint b){return a.value==b.value;} //bool operator!=(mint a, mint b){return a.value!=b.value;} /* std ostream operator (std ostream os, const mint m){ return ( os m.value );} ll extgcd(ll a, ll b, ll x, ll y){ ll d=a; if(b!=0){ d=extgcd(b, a%b, y, x); y-=(a/b)*x; } else{ x=1,y=0; } return d; } ll modinverse(ll a, ll b){ ll x,y; extgcd(a,b, x, y); return (x%b+b)%b; } mint operator/=(mint a, mint b){return a=a.value*modinverse(b.value,mod);} mint operator/(mint a, mint b){return a/=b;} */ template typename T struct matrix vector vector T { matrix(int n){ vector vector T clear(); resize(n, vector T (n) ); REP(i,n) (*this)[i][i]=1; } matrix(int n, int m){ vector vector T clear(); resize(n, vector T (m) ); } matrix T operator*(const matrix T b){ int n1=this- size(), n2=b.size(), n3=b[0].size(); assert(this- size()==n2); matrix T ret(n1,n3); REP(i,n1) REP(j,n3) REP(k,n2) ret[i][j]=ret[i][j]+(*this)[i][k]*b[k][j]; return ret; } matrix T pow(ll n){ int m=this- size(); assert((*this)[0].size()==m); return pow2(matrix T (m) ,n); } matrix T pow2(matrix t, ll n){ if(n==0)return t; if(n%2==0)return ((*this)*(*this)).pow2( t, n/2); else return ((*this)*(*this)).pow2 ((*this)*t, n/2); } /*T det(){ int n=this- size(); vector vector T x; REP(i,n) x.pb((*this)[i]); T h=1; REP(i,n){ FOR(j,i,n){ if(x[j][i]!=0 j!=i){ REP(k,n)swap(x[j][k], x[i][k]); h*=-1; break; } } if(x[i][i]==0)return 0; T v=1/x[i][i]; h=h*x[i][i]; FOR(j,i+1,n){ T v2=v*x[j][i]; REP(k,n) x[j][k]=x[j][k]-x[i][k]*v2; } } return h; }*/ }; class SplittingFoxes { public int sum(long long n, ll _S, ll _L, ll _R) { mint S=_S, L=_L, R=_R; matrix mint a(4,4); enum{N,X,Y,XY}; a[N][N]=S-L-R; a[XY][XY]=S+L+R; a[XY][Y]=S; a[X][N]=S; a[X][X]=S; a[X][Y]=-L+R; a[Y][Y]=S; a[Y][X]=L-R; //debug(a); //debug(a.pow(n)); int ans=a.pow(n)[XY][N].value; return ans; } };
https://w.atwiki.jp/usapfrog/pages/33.html
前 有限要素法・導出 にて省略した質量行列の作り方とか。 積分前の係数行列 $ [M] =\left[ \iiint \{N_n\} {}^t\{N_n\} dV \right] = \iiint [\tilde{M}] dV $ $ [K] =\left[ \iiint \{\nabla N_n\} {}^t\{\nabla N_n\} dV \right] = \iiint [\tilde{K}] dV $ $ [{\cal M}] = \iiint [\tilde{\cal M}] dV $ $ [{\cal K}] = \iiint[\tilde{\cal K}] dV $ における、$[\tilde{M}], [\tilde{K}], [\tilde{\cal M}], [\tilde{\cal K}]$を扱います。 数値積分については各要素の解説の所にて。 添字 $(i, j, k, l, s, t) \in \{x, y, z\}$ 空間次元に使います。 $1 \leq (n, m) \leq P$ 形状関数の番号付けに使います。 $P$は要素のもつ接点数。 M行列 なにも問題なし…なんだけど数値積分がめんどくさいので、 普通は$dV$を均等に各接点対角要素に配るだけだけだったりします。 $ [\tilde{M}]_{mn} = N_m N_n $ $ [\tilde{M}] = \left[ \begin{array}{c} N_1 \\ \vdots \\ N_m \end{array} \right] [N_1 \cdots N_n] $ K行列 勾配同士の積が噛むので注意。ただし、$N_{n,x} = \partial N_n / \partial x$ 三角形・四面体要素は微分すると形状関数が定数になるので、そのままdVを掛けるだけで$[K]$になります。 $ [\tilde{K}]_{mn} = N_{m,i} N_{n,i} $ $ [\tilde{K}] = \left[ \begin{array}{ccc} N_{1,x} N_{1,y} N_{1,z} \\ \vdots \\ N_{m,x} N_{m,y} N_{m,z} \end{array} \right] \left[ \begin{array}{ccc} N_{1,x} N_{n,x} \\ N_{1,y} \cdots N_{n,y} \\ N_{1,z} N_{n,z} \end{array} \right] $ 高階テンソルについて 弾性運動方程式の話しに行く前に、このページのテンソル表記について。 本導出では当面フォークト表記を使いません。 つまり応力テンソルを${}^t{\bf \sigma} = {}^t[\sigma_{xx} \cdots \tau_{xy}] $とベクトルで扱いません。 当然メモリを食いますが、応力を行列のまま扱えるのは回転やら大変形やらで旨みがあるので。 弾性定数行列 ${\cal C}$ は4階のテンソルで、等方性材料の場合ラメ定数$\lambda, \mu$を用いて以下のようになります。 $ \sigma = {\cal C} \epsilon $ $ {\cal C}_{ijkl} = \lambda \delta_{ij}\delta_{kl} + \mu (\delta_{ik}\delta_{jl} + \delta_{il}\delta_{jk}) $ $\delta_{ij}$はクロネッカーのデルタ。 高階テンソルのイメージに… あんまりよろしくないけど、縮退次元的な表現としてこんな表記をしてみます。 部分行列ではないので注意してください。ただし、$\kappa = \lambda + 2\mu $とします。 テンソル積$\sigma_{ij} = {\cal C}_{ijkl} \epsilon_{kl}$ のイメージが少し湧くのではないかなと。 剛性テンソル テンソル演算と変位のインデックス$i$を保持した状態で、ひずみ・応力を導出する。 $ \epsilon_{kl} = {\cal D}_{kli} u_{i} $ $ {\cal D}_{kli} = \frac{1}{2} \left[ \delta_{ik} \frac{\partial }{\partial x_l} + \delta_{il} \frac{\partial }{\partial x_k} \right] $ $x^d = \frac{\partial }{\partial x}$ これを元に形状関数$ u_{i} = N_{n} u_{in} $を使って、書き直すと $ \epsilon_{kl} = {\cal B}_{klin} u_{in} $ $ {\cal B}_{klin} = \frac{1}{2} \left[ \delta_{ik} \frac{\partial N_n}{\partial x_l} + \delta_{il} \frac{\partial N_n}{\partial x_k} \right] = \frac{1}{2} \left[ \delta_{ik} N_{n,l} + \delta_{il} N_{n,k} \right] $ 先の${\cal C}$テンソルを掛けて、応力は $ \sigma_{uv} = {\cal C}_{uvkl} \epsilon_{kl} = {\cal C}_{uvkl} {\cal B}_{klin} u_{in} $ 仮想仕事式は$ \delta \epsilon \sigma $よりテンソル表記は、 $ \delta \epsilon_{uv} \sigma_{uv} = \delta u_{jm} {\cal B}_{uvjm} {\cal C}_{uvkl} {\cal B}_{klin} u_{in} $ 以上より、要素剛性テンソルは $ [\tilde{\cal K}]_{ijmn} = {\cal B}_{uvjm} {\cal C}_{uvkl} {\cal B}_{klin} $ 質量テンソル 形状関数も三階のテンソルを使って書き直すと、 $ u_k = {\cal N}_{kin} u_{in} $ $ {\cal N}_{kin} = \delta_{ik} N_n $ 慣性項の仮想仕事式は以下のとおり。 $\delta u_j \rho \ddot{u}_i = \delta u_{jm} \tilde{\cal M}_{ijnm} \ddot{u}_{in} =$ $ \tilde{\cal M}_{ijnm} = \rho {\cal N}_{kjm} {\cal N}_{kin} = \rho \delta_{jk} N_m \delta_{ik} N_n = \rho \delta_{ij} M_{nm}$ 行列に戻したいときは $ I = i + 3n, u_I = u_{in} $など普通に添字の次元を落とせば良い。 全体行列に編みこむ時で十分だと思うが。
https://w.atwiki.jp/aspirin-marcov/pages/101.html
==ベクトルとベクトルの積== math ¥begin{array} a b ¥¥ c d ¥end{array} /math
https://w.atwiki.jp/terachaosrowa/pages/4702.html
近所……じゃないけど行列の出来るラーメン屋の券を貰った。 カオスロワに巻き込まれるのも初めてだけど、こんなことも初めてだ。 そんなわけでそのラーメン屋に行ってみることにした。 目的は何と言っても行列とラーメン、本当に今日はすっごい楽しみだ。 地図によれば、この角を曲がったところにお店があるらしい。 多分だけど、一時間以上待ちそうだけど、大丈夫かな? さて、ここの角を曲がれば……えっ 「………………」 「………………」 ええ――――――っ… 二人しか並んでないよ。 並んでいたのは本を読んでいる銀髪の男の人と…… ものすごく物騒な剣をもった巫女の格好した女の子だった。 しかも、なんか女の子の方、凄く機嫌が悪そうだよ。 まあいいや、とりあえず並ぼう……。 「おっと、行列の最後尾は……そっちじゃきに」 「あっ、ありがとうございます」 「プリッ」 銀髪の男の人が丁寧に教えてくれた通りに女の子の後に並んだ。 何か変なしゃべり方だけど、割といい人じゃ…… 「ちょっと、アンタ堂々と割り込みしないでよね!!!!」 「ええ―――っ!!? だってこの人が……?」 「グダグダと口答えしてんじゃないわよ!!!!」 「ええーっ!!?」 「プリッ」 極ナチュラルに嘘ついたよ、この人。 物凄い形相で睨んで来たので、私は男の人の後ろにすかさず並んだ。 本当に怖いよ、この子……。その時、男の人が呟いた。 「やらやれ、気が立った巫女ほど怖いもんは無いね……」 ええ―――っ!!? 私の声、そっくりだ。 「聞・こ・え・て・る・わ・よ? まさかアンタが私を狙ってるやつらの黒幕か!!」 ええ――――――っ!!? 「博麗、怒りすぎは美容に悪いダニ」 「大体はアンタのせいだよ!!!!」 「プピーナ」 ええ――――――――――っ!!? ……それにしても、いつお店が開くのかな? 【一日目・9時40分/日本・東京都港区】 【博麗霊夢@東方Project】 【状態】健康、やさぐれ 【装備】メダジャリバー 【道具】支給品一式、ラーメン二郎の無料券、大量のセルメダル 【思考】 1:二郎の行列の先頭を死守する 【仁王雅治@新テニスの王子様】 【状態】??? 【装備】不明 【道具】参加者詳細名簿、囲碁サッカーの入門書、その他不明 【思考】 基本;??? 1:プリッ 【安中榛名@日常】 【状態】健康 【装備】なし 【道具】支給品一式、ラーメン二郎の無料券、その他不明 【思考】 基本;行列に並んで、ラーメンを食べる。 1:ええ―――っ!!?
https://w.atwiki.jp/opengl/pages/138.html
平行移動、回転、拡大縮小成分が合成された行列から 拡大縮小成分だけを抽出します。 具体的なやり方は、合成行列の平行移動成分を除いた各列の3要素の ベクトルの大きさを計算すると拡大縮小成分が抽出されます。 //#pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include math.h #include stdio.h #define PI 3.1415926 #define WIDTH 320 #define HEIGHT 240 GLfloat modelview[16]; void matrix_print(char* text) { printf(text); glGetFloatv(GL_MODELVIEW_MATRIX,modelview); printf( \n%f,%f,%f,%f\n%f,%f,%f,%f\n%f,%f,%f,%f\n%f,%f,%f,%f\n , modelview[0],modelview[4],modelview[8],modelview[12], modelview[1],modelview[5],modelview[9],modelview[13], modelview[2],modelview[6],modelview[10],modelview[14], modelview[3],modelview[7],modelview[11],modelview[15]); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //視野角,アスペクト比(ウィンドウの幅/高さ),描画する範囲(最も近い距離,最も遠い距離) gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); matrix_print( 初期化状態 ); //拡大縮小 glScalef(5.0,77.0,1.0); matrix_print( スケーリングを適用した状態 ); //平行移動 glTranslatef(100.0f,45.0f,39.0f); matrix_print( 平行移動を適用した状態 ); //回転 glRotatef(60.0f,1.0f,0.0f,0.0f); glRotatef(45.0f,0.0f,1.0f,0.0f); glRotatef(120.0f,0.0f,0.0f,1.0f); matrix_print( 回転を適用した状態 ); printf( 合成行列から拡大縮小成分だけを抜き出す\nX軸 %f\nY軸 %f\nZ軸 %f\n , sqrt(modelview[0]*modelview[0]+modelview[4]*modelview[4]+modelview[8]*modelview[8]),//X軸 sqrt(modelview[1]*modelview[1]+modelview[5]*modelview[5]+modelview[9]*modelview[9]),//Y軸 sqrt(modelview[2]*modelview[2]+modelview[6]*modelview[6]+modelview[10]*modelview[10])//Z軸 ); getchar(); glutSwapBuffers(); } void idle(void) { glutPostRedisplay(); } void Init(){ glClearColor(0.3f, 0.3f, 0.3f, 1.0f); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( 拡大縮小成分の抜き出し ); glutDisplayFunc(display); glutIdleFunc(idle); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/ramen-i/pages/19.html
めん創桜花 横浜のラーメン・つけ麺の名店めん創桜花職人集団!【横浜つけ麺めん創桜花】の味が家庭で簡単に作れる!!【送料無料】TV雑誌で絶賛!!行列ラーメン店の手作り通販用ご馳走つけ麺(大盛9人前)【あす楽対応_関東】【あす楽対応_近畿】【smtb-TD】【yokohama】 TV雑誌で絶賛!横浜の行列店ラーメン店めん創桜花の通販用つけ麺の専門店♪安心・安全・無添加・無化調・無かん水自家製麺のつけ麺が簡単にご家庭で♪行列ラーメン店横浜つけ麺 めん創桜花のご馳走つけ麺(大盛6人前)通販用【あす楽対応_関東】【あす楽対応_近畿】【kanagawagurume】 TV雑誌で絶賛!横浜の行列ラーメン店めん創桜花の炭火炙り焼チャーシュー入り♪お家で簡単プロの味♪行列ラーメン店横浜つけ麺めん創桜花のご馳走つけ麺(大盛3人前)通販用【あす楽対応_関東】【あす楽対応_近畿】 めん創桜花本店で1年間で数日しか食べる事が出来ない【幻の限定】限定★カレーつけ麺(2人前) めん創桜花本店でも1年間で数日しか食べる事が出来ない【幻の限定】【送料無料】限定★カレーつけ麺(8人前)購入で+(2人前おまけ♪) めん創桜花本店でも1年間で数日しか食べる事が出来ない【幻の限定】限定★カレーつけ麺(5人前)購入で+(1人前おまけ♪)→合計お得な(6人前)♪ 関連記事 #blogsearch2
https://w.atwiki.jp/linearalgebra/pages/43.html
このページの内容は書きかけです。 13-3行列式の多重線形性 13-3-1行列の多重線形性
https://w.atwiki.jp/nopu/pages/237.html
ノードの番号の振り方によって、隣接行列の固有値は変化しない 適当に番号をふって作った隣接行列を G とする。 ノード番号に置換σを作用させる。 このとき、G は行・列ともに入れ替えが起こる。 任意の置換は互換の積で書けるから、(i,j)の互換T_ijを考えれば良い。 これを繰り返すと、任意の置換Sを作用した隣接行列を得ることができる。 互換行列は対称かつ直交行列であるから(cf. 行列の変換)、 とおくと、 これは直交変換であるから、固有値は変化しない。 またGの特異値は の固有値の平方根であるから、これも変化しない。 例 互換 (1 2) を作用させる。 を左右からかければよい。 このとき、いずれの固有値も{0,0,0}である。また、特異値は{√2,0,0}である。
https://w.atwiki.jp/terurum/pages/12.html
ノート1p50 書いてある事まんまだが偶数次の交代行列式が平方式であることを証明しようとしている 目標1 偶数次の交代行列式が平方式であることを証明せよ だが実際にはオレンジ枠の部分だけ分かればいい 目標2 n個のみかんをd枚の皿に分ける場合の数を求めよ みかんも皿も区別できない訳だ p51 p52 4k2→{30}=1 4k-132→{32}=3 4k-2332→{33}=4 などと続いていくから {4k2}={30}+{32}+{33}+... 同様に つまり と書ける とおけば すなわち i%3とはiを3で割った余りを示す {4i+[i/3],i%3+1}を上の式に当てはめるとk→i+[i/3], ℓ→i%3+1だからi+[i/3]=Φ4, とすると Ψ4=i5%3とすると Ψ4=i5-3[i5/3]である p53 {5k2}は {402}+{413}+{43}+{442}+{453}+{47}+...とつづいていくので ということで だから では次に{6k}を考えよう {6k}={50}+{512}+{523}+{534}+{55}+{562}+{573}+{584}+... 上の式に代入して∅5=i6+[i6/4]として ここで とすると {6kℓ}はi6のところがi6+ℓ-1になる。 だから一般に と書けることが予想されるが、この予想は十分確からしいしここまでで十分大変なので証明は勘弁してほしい。 ∅n+1=kとすれば総演算記号πをつかって と書ける。ここで ここでψn+1=0とする。またψ3があっても上の式は問題なく成立する。すると 予想 ✩ ∅n+1=k, ψn+1=0 またj=3,...,nにおいて と簡潔な形で書ける。翻って考えれば✩式は樹形図の本質のような式である。∅jは枝分かれの本数を表しているのである。 次のページへ
https://w.atwiki.jp/linearalgebra/pages/130.html
このページの内容は準備段階のものです。数学書房「考える線形代数」をお買い求めください。 4-3. 複素共役行列 <4-2. 転置行列|4-4. 随伴行列> <4-2. 転置行列|4-4. 随伴行列>