質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Octave

Octaveは、数値解析のための高レベルのプログラミング言語です。主に理工系の技術者・研究者が使用しており、フリーで使うことが可能。線形もしくは非線形問題を数値的に解くCLIを提供します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

1057閲覧

三角関数のプロットでsin関数を複雑にする意味とは?

esklia

総合スコア81

Octave

Octaveは、数値解析のための高レベルのプログラミング言語です。主に理工系の技術者・研究者が使用しており、フリーで使うことが可能。線形もしくは非線形問題を数値的に解くCLIを提供します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/02/28 09:59

編集2020/02/28 10:24

coursera machine-learningのコース内のweek2
でoctaveを使用して三角関数をプロットするということをやりました。

イメージ説明
tは0から0.98まで0.01刻みで数値を生成しています。
質問内容は画像のy1についてなのですが、
なぜsin(θ)とかではなく、わざわざ(2pi4*t)としたのでしょうか?
また、sin()の中にtがかかっていますが、tのような関数をsin()中に代入することがどうして可能なのでしょうか?

以上二点、ご教授いただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2020/02/28 10:13 編集

pythonは関係ないと思うので、タグを外してください。機械学習もたぶん関係ないです。本当に関係あるタグだけつけてください。
esklia

2020/02/28 10:19

失礼いたしました、今後気を付けます。
guest

回答1

0

ベストアンサー

なぜsin(θ)とかではなく、わざわざ(2pi4*t)としたのでしょうか?

とくに深い意味はないと思います。
sin(x) は周期が 2π の関数ですが、sin(kx) とすると、周期が 1/k 倍になります。
sin(8πx) ということは、周期は 1/4 = 0.25 となります。

三角関数の周期の求め方と例題6問 - 具体例で学ぶ数学

sin()の中にtがかかっていますが、tのような関数をsin()中に代入することがどうして可能なのでしょうか?

t は関数ではなく、配列です。
配列を渡して sin([0, 0.01, 0.02, ..., 0.98]) とすると、その各要素ごとに sin() をとった値の配列 [sin(0), sin(0.01), sin(0.02), ..., sin(0.98)] が返り値になります。

追記

実数(2,4,pi)の中に急に配列が入ることに凄く違和感があるのですが

sin(2*pi*4*[0, 0.01, 0.02, ..., 0.98]) ということなので、
まず sin() が呼び出される前に 8*pi*[0, 0.01, 0.02, ..., 0.98] が計算されます。

スカラーと配列を乗算した場合、その結果は 8*pi を要素ごとに乗算した [0, 8*pi*0.01, 8*pi*0.02, ..., 8*pi*0.98] になります。

この配列を sin([0, 8*pi*0.01, 8*pi*0.02, ..., 8*pi*0.98]) と渡すことで、要素ごとに sin() の値を計算した [sin(0), sin(8*pi*0.01), sin(8*pi*0.02), ..., sin(8*pi*0.98)] が返り値となり、これが y1 に代入されています。

これはsin内で別々のことをやっている(周期を乗算したりしてグラフの見え方を調整すること(2pi4の部分)と、tという配列に対するsinの値を返すことが別なのでは)ように思えるのですが、こういうこともできてしまうという解釈の仕方で問題ないでしょうか?

グラフに関する操作は sin() の行では一切やっていないです。
グラフを表示しているのはそのあとの plot(t, y1) の部分です。

投稿2020/02/28 10:15

編集2020/02/28 10:42
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

esklia

2020/02/28 10:33 編集

ご回答ありがとうございます。 >>>t は関数ではなく、配列です。 確かに配列の定義をしていました。また代入という表現に関しても間違っていました。ご指摘ありがとうございます。 とすると、 y1は横軸tに対する縦軸sinの値を持っているということで合っているでしょうか?実際plot(y1)だけで質問中の画像と同じグラフがプロットできてしまいますので多分あっていると思うのですが。 また、実数(2,4,pi)の中に急に配列が入ることに凄く違和感があるのですが(周期を乗算することと、tという配列に対するsinの値を返すことはsinの括弧内で別々のことを一度にやっているように思えます)、オプションのようなものを使用して同様に横軸tに対応するsinの値を返すということはできないのでしょうか?
tiitoi

2020/02/28 10:32

それであっていますよ。
esklia

2020/02/28 10:38 編集

すみません。只今修正しましたのでよろしければご覧いただけないでしょうか。 >>> 実数(2,4,pi)の中に急に配列が入ることに凄く違和感があるのですが(周期を乗算することと、tという配列に対するsinの値を返すことはsinの括弧内で別々のことを一度にやっているように思えます) の部分です。オプションうんぬんかんぬんは重要でないので少し質問を変えさせていただきます。これはsin内で別々のことをやっている(周期を乗算したりしてグラフの見え方を調整すること(2*pi*4の部分)と、tという配列に対するsinの値を返すことが別なのでは)ように思えるのですが、こういうこともできてしまうという解釈の仕方で問題ないでしょうか?
tiitoi

2020/02/28 10:44

配列を渡すと各要素の sin() の値が計算できるというだけで、sin() の計算をやっていることには変わりないです。
esklia

2020/02/28 11:13

追記で9割がた理解することができました。本当にありがとうございます。配列の各要素ごとに掛け算していてその結果を配列でy1に格納するということでしたか。非常に勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問