スキップしてメイン コンテンツに移動

投稿

2012の投稿を表示しています

あの人はいま3

私にとってMSGといえばMcAuley Schenker Groupなのですが、vocalのRobin McAuleyが何しているのか気になって検索してみました。すると2011年までSurvivorでvocalを務めた後、2012年にはMSGに参加してライブを行なっているようです。声質が1980年代の産業ロック(?)によく合っていて、歌唱力も安定しているので安心して聴いていられます。音質&歌唱のよさそうな音源をピックアップしてみました。 MSGのライブでは、McAuley Schenker名義の曲はSave Yourselfのみのようでした。他の曲も聴きたいなぁ。 Survivorのギターの人って結構動くんですね。 歌唱から熱のようなものはあまり感じられないのですが、なんか好きなんです。 10年くらい前にソロ名義でアルバムを出したのを買ったのですが、それが現時点でまとまった最後の音源らしいです。音源を出してくれないかな。

AsymptoteでCyclideを描く

リー微分の模式図を描きたいのですが、曲面としてトーラスよりは複雑だけれども複雑過ぎないような曲面を探していました。 このページ を見ていたところ、丁度良さそうな曲面としてcyclideという曲面がありました。これは(u,v)[0,2π]×[0,2π]上を動く媒介変数、a,b,c,dを定数として、 h=accos(u)cos(v)x=(d(cacos(u)cos(v))+b2cos(u))/hy=(bsin(u)(adcos(v)))/hz=bsin(v)(ccos(u)d)/h size(500,0); import graph3; currentprojection=orthographic(2,1,3); real a=3; real b=2.9; real c=0.7; real d=1.7; real h(pair z){return a-c*cos(z.x)*cos(z.y);} real X(pair z){return (d*(c-a*cos(z.x)*cos(z.y))+b^2*cos(z.x))/h(z);} real Y(pair z){return (b*sin(z.x)*(a-d*cos(z.y)))/h(z);} real Z(pair z){return b*sin(z.y)*(c*cos(z.x)-d)/h(z);} triple F(pair z){return (X(z),Y(z),Z(z));} surface s=surface(F,(0,0),(2pi,2pi),50,50); draw(s,paleblue,mediumblue,nolight); 定数の値をかなり微調整しないと意図した図になりませんでした。 それにしても上記のサイトの図の配色は綺麗ですね。Asymptoteでは、光の効果を入れると図が黒っぽくなってしまいます。 光の具合を変えることが出来るようなのですが、イマイチ把握できていません。 3DCG作成用のソフ...

Asymptoteでレムニスケートを描く2

少し前にレムニスケートの媒介変数表示が実数全体で定義されているため、Asymptoteでの描き方が分からないというような浅学であることがバレバレの投稿をしてしまいました。 レムニスケートを極形式で表せば一発で解決してしまうのですね。 r2=a2cos2θ size(500,0); import graph; //レムニスケート real lem=1.2; real r(real th){ if(cos(2*th)>=0){return lem*sqrt(cos(2*th));} else{return 0;} } pair Z(real th){return (r(th)*cos(th),r(th)*sin(th));} draw(graph(Z,-pi/4,pi/4,100)); draw(graph(Z,3pi/4,5pi/4,100)); 動径rの定義式に条件分岐してありますが、描画する部分でcos2θが負の値を取らないような範囲に制限しているためあまり意味はありません。 この媒介変数表示を用いてz(z1)のRiemann面の模式図を描いてみました。 うーん。まだ見づらいですね。透過させてみたところで、手前にあるものと奥にあるものを自動で判別して描画してくれるわけではないようでした。

Asymptoteでレムニスケートを描く

レムニスケートは(x2+y2)2=a2(x2y2)で定義される曲線((±a,0)x軸との交点を表す)です。例えばa=1として(x2+y2)2=x2y2を媒介変数表示すると x(t)=t(t2+1)t4+1,y(t)=t(t21)t4+1 と表せることが知られていますが、媒介変数表示でレムニスケートのグラフを描こうとするとtは実数全体を動かす必要があるのでどのように描いたらよいのかわかりませんでした。 Asymptoteで用意されているcontourモジュールを使えば、x,yについて陽に解かれていない陰関数f(x,y)=0の形のグラフを描くことが出来ます。 size(500,0); import contour; real a=1; //レムニスケートのx軸との交点座標 real[] c={0}; real f(real x,real y){return (x^2+y^2)^2-(a^2)*(x^2-y^2);}; draw(contour(f,(-1,-1),(1,1),c)); ここではf(x,y)=(x2+y2)2a2(x2y2)とし、f(x,y)=0のグラフを描かせています。  contourでは2変数関数f(x,y)x-y平面の矩形を指定するための2点(ここでは(1,1), (1,1)を指定しているので(x,y){(x,y)R2|1x1,1y1}で表される矩形上を動く)、それに実数値の配列を指定する必要があります。配列を指定することで、等高線を描くことが出来るようになっています。 x-y平面上の曲線が媒介変数表示で(t)=(x(t),y(t))の形で表されるならば、曲面z=g(x,y)上の曲線でx-y平面上に射影した像が(t)になるものがφ(t)=(x(t),y(t),g(x(t),y(t))のように簡単に定義出来ます。 しかし$f(x, ...

Asymptote シルクハット型C級関数

前回t0g(t)=0, 0t10g(t)1, t1g(t)=1を満たす C級関数を使いました。今回はこの関数を使って半径1の閉円板上でφ(x,y)=1, 半径2の開円板の外部でφ(x,y)=0となる関数φ:R2Rの図を書いてみました。 初めて挑戦したことと言えば、関数を条件分岐で定義したくらいです。 シルクハット型というほど立ち上がっていません。次は真横から見た状態です。 かなり綺麗な曲線になっています。e1/tという関数のt=0付近での挙動はあまり問題にならないのでしょうか。 size(500,0); import graph3; currentprojection=orthographic(2,-1,0.5); real f(real t){ if(t>0) {return exp(-1/t);} else {return 0;} }; real g(real t){return f(t)/(f(t)+f(1-t));} real h(real t){return g(t+2)*g(2-t);} triple F(pair z){return (z.x,z.y,h(abs(z)));}; surface s=surface(F,(-2.5,-2.5),(2.5,2.5),50,50,Spline); draw(s,lightgray,meshpen=0.01+gray,nolight); zlogzのRiemann面についての例が こちら で見つけられます。 バネの作図例もあるようでした。さすがにどれも手馴れている感じだなあ。

Asymptoteでz(z1)のRiemann面を作図する2

引き続きf(z)=z(z1)のRiemann面について。 今度は双曲線関数の代わりに、多様体論で1の分割を作る際などに用いられる関数を使ってみました。 つまり f(t)={e1/t(t>0)0(t0) と置き、g(t)g(t)=f(t)f(t)+f(1t) と定義します。g(t)g(0)=0, g(1)=1を満たしているので、2つの関数を滑らかにつなぐときに便利です。さらに φ(x)={tanhx(x1) と定義、F(x,0)=φ(x), F(x,1)=1を満たすF(x,y)F(x,y)=(1g(y))φ(x)+g(y) と定義します。この関数を使い、今回作図したものは次のようになりました。 今回もパーツを寄せ集めて描画しているので、滑らかであって欲しい部分が滑らかでないという問題が残っていますが、前回よりはマシになったのではないでしょうか。曲面をもう少しうまく定義すれば、より滑らかに出来そうです。

AsymptoteでzのRiemann面を作図する。

f(z)=zのRiemann面を作図してみました。 作図しているのは、(r,θ)を独立変数として (x(r,θ)y(r,θ)z(r,θ))=(rcosθrsinθr2cosθ2) という曲面です。θ=π,3πが負の虚軸上に対応していて、θ=4πで元に戻ります。同様にして、z(r,θ)=r2cosθnなどとすれば、f(z)=znに対応するRiemann面が作図出来ます。 size(7cm); import graph3; currentprojection=orthographic(2,-3,3); triple R(pair z) {return ((z.x)*cos(z.y),(z.x)*sin(z.y),(z.x/2)*cos((z.y)/2));}; real a=10; real b=4; pen p=black; pen q=lightgray; surface s=surface(R,(0,0),(a,b*pi),8,24,Spline); draw(s,q,meshpen=p);

Asymptoteでバネを描く

Asymptoteで2次元のバネを描いてみます。 まず螺旋(t)=(acost,asint,t)と定義し、y軸周りに回転したものをz軸の正の側から眺める(x-y平面に射影する)と、バネに見えるはずです。 y軸周りをz軸をx軸に向ける向きに角度θだけ回転する回転行列は Ry(θ)=(cosθ0sinθ010sinθ0cosθ) で与えられるので、(t)Ry(θ)で回転させると (xyz)=(cosθ0sinθ010sinθ0cosθ)(acostbsintt)=(acosθcost+tsinθasintasinθcost+tcosθ) となります。したがってこの螺旋をx-y平面に射影したものは (xy)=(acosθcost+tsinθasint) です。これをAsymptoteで描画してみたのが次の図です。 size(10cm); import graph; real a=10; // 螺旋の半径 real b...

Asymptoteの練習 Log zのRiemann面的な何か

graph3モジュールを使ってlogzのRiemann面っぽいものを作図してみました。 アイディアは Mathematicaのチュートリアル を参考にしました。 配色は Color Scheme Designer を参考に色々試してみましたが、結局グッとくるものができませんでした。 Tikz and PGF example には配色のセンスのよい図表が沢山あり、あんなふうにしてみたいのですがセンスはどうにもならなさそうです。TikzはTeXをゴリゴリ使える人が使っているという印象があります。以前にTikzを使って花火を打ち上げていた人もいたような。 Asymptoteの用例集も配色にこだわれば使用人口が増えると思うのですが…。 見た目って大切ですよね。 メッシュの数を減らしすぎると意図している曲面にならないようでした。 影を付けるとドス黒い色になったので却下しました。 欲を言えば、Mathematicaのチュートリアルのように矩形に切り取ったものを表示させたいのですが、今のところ方法がわからないのでとりあえず。 size(10cm); import graph3; currentprojection=orthographic(3,1,1); triple R(pair z) {return ((z.x)*cos(z.y),(z.x)*sin(z.y),z.y);}; real a=12; real b=6; pen p=rgb("29467F"); pen q=rgb("4575D4"); surface s=surface(R,(0,0),(a,b*pi),6,30,Spline); draw(s,q,meshpen=p,nolight); graph3モジュールでは、x-y平面上の曲面z=f(x,y)の他に、u,vを独立変数とした(x,y,z)=(x(u,v),y(u,v),z(u,v))タイプの曲面を扱うことが出来ます。 今回は後者の方法でz=(x,y)を独立2変数として(xcosy,xsiny,y)(x,y)[0,12]×[0,6π]の領域で描画しています。独立変数(x,y)はsurf...

Asymptoteの練習 無理関数の分岐

無理関数 f(z)=z(z1) の分岐(branch cut)についての説明図。 以前にAblowitz & Fokasの COMPLEX VARIABLESという本 で読んだ時にわかりやすいと思ったので載せておきます。 z=r1eiθ1, z1=r2eiθ2と置けば、f(z)=r1r2exp(i2(θ1+θ2))と表せる。Θ=12(θ1+θ2)と置けば、f(z)=r1r2eiΘであるが、これを0θi<2π (i=1,2)の範囲で考えると、下図のように、矢印方向からzの実軸に近づくときにΘの値が図に書き込んだ値に近づく。  Rez>1Rez<0では実軸の上から近づいても下から近づいてもΘの値がmod2πで変わらないので、f(z)の値は連続であるが、0<Rez<1においては実軸の上から近づけたΘの値と下から近づけた値とがmod2πで一致しないため、f(z)はここで不連続となる。 さらに2πθi<4π (i=1,2)で同様のことを考えてみると、これら2枚のz平面をつなぎ合わせることでf(z)が1価正則となるような面(Riemann面)が構成出来る。 さらに、πθ1size(6cm);defaultpen(fontsize(10pt));dot((0,0));dot((1,0));label("0",(0,0),SW);label("1",(1,0),SE);realb=0.6;draw((b,0)(1.05+b,0),Arrow(SimpleHead,7));label("\mathrm...

Asymptoteの練習 積分と和の比較

k=11ks(s>1)が収束することを11xsdxの収束性から証明するときのグラフ 任意のべき乗を扱う関数はないようで、xs=exp(slogx)を用いて描画しています。 (追記2012/4/23: べき乗はx^sと書いておけばよいようです。) ここで描画しているのはx65のグラフです。 マニュアルを読むと、べき乗根は三乗根まで用意されているようです。 軸のスケールの変え方がよくわからないので、n分の1倍したりn倍したりで調整しています。 size(7cm); texpreamble(" \usepackage{amssymb} \usepackage{amsmath} ");// \dotsbを使うため import graph; import patterns; defaultpen(fontsize(10pt)); xaxis("x",Arrow(SimpleHead)); yaxis("y",Arrow(SimpleHead)); real n=2; real f(real x) {return 1/exp((6/5)*log(n*x));}; pair F(real x) {return (x/n,f(x/n));}; draw(graph(f,0.25,4,operator ..)); add("hatch",hatch(3,dir(45))); for(int i=1; i<7; ++i){ draw(((i-1)/n,F(i).y)--F(i)--(F(i).x,0)); filldraw(((i-1)/n,F(i).y)--F(i)--(i/n,0)--((i-1)/n,0)--cycle,pattern("hatch")); label(format("",i),(i/n,0),S); } label("y=1xs\ $(s ...

Asymptoteの練習 円環領域

Laurent展開の説明に出てくる円環領域の作図。 領域を斜線で表すのに初めてpatternsモジュールを用いた。 hatchが斜線を表す。 円周上に矢印を描くために小細工がしてある。 arcで描いた円周の内部を塗ろうとすると、pathがcyclicでないと怒られた。 cyclicにするにはどうするのだろう。 size(6cm); import patterns; defaultpen(fontsize(10pt)); real r1=3.2; real r2=1.8; path p2=arc((0,0),1,0,360); path g2=scale(r2)*unitcircle; path g1=scale(r1)*unitcircle; path p1=arc((0,0),4,0,360); path g2a=arc((0,0),r2,45,360,direction=CW); path g2b=arc((0,0),r2,-135,180,direction=CW); path g1a=arc((0,0),r1,0,45,direction=CCW); path g1b=arc((0,0),r1,180,225,direction=CCW); add("hatch",hatch(3,dir(45),gray(0.5))); filldraw(g1^^g2,pattern("hatch")+evenodd); label("r2",(r2,0),(0.8,-1),Fill(white)); label("γ2",(r2+0.65)*dir(140),Fill(white)); draw(p2); draw(g2a,MidArcArrow(SimpleHead)); draw(g2b,MidArcArrow(SimpleHead)); draw(g1a,MidArcArrow(SimpleHead)); draw(g1b,MidArcArrow(SimpleHead)); draw(g2); draw(g1); draw(p1); label("z",((r1+r2)/2-0.1)*dir(60),E,F...

Asymptoteの練習 簡単なグラフ

Jordanの補題の証明に出てきそうなグラフ。 サイズのことがあまりよくわかっていないので、微調整しまくりで綺麗ではない。 あと、各軸のスケールの変更の仕方もよくわからない。 size(7cm); import graph; defaultpen(fontsize(10pt)); xaxis("x",Arrow(SimpleHead)); yaxis("y",-0.3pt,2.15pt,Arrow(SimpleHead)); real f(real x) {return abs(sin(x));}; real g(real x) {return 2*abs(x)/pi;}; pair F(real x) {return (x,f(x));}; pair G(real x) {return (x,g(x));}; pen dashed=linetype(new real[] {5,5}); draw(graph(f,-2,2,operator ..)); draw(graph(g,-2,2,operator ..),dashed); draw(F(pi/2)--(pi/2,0),dotted); draw(F(-pi/2)--(-pi/2,0),dotted); dot(F(pi/2)); dot(F(-pi/2)); label("π2",(pi/2,0),S); label("π2",(-pi/2,0),S); label("y=|sinx|",F(1)+(0,0.27)); label("y=2π|x|",G(1)+(0,-0.3));

Asymptoteの練習2 三角形とその分割

コーシーの積分定理の証明中に出てくる三角形の図をAsymptoteを使って作図してみました。 未だに使い方がよくわかっていないのと、プログラミングの素養が全くないので こんな図を書くのにも数時間かかってしまいました。 size(4cm); defaultpen(fontsize(12pt)); int n=3; pair[][] a = new pair[n][n]; path p=(-0.5,0)--(0.5,0); // 三角形の頂点 a[0][0]=(3,7); a[1][0]=(0,0); a[2][0]=(8,3); // 三角形の線分の中点 for(int i=1; i<n; ++i){ for(int j=0; j<n; ++j){ a[j%n][i]=(a[(j+1)%n][i-1]+a[(j+2)%n][i-1])/2; } } // 分割された三角形の辺の描画 for(int j=0; j<n; ++j){ draw(a[j%n][0]--a[(j+2)%n][1],MidArrow(SimpleHead,3.5,angle=25)); draw(a[j%n][1]--a[(j+2)%n][0],MidArrow(SimpleHead,3.5,angle=25)); draw(a[j%n][1]--a[(j+2)%n][1]); } // 中央の三角形の矢印 for(int j=0; j<n; ++j){ draw(shift(a[j%n][2]+rotate(90)*(unit(a[(j+1)%n][1]-a[(j+2)%n][1])/3))*rotate(degrees(a[(j+1)%n][1]-a[(j+2)%n][1]))*p,Arrow(SimpleHead,3.5,angle=25)); draw(shift(a[j%n][2]+rotate(90)*(unit(a[(j+2)%n][1]-a[(j+1)%n][1])/3))*rotate(degrees(a[(j+2)%n][1]-a[(j+1)%n][1]))*p,Arrow(SimpleHead,3.5,angle=25)); } label("a",a[0][0],N); ...

Team Meのdebut albumがいい感じ

以前にEPをタワーレコードで試聴し衝動買いしたのですが、新しい音源が出ていないか調べてみたところ日本版が既に発売されているようでした。 EPもよい曲が満載ですが、デビューアルバムからの曲の動画を見ると非常に期待されます。 明日にでもCD買いに行こう。