-PR-
解決済み

sinを含む方程式の解

  • すぐに回答を!
  • 質問No.43637
  • 閲覧数505
  • ありがとう数7
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 62% (82/132)

方程式 Asin(wt) = Bt + C をtについて解くとどうなるでしょうか?
研究でプログラムを組むために必要なのでぜひお願いします.
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル14

ベストアンサー率 57% (1014/1775)

とてもスマートには行かないと思います。本気で取り組むと、これだけで結構な仕事になっちゃう。
この方程式をいろいろな係数について何度も解くのかどうか、係数の精度がどの位か、値の範囲がどうか、などによってかなり事情が変わりますが、とりあえず一般論。

A=0,w=0,B=0のどれかの場合は簡単ですから、これらの場合は除外します。
T=wt, b=-B/(wA), c=-C/Aとおいて
sin(T) + b T + c = 0
|b|≧1なら解は1個だけですが、|b|<1だと|b|が小さくなるほど解の数が多くなる。全部の解を求めるということだとなかなか大変です。

まず、|bT+c|≦1の範囲だけ調べれば良いことは自明です。(特定の範囲の解を求めるなら、そこだけ検討すればよい。)nπが求めたい解Tに近いような整数nを選んで、
nが偶数→T=x+nπ
nが奇数→T=nπ-x
と変数変換して代入し、
f(x)=sin(x)+p x + q
f'(x)=cos(x)+p
と表します。すると、x∈-π/2~π/2の間でf(x)=0の解を探せばよい。この範囲には最大3個の解があり得ます。そこで、近似的な出発値x[0]を見つけてこれをNewton法
x[n+1]=x[n]-f(x[n])/f'(x[n])
で改良するのが簡単です。ただし重解(y=0がy=f(x)の接線になっている)に近い場合は数値的に不安定になります。これをきちんと処理するのは難しい。(Tをπで割った余りを精密に計算する必要があり、数値の有効桁数が不足する現象(桁落ち)が起こるため、本当にy=f(x)がy=0に交差しているのか、接しているのか、微妙に離れているのか区別できなくなる恐れがあるからです。)
出発値x[0]を得るには、例えば適当な次数のマクローリン展開でも結構ですが、何度も解くのなら単にsineの数表を作っておいてlook upするのが簡単です。
お礼コメント
sunasearch

お礼率 62% (82/132)

丁寧な回答ありがとうございます.
プログラムで解く以外にはないのですね.
御指摘の通りの解の存在する|bT+c|≦1の範囲で,
sin関数と直線の交点はsin関数の1/4周期に最大1つあるようですので
これをもとに二分探索で探すことにいたします.
ありがとうございました.
投稿日時 - 2001-02-23 10:28:16
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル8

ベストアンサー率 21% (10/47)

こんにちは。 プログラムに使うのでしたら、「…展開」を使って近似して、そこからtについて解いてもいいような気がしますが…? テイラー展開などどうでしょう? あ、でも私は3次式の解法はよく分かりません。(^^;) ...続きを読む
こんにちは。
プログラムに使うのでしたら、「…展開」を使って近似して、そこからtについて解いてもいいような気がしますが…?
テイラー展開などどうでしょう?
あ、でも私は3次式の解法はよく分かりません。(^^;)
お礼コメント
sunasearch

お礼率 62% (82/132)

早速の回答ありがとうございます.
私も最終手段としては「・・展開」かなぁなどと考えているのですが,
もしもっとスマートな解があればそちらを使いたいです.
ないのかなぁ...
投稿日時 - 2001-02-22 19:20:40


  • 回答No.2
レベル14

ベストアンサー率 83% (1169/1405)

この方程式は解析的には解けません。 この方程式の場合図的に解く方法が直感的で分かり易いですが、 プログラムに使うとなると図的解法は使えないですね。 数値解法を使うことになります。 プログラムに使うコンピュータがどんなものか分かりませんが、 大型機なら数値解法のモジュールが入っているはずです。 大して難しくありませんから、自分で組むことも十分可能です。 数値解法にはいくつか方法がありま ...続きを読む
この方程式は解析的には解けません。

この方程式の場合図的に解く方法が直感的で分かり易いですが、
プログラムに使うとなると図的解法は使えないですね。
数値解法を使うことになります。
プログラムに使うコンピュータがどんなものか分かりませんが、
大型機なら数値解法のモジュールが入っているはずです。
大して難しくありませんから、自分で組むことも十分可能です。

数値解法にはいくつか方法がありますので、問題に応じて適切なものを選択するとよいと思います。
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ