• ベストアンサー

Math.sin() を使った計算が合わない

_ranco_の回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

単位はちゃんとラジアンにしてんの? 使ってる公式自体は正しいの?

laser-disc
質問者

補足

_ranco_さん、 お世話になります。 > 単位は う、素のままの数値です。 sinV の 入力が 30 だと計算結果が -0.9880... となってます。 > 公式自体は はい、課題の丸写しなので多分。

関連するQ&A

  • 物理について

    (1)-1<=x<=1に対して形状y(x)=a*cosh(x/a)を図示し、h=y(1)>aを示せ。 形状y(x)=a cosh(x/a)の中央たわみを、s=h-aで定義する。hとはh= y(1)=a*cosh(1/a)です (2)0<sを満たす中央たわみが与えられたとき、方程式、sx+1=cosh(x)は、ただ一つの正の解r(s)をもつことを示せ。 (3)s→+0のときr(s)→0となることを示せ。さらにs→∞ならr(s)→∞となることを示せ。また、r(s)はsの増加関数であることを示せ。 (4)自由につり下がったケーブルの均一な重量分布が0.2ポンド/フィート(-1<=x<=1)であって、s=0.3フィートであるとする。このとき、水平張力Hはいくらか。 と言う問題なのですがどうやって解けばいいのかわかりません。 数学が好きな私ですがお手上げ状態です どうか皆様の力をお貸しください

  • 数学(物理)の問題

    4問の問題が解けません おしえてください (1)-1<=x<=1に対して形状y(x)=a*cosh(x/a)を図示し、h=y(1)>aを示せ。 形状y(x)=a cosh(x/a)の中央たわみを、s=h-aで定義する。hとはh= y(1)=a*cosh(1/a)です (2)0<sを満たす中央たわみが与えられたとき、方程式、sx+1=cosh(x)は、ただ一つの正の解r(s)をもつことを示せ。 (3)s→+0のときr(s)→0となることを示せ。さらにs→∞ならr(s)→∞となることを示せ。また、r(s)はsの増加関数であることを示せ。 (4)自由につり下がったケーブルの均一な重量分布が0.2ポンド/フィート(-1<=x<=1)であって、s=0.3フィートであるとする。このとき、水平張力Hはいくらか。 と言う問題なのですがどうやって解けばいいのかわかりません。 数学が好きな私ですがお手上げ状態です どうか皆様の力をお貸しください

  • 【高校物理】仕事率の計算を教えてください

    よろしくお願いします。 問題 水平なあらい床の上で,質量10kgの物体をロープで引き,1.0m/sの速さで運んでいる。床と物体との間の動摩擦係数は0.50とする。ロープを水平に対して30°だけ上向きに引く場合の仕事率を求めよ。(答え.38W) 質問者の考え 水平方向に引っ張るべき力の大きさは (動摩擦係数)×(垂直抗力)=(動摩擦係数)×(物体の質量)×(重力加速度)=0.50×10×9.8=49[N]. いま,水平に対して30°だけ上向きに引くとしたら,これを実現するために必要な力の大きさは49×{2/(√3)}.1秒間に水平方向に1.0m動いているのだから,力の向きに座標軸を取るならば,その座標軸方向へは(√3)/2[m]だけ動いている.したがって,求める仕事率は49×{2/(√3)}×{(√3)/2}=49[J/s]=49[W]. 正しい解答を教えていただけますか。

  • C言語によるチェビシェフ窓の計算について

    現在、C言語でチェビシェフ窓を計算することを考えてます。 一応、エラーもなく実行できるのですが、中央の値が1になりません。 これで正しいのかどうかもわからないので、どなたか教えていただけないでしょうか。 よろしくお願いいたします。 ///////////////////以下 プログラム ///////////////// #include <stdio.h> #include <math.h> /** * 逆双曲余弦関数の定義 */ double Acosh(double x); /** *チェビシェフ関数の定義 * n:関数の次数 */ double Chev(int n, double x); void main(void) { int i, N=128, k, M=(int)floor((N-1)/2); ///data:入力 w:出力(ウィンドウ係数) ii ,kk インデックスの倍精度型, nn サンプル数の倍精度型 double data[128], w[128], ii, kk, nn; // s :メインローブ対サイドローブの比 double t0, s, u, sum; ////円周率の定義 const double pi=3.1415926; nn=(double)N, s=1000.0; //入力をすべて1に初期化 for(i=0;i<N;i++){data[i]=1.0;} /////チェビシェフ窓の計算ルーチンと出力 t0=cosh((1.0/(nn-1))*Acosh(s)); for(i=0;i<N;i++){ ii=(double)i; for(k=1;k<=M;k++){ kk=(double)k; u=ii-(nn-1)/2.0; if(k==1){ sum=Chev(N-1,t0*cos(kk*pi/nn))*cos(2.0*pi*kk*u/nn); }else{ sum+=Chev(N-1,t0*cos(kk*pi/nn))*cos(2.0*pi*kk*u/nn); } } w[i]=data[i]*(s+2.0*sum)/nn; printf("w[%d]=%4.3f\n",i,w[i]); } } double Acosh(double x) { double x2=x*x; return log(x+sqrt(x2-1)); } double Chev(int n, double x) { if(fabs(x)<=1){ return cos((double)n*acos(x)); }else{ return cosh((double)n*Acosh(x)); } } /////////////// ここまで /////////////////// //////////////////以下出力結果///////////// w[0]=0.628 w[1]=0.285 w[2]=0.348 w[3]=0.419 w[4]=0.499 w[5]=0.588 w[6]=0.686 w[7]=0.795 w[8]=0.914 w[9]=1.044 [中略] w[50]=14.268 w[51]=14.559 w[52]=14.832 w[53]=15.085 w[54]=15.320 w[55]=15.533 w[56]=15.725 w[57]=15.895 w[58]=16.041 w[59]=16.164 w[60]=16.264 w[61]=16.338 w[62]=16.388 w[63]=16.413<-中央値 w[64]=16.413<-中央値 w[65]=16.388 [中略] w[121]=0.686 w[122]=0.588 w[123]=0.499 w[124]=0.419 w[125]=0.348 w[126]=0.285 w[127]=0.628

  • 仕事率の式

    先日、ある国家試験を受けてきました。その物理の分野での問題で、次のようなわからない問題がありました。 [問題] 仕事率(動力)Pの説明として、正しいものは次のうちどれか。 (1)  P(仕事率)=F(力)×t(時間) (2) P(仕事率)=F(力)×S(変位)+t(時間) (3) P(仕事率)=F(力)×S(変位) (4) P(仕事率)=S(変位)×t(時間) おそらく、変位というのは、距離Sに方向があるベクトル量だと思いますので、 P=W/t=FS/t のSに該当すると思われます。とすると、この(1)から(4)に解答はないのではないかと思うのですが、いかがでしょうか?

  • なぜこの答えになるのかわかりません・・

    地上73.5メートルの屋上から水平方向に対して30度上方に初速19.6m/sで小球を投げ上げた時、水平方向の距離で一番近いのはどれか?ただし、重力加速度は9.8m/s2とする。 という問題があり、答えには 地上に到達する時間を求めるには、-73.5=19.6t-1/2×9.8t2(tの二乗)をとくこと。水平方向の到達距離は初速度の水平方向の成分に求めた時間をかければよい。したがって、次の式から答えが求められる 19.6cos30×5.0 とありました。 中学生以来物理をしていない私には、まったくこの答えの意味がわかりませんでした。 -73.5=19.6t-1/2×9.8t2(tの二乗) は公式なのかなと思い、これを覚えようと思っていたのですが、そうすると 19.6cos30×5.0 はなんなのか、また水平方向の成分とは??と、わからなくなり、さらにこの×5.0はどこからきているのかなと、この答えにもものすごく疑問がわいてしまいました。 一体、こういった問題の場合、どんな公式を覚え、どうやってとけばいいのでしょうか??教科書も何もない私に、わかりやすく教えてください(>-<)

  • C言語での計算

    C言語初心者で、計算するプログラムを作ってみようと思い、少ない知識で十進数を二進数にするプログラムを作ってみましたが、うまくいきません。 #include <stdio.h> #include <math.h> main () { int s, t, r; double x=10,y,n; printf("十進数は"); scanf("%d",&s); n = s / 2; r = s % 2; y = pow(x, n); t = y + r; printf("二進数は%d",t); return 0; } コンパイルして実行してみると、3つ問題が見つかりました。 (1)十進数が0のとき、二進数が1と表示される。 (2)十進数が1のとき、二進数が2と表示される。 (3)十進数が20以上のとき、正しい値が表示されない。 問題箇所を指摘していただけると幸いです。 よろしくお願いします。

  • リブの強度計算

    ss400 □-100×50×t3.2 の角パイプ2本をT字型に溶接にて組まれた構造があり、水平部材は2000mm、垂直部材は1000mm、水平部材の中間、幅50mmの面に取り付けてあります。  そのT字構造の右側コーナーに、三角形のリブ150mm×150mm×t4.5mm(斜辺は約212mm)2個の150mmの面を角パイプ幅50mmの面に溶接にて、角パイプの幅100mmの面とリブ外側の面が同じ面になるように(よって2個のリブ内側面間の距離は41mm)取り付けてあり、水平部材の右端部に鉛直下向きに3000Nの力がかかっています。    このリブの圧縮荷重を計算する場合、水平部材に発生するモーメント荷重を水平のどの位置で取ればよいのか、リブのどの断面で計算すれば良いのか、また座屈荷重は計算しなくても良いのかわかりません。上記数値は参考に記載したのですが、考え方だけでも教えていただけたら幸いです。  よろしくお願いします。

  • シンプソン則について

    大学の課題で ∫0~5 e^(-3t) * cos^2 *(2t) をシンプソン則を用いて求めるプログラムを作成せよ。積分の刻みは0.01毎  という課題がでました。 私は授業で作ったプログラムを元に、以下のプログラムを作ったのですが、答えが大きすぎて(5より大きいと間違いと言っていました)受け取ってもらえません。どこがいけないのでしょうか? あと、nには どのような数字をいれればよいのでしょうか?nは使わないのでしょうか。 お願いします。 #include "stdio.h" #include "math.h" void main() { int n; double i, a, b, h, S, S1, S2, S3; double f (double); a = 0.; b = 5.; printf ("N="); scanf ("%d", &n); h = (b - a) / (double)n; S1 = 0.; S2 = 0.; S3 = f (a) + f (b); /* 両端の値*/ /* 奇数番目の値*/ for (i = 0.01; i < 5; i = i + 0.02) { S1 = S1 + 4. * (f (a + (double)i * h)); } /* 偶数番目の値*/ for (i = 0.0; i < 5; i = i + 0.02) { S2 = S2 + 2. * (f (a + (double)i * h)); } S = (h / 3.) * (S1 + S2 + S3); printf ("%d %lf\n", n, S); } double f (double t) { double y; y = (exp(-3. * t) / 2.) + ((exp(-3.* t) * cos(4. * t)) / 2.); return y; }

  • プログラム開始から 2秒毎に 値を加算する

    ・プログラム開始から 2秒毎に 値を加算する ・増える値はdouble型の 1.0 とする ・呼び出した時の 経過時間に応じて 一気に加算する ・増える条件を変えた場合は、double型 の 変数に変える直前までの値を加算した後で、  その時間を記録して、そこから2秒毎に値を加算する ・増える条件変更は 10.0 と -5.0 とする  条件の変更はscanfを使って 入力する値が  0 の時は 1.0 増加状態に、  1 の時は 10.0 増加状態に  2 の時は -5.0 増加状態に  変更される  こういう条件でプログラムを作ってみました  以下のような感じです。  int a;  time_t timer;  long t1 , t2;  static bool time_sw[3];  double math = 0;  double math_s = 0;  double bai = 1.0;  t1 = ( long )time( &timer );  while(1){   printf("呼び出すものを教えてください\n");   scanf( "%d" , &a );   switch( a ){    case 0:     if( time_sw[0] == false ){      t2 = ( long )time( &timer );      math_s += bai * difftime( t2 , t1 ) / 2 ;      t1 = ( long )time( &timer );      bai = 1.0;      time_sw[0] = true;      time_sw[1] = false;      time_sw[2] = false;     }     else{      t2 = ( long )time( &timer );      math = bai * difftime( t2 , t1 ) / 2 ;     }     break;    case 1:     if( time_sw[1] == false ){      t2 = ( long )time( &timer );      math_s += bai * difftime( t2 , t1 ) / 2 ;      t1 = ( long )time( &timer );      bai = 10.0;      time_sw[0] = false;      time_sw[1] = true;      time_sw[2] = false; }     else{      t2 = ( long )time( &timer );      math = bai * difftime( t2 , t1 ) / 2 ;     }     break;    case 2:     if( time_sw[2] == false ){      t2 = ( long )time( &timer );      math_s += bai * difftime( t2 , t1 ) / 2 ;      t1 = ( long )time( &timer );      bai = -5.0;      time_sw[0] = false;      time_sw[1] = false;      time_sw[2] = true;     }     else{      t2 = ( long )time( &timer );      math = bai * difftime( t2 , t1 ) / 2 ;     }     break;    }    printf( "t1 = %d\nt2 = %d\n\n経過時間 %6.0f\n増加数 %6.0f\n\n" , t1 , t2 , difftime( t2 , t1 ) , math_s + math );  }  ここで質問なのですが、  ・このソースであってますでしょうか?  ・time関数で呼び出した値を 変数timer にいれてから long型のt1、t2にキャスト変換して入れていますが、long型ではなくもっと適切な型に入れることは可能でしょうか?   可能でしたら適切な型はなんでしょうか? 後、私は時間が余りないので時間内に回答がなければ返信が来週になります。 申し訳ありません。