• ベストアンサー

音のした時間差から砂粒が落ちた場所を調べる

均一な金属板に振動センサーを取り付けて、 金属板に落ちた砂粒の場所を調べる、という方法を考えています。 とりあえず、センサーが3カ所あれば二次元の座標が特定できるか? と思って考えているのですが・・・ 三つのセンサーの座標をそれぞれ(x1,y1)、(x2,y2)、(x3,y3)として、 金属板を振動が伝わる速度をv、 砂粒が落ちた座標を(X,Y)とすると・・・ 砂粒が落ちてから各センサーに振動が届く時間t1,t2,t3は、 sqrt( (x1-X)^2 + (y1-Y)^2 ) / v = t1 sqrt( (x2-X)^2 + (y2-Y)^2 ) / v = t2 sqrt( (x3-X)^2 + (y3-Y)^2 ) / v = t3 と、ここまでは簡単に判ったのですが、 問題は、いつ落ちたかが判らないのです。 そこでとりあえず、センサー1で検出した時間を基準にして・・・と思って、 sqrt( (x1-X)^2 + (y1-Y)^2 ) / v - t1 = 0 sqrt( (x2-X)^2 + (y2-Y)^2 ) / v - t1 = d2 sqrt( (x3-X)^2 + (y3-Y)^2 ) / v - t1 = d3 (d2,d3はセンサー1に対して、それぞれセンサー2、3で検出した時間差) これを連立方程式にして、maximaに掛けてみたのですが、 どういうわけか [ ] なんて、空っぽの答えしか出てきません。 そもそも考え方が間違ってるんでしょうか。。?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

まるで地震計の3点の測定から、震央を出す問題のようですね。地震の場合は、初期微動継続時間が距離に比例することを使えますが。 さて、今の問題では、落ちた時間が最初の式の中に入っていませんので出せません。そこで、落ちた時間をt0として、t1,t2,t3は測定開始からの時間とします。すると sqrt( (x1-X)^2 + (y1-Y)^2 ) / v = t1-t0 sqrt( (x2-X)^2 + (y2-Y)^2 ) / v = t2-t0 sqrt( (x3-X)^2 + (y3-Y)^2 ) / v = t3-t0 となり、未知数x,y,t03つ、式3つで原則的には出そうですが。

Pholiota
質問者

お礼

補足が一つしか付けられないので、お礼にて・・・ 試しに両辺を二乗してmaximaに掛けてみたら、こんどは 解なしではなくて、複雑すぎて回答不能になりました。 意外と使えんmaximaです。。(^^; 確かに、地震計と同じですね。 だとするとどこかに、参考になりそうな資料とかないものでしょうか。。

Pholiota
質問者

補足

なるほど確かに、t0が抜けていました! で、早速、未知数X,Y,t0でmaximaに掛けてみましたが・・・ やっぱりダメでした。orz 複雑すぎて回答不可能とか、エラーでもなく、 即答で解なし、です。 やっぱり何かが違うのでしょうか・・・

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#111804
noname#111804
回答No.4

t1、t2、t3は実際では数値ですが それを変数にしたために、変数が多すぎて 方程式が解けなかったのでは?

全文を見る
すると、全ての回答が全文表示されます。
  • eroermine
  • ベストアンサー率18% (83/444)
回答No.3

GPSの問題と似てますね。 なぜGPSが四つの衛星を受信すると位置と時間がわかるのかと自称数学通の人に聞くとなんかわかったような答えが返ってきます。 ちなみに地表面を仮定すると衛星は三つでOK とGPSの説明書にはあります。 GPSができたころやってみたけど難しすぎ。 最近は産経新聞で鉢巻の数学者が子供向けのコラムでてきとーなこと書いてた。

全文を見る
すると、全ての回答が全文表示されます。
  • c_850871
  • ベストアンサー率53% (49/91)
回答No.2

Pholiotaさん,今日は. いや今晩は,かも知れません.(笑) 面白い実験ですね. Pholiotaさんをご納得させられる回答ではないと思いますが,センサー1で検出した時間というのは砂の落下位置とその距離の条件によって異なりますから,基準化しても意味を成さないのは感覚的にお分かり頂けると思います. すなわち,いつ落ちたかを判断するには,結局3次元空間上でないと絶対的な基準を定めることが出来ないと私は考えます. ご参考になりましたら.

全文を見る
すると、全ての回答が全文表示されます。
noname#227064
noname#227064
回答No.1

センサーの位置にしろ時間にしろ誤差を含んだ数値と思いますので、必ず解ける連立方程式になるとは限りません。 > sqrt( (x1-X)^2 + (y1-Y)^2 ) / v = t1 > sqrt( (x2-X)^2 + (y2-Y)^2 ) / v = t2 > sqrt( (x3-X)^2 + (y3-Y)^2 ) / v = t3 つまり、この三つの方程式の1つの点で交わることはまずないでしょう。 3つの方程式から2つずつ選んで、3通りの交点を求めてその重心を砂粒が落ちた場所とするのはどうでしょうか?

Pholiota
質問者

補足

確かに、 ちょっとでも誤差があると解が出なくなりそうな気もしますね。。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Mapleで連立方程式の解が正常に出力されません

    こんにちは。 Windows2000でMaple7の環境です。 A(-1,-2),B(3,4),C(5,6)の△ABCの内心の座標を求めています。 各辺の直線の方程式を求めて点と直線間の距離の公式を使って内心の座標を求めようと試みたのですが何故か最後の連立方程式の解が4組も出力されてしまいます。これは何が原因なのでしょうか? x1=-1;y1=-2;x2=3;y2=4;x3=5;y3=6; subs({x1=1,y1=1,x2=3,y2=2,x3=2,y3=3},{y-y1=(y1-y2)/(x1-x2)*(x-x1)}); {y - 1 = 1/2 x - 1/2} subs({x1=1,y1=1,x2=3,y2=2,x3=2,y3=3},{y-y1=(y1-y3)/(x1-x3)*(x-x1)}); {y - 1 = 2 x - 2} subs({x1=1,y1=1,x2=3,y2=2,x3=2,y3=3},{y-y3=(y3-y2)/(x3-x2)*(x-x3)}); {y - 3 = -x + 2} d1:=abs((1/2*x-y-1/2))/((1/2)^2+(-1)^2)^(1/2); d1 := 1/5 | 1/2 x - y - 1/2 | sqrt(5) sqrt(4) d2:=abs((2*x-y-1))/((2)^2+(-1)^2)^(1/2); d2 := 1/5 | 2 x - y - 1 | sqrt(5) d3:=abs((x+y-1))/((1)^2+(1)^2)^(1/2); d3 := 1/2 | x + y - 1 | sqrt(2) solve({d1=d2,d2=d3,d3=d1},{x,y}); {y = 1/18*sqrt(5)*sqrt(2)+2/9, x = 8/9+1/18*sqrt(5)*sqrt(2)}, {y = -1/6*sqrt(5)*sqrt(2)-1/3, x = 1/6*sqrt(5)*sqrt(2)+1/3}, {y = 2/9-1/18*sqrt(5)*sqrt(2), x = 8/9-1/18*sqrt(5)*sqrt(2)}, {x = 1/3-1/6*sqrt(5)*sqrt(2), y = -1/3+1/6*sqrt(5)*sqrt(2)}

  • 到達時間差法の連立方程式の解法について

    到達時間差法による音源の特定について http://www.enjoy.ne.jp/~k-ichikawa/sound_location.html ------------- (以下上記URLからの引用です。) sqrt((x2-x0)^2+(y2-y0)^2) - sqrt((x1-x0)^2+(y1-y0)^2) = c(t2-t1) …(式1)   ここで、sqrt : 平方根(ルート)       ^2 : 2乗   を意味します。 同様に、マイク2,3に音が到達する時間差(t3-t2)から次の式が成り立ちます。  sqrt((x3-x0)^2+(y3-y0)^2) - sqrt((x2-x0)^2+(y2-y0)^2) = c(t3-t2) …(式2) 式1,2の連立方程式を解くことにより、音の発生場所(音源位置)(x0,y0)を求めることができます。 ちなみに、式1はマイク1の位置(x1,y1)およびマイク2の位置(x2,y2)を焦点とする双曲線1であり、式2はマイク2の位置(x2,y2)およびマイク3の位置(x3,y3)を焦点とする双曲線2です。 (ここまで引用です。) ----------- この場合、分かっている値は、マイク1,2,3の位置、マイク1,2の到達時間差、マイク2,3の到達時間差ですが、この場合、この連立方程式をどのように解けば、音源位置を特定することができるのでしょうか? (式1)、(式2)の連立方程式の具体的な解き方を教えてもらえると大変助かります。 よろしくお願い致します。

  • 二点の座標から距離や角度を求めたいのですが、Matlab

    こんにちは、Matlabの初心者ですがよろしくお願いします。 ある座標、たとえば、A(x1, y1) B(x2, y2)があったとして、 この二点間の距離は、 sqrt((x2-x1)^2 + (y2-y1)^2) だと思いますが、もっと簡潔に求めることができる関数とかが導入されていたりしないかと思いました。AやBを定義しておいて、AとBだけを使うことができないかと思いました。 また、この二点を通る直線とX軸とがなす角度は、 atan(sqrt((y2-y1)^2)/sqrt((y2-y1)^2)) で求められるかと思いますが、これも同様にもっと簡潔な方法がないかと思いました。 いかがでしょうか。よろしくお願いします。

  • x,y座標から角度の差、大きさの差の求め方について

    角度=315度 大きさ=43.8 角度=313.794度 大きさ=43.4 の角度の差、大きさの差をX,Y座標で求めた場合 X1=43.8×cos315=30.971 Y1=43.8×sin315=-30.971 X2=43.4×cos313.794=30.036 Y2=43.4×sin313.794=-31.32754 x,y座標から角度の差、大きさの差の求め方について ご教示いただけますでしょうか?

  • 2点の座標と弧の関係

    早速ですが、皆様のお知恵を貸してください。 今悩んでいるのは、昇華型プリンターから排出されたペーパーのカットされた瞬間 における、ペーパー先端の位置座標を計算で出そうとしております。 分かっているのは、紙の長さ(弧長)とその自由高さ(カールしてますので)。 プリンターのカッターの位置座標とペーパーを支えているプリンターの出口座標だけです。 CADで描けばすぐ出せるのですが、何百回も行うので、エクセルで集計したいと 考えています。当然計算と実際の値が違うことも承知しております。 計算してもどうしてもシュミレーション値と算出値が合わないので何卒、解る方がおりましたら 力を貸してください。 また、ネットで円と円の交点を求める計算式を見つけたのですがこれもまた良く解りません?円1(X1,Y1)半径R1、円2(X2,Y2)半径R2の時、 A=Y1-Y2 B=X2^2+R2^2-X1^2+A^2-R2^2 C=-4*((X1-X2)^2+A^2) D=8*A^2*X1-4*B*(X1-X2) E=4*A^2*X2^2-4*A^2*X1^2-B^2 とすると(X、Y)座標は F=(ーD+SQRT(D^2-4*C*E))/(2*C)と(ーDーSQRT(D^2-4*C*E))/(2*C)・・X座標 G=Y1+SQRT(R1^2-(F-X1)^2)・・Y座標と言うのですが、 何故A式を行うのか?。B、C、D,E式はどんな方程式から出てくるのか? Fは二次方程式の解の公式で、C~Eを当てはめている事は分かります。 以上、長くなりましたが、解る方がいればこれについてもお願いいたします。

  • 二次元の完全弾性衝突

    二次元での完全弾性衝突について 今、二次元空間内に半径rの剛体円盤1、2があります。 時刻t=0でのそれぞれの位置が(X1,Y1)、(X2,Y2)、速度が(Vx1,Vy1)、(Vx2,Vy2) で与えられています。 この二つが衝突する条件を求めよという問題で衝突直前t=t0の値として (X1',Y1')、(X2',Y2')、(Vx1,Vy1)、(Vx2,Vy2)という値も与えられているのですが どうしたらいいのでしょうか。 また衝突するとき、衝突後の速度V1'、V2'を衝突時の座標(X1,Y1)、(X2,Y2)、 速度V1、V2を使ってあらわすにはどうすればいいのでしょうか。 よろしくお願いします。

  • 【数学B】直線のベクトル方程式のtの消去について

    教科書には 点Oを座標の原点と考えて、定点Aの座標を( x1, y1),直線g上の任意の点Pの座標を( x, y )とし、→d=( l, m )とすると →a = ( x1, y1), →p = ( x, y ) であるから、直線gのベクトル方程式は、次の形になる ( x, y ) = ( x1, y1) + t( l, m ) = ( x1 + lt , y1 + mt ) すなわち {x = x1 + lt {y = y1 + mt ここで、媒介変数であるtを消去すると、 点( x1, y1)を通り、→d=( l, m )が方向ベクトルである直線の方程式は m( x - x1) - l( y - y1) = 0 このように記載されているのですが、 媒介変数tをどのような手順で消去したら” m( x - x1) - l( y - y1) = 0 ”に辿り着くのかが分かりません。 どなたか、tの消去から” m( x - x1) - l( y - y1) = 0 ”までの計算の手順を教えて頂けないでしょうか?

  • 2点間の距離で困っています

    ご教授お願い致します 点a(x1,y1,z1)と点b(x2,y2,z2)があります この2点を結ぶ直線の長さはab=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)) で求まります ここからが質問です、例えばabの長さが100.5と出たとき点aは固定してabのベクトル上で100.0の点cのx,y,zの座標を求めるにはどの様な公式を使えばよろしいでしょうか?

  • C言語の課題

    何度も申し訳ありません http://okwave.jp/qa/q7877142.html より、回答を受けてプログラムを作成したのですが、 衝突時の時間と座標をどのように作成すれば良いか分からなく、 一秒後の点Pの位置を算出したのですが、合っているかどうかが分かりません。 非常に難しくで困っています。お助け下さい。 ソースコード #include <stdio.h> #include<math.h> int main(void) { float p,v,vx,vy,x,y,x1,y1,katamuki,gyaku,seiki_x,seiki_y,n,touei_x,touei_y,idoux,idouy,px,py; /* p=(x,y); v=(vx,vy); */ x=1.0; y=1.0; vx=1.0; //x方向の速さ vy=-2.0; //y方向の速さ y1=-x; //逆数 x1=-y; //逆数 printf("逆数は(x1,y1)=(%f,%f)\n",x1,y1); seiki_x=x1/(sqrt(x1*x1+y1*y1)); seiki_y=y1/(sqrt(x1*x1+y1*y1)); printf("正規化、(x方向,y方向)=(%f,%f)\n",seiki_x,seiki_y); n=-(vx*seiki_x)+(vy*seiki_y); //nは内積 touei_x=n*seiki_x; //touei_xは投影x軸 touei_y=n*seiki_y; //touei_yは投影y軸 printf("投影ベクトル(x,y)=(%f,%f)\n",touei_x,touei_y); idoux=vx+2*touei_x; //衝突後、点Pのxの移動方向 idouy=vy+2*touei_y; //衝突後、点Pのyの移動方向 px=-idoux; //点Pのx座標 py=-idouy; //点Pのy座標 printf("1秒後の位置は点P(x,y)=(%f,%f)",px,py); return 0; } /* 逆数は(x1,y1)=(-1.000000,-1.000000) 正規化、(x方向,y方向)=(-0.707107,-0.707107) 投影ベクトル(x,y)=(-1.500000,-1.500000) 1秒後の位置は点P(x,y)=(2.000000,5.000000) */

  • 3d 法線ベクトル計算 

    3dのポリゴンの法線ベクトルを算出するプログラムなんですが 以下のプログラムに間違っている部分はあるでしょうか 何度か試してみたのですが何度か0で除算したりしてしまいます 渡す数字が悪いのか、プログラム自体が間違っているのかわかりません 少し助けてください //法線ベクトル計算開始 x1=1つめの頂点のx座標 y1=1つめの頂点のy座標 z1=1つめの頂点のz座標 x2=2つめの頂点のx座標 y2=2つめの頂点のy座標 z2=2つめの頂点のz座標 x3=3つめの頂点のx座標 y3=3つめの頂点のy座標 z3=3つめの頂点のz座標 x4=x2-x1 y4=y2-y1 z4=z2-z1 x5=x3-x1 y5=y3-y1 z5=z3-z1 x6=y4*z5-y5*z4 y6=x4*z5-x5*z4 z6=x4*y5-x5*y4 //正規化 er=sqrt(x6*x6+y6*y6+z6*z6) x6=er*x6 y6=er*y6 z6=er*z6 //終わり /法線ベクトル計算