質問編集履歴

1

指摘通り数学的質問を編集しプログラムらしい数式の質問に文章とタイトルを変更しました。

2020/08/04 12:31

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 参考書のとある意味が知りたいプログラムと数式のと思われ
1
+ プログラム上で数式と数学上で数学の違いについて知りたい。また式の落とし込み方は合っているのか?
test CHANGED
@@ -1,11 +1,125 @@
1
+ 提示画像のようにacos();を使いベクトルのなす角からθを求めるプログラムの数式です**余弦定理**の文章の下の式です。提示コードのように
2
+
1
- 提示画像[**図3.8に例を示すが、この公は余弦定理基づいいるが。こ公式から、θを次のように計算で**]文章の提示コードですがこのarccos();内の**||a|| ||b|| **とどいう意味なのでしょうか?かりベク大きさであっても二つあるとどうなのでしょうか?自分が知っている数式と違うため意味がわかりません。
3
+ 式に落とし見ましてその計算結果値とcosθ値を提示サイトの計算サイトに入力してみたのですが値は合っていました。正解なのでしょうか?提示画像は答えは乗っておらず。検索して計算サイを探しましたが直接ものはなく。最後の数値だけ合っているという場合もしかしたらあると思うですがそのあたりはどうなのでしょうか?
2
4
 
3
5
 
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ 参考サイト(計算サイト): https://www.calc-site.com/triangles/trigonometric_angle
4
14
 
5
15
  参考サイト: http://www.geisya.or.jp/~mwm48961/kou2/v_coord4.html
6
16
 
7
17
 
8
18
 
19
+ ![イメージ説明](1fca46e6b5e48972f802b905c9c45850.jpeg)
9
20
 
10
21
 
22
+
23
+
24
+
25
+ ```ここに言語を入力
26
+
27
+ #include "stdio.h"
28
+
29
+ #include "math.h"
30
+
31
+
32
+
33
+ struct vec
34
+
35
+ {
36
+
37
+ public:
38
+
39
+ vec(double xx ,double yy){
40
+
41
+ x = xx;
42
+
43
+ y = yy;
44
+
45
+ };
46
+
47
+
48
+
49
+ double x;
50
+
51
+ double y;
52
+
53
+ };
54
+
55
+
56
+
57
+ int main()
58
+
59
+ {
60
+
61
+ //三角形の三つの座標
62
+
63
+ vec a = vec(-1,1);
64
+
65
+ vec b = vec(2,4);
66
+
67
+ vec c = vec(3,3);
68
+
69
+
70
+
71
+ //方向ベクトルを取得
72
+
73
+ vec ab_v = vec(b.x - a.x,b.y - a.y);
74
+
75
+ vec ac_v = vec(c.x - a.x,c.y - a.y);
76
+
77
+
78
+
79
+ //方向ベクトルからその大きさを取得
80
+
81
+ double ab_length = sqrt((ab_v.x * ab_v.x) + (ab_v.y * ab_v.y));
82
+
83
+ double ac_length = sqrt((ac_v.x * ac_v.x) + (ac_v.y * ac_v.y));
84
+
85
+
86
+
87
+ //内積を取得
88
+
89
+ double dot = (ab_v.x * ac_v.x) + (ab_v.y * ac_v.y);
90
+
91
+
92
+
93
+ //二つのベクトルの大きさの掛け算
94
+
11
- ![イメージ説明](1fca46e6b5e48972f802b905c9c45850.jpeg)
95
+ double ab_ac_length = (ab_length * ac_length);
96
+
97
+
98
+
99
+ //cosθを算出
100
+
101
+ double result = dot / ab_ac_length;
102
+
103
+ // printf("result: %lf\n\n",result);
104
+
105
+
106
+
107
+ double r = acos(result);
108
+
109
+
110
+
111
+ printf("%lf",r);//0.321751/////////////答え(ラジアン)
112
+
113
+
114
+
115
+
116
+
117
+ // printf("%lf",result);//0.948683
118
+
119
+
120
+
121
+ return 0;
122
+
123
+ }
124
+
125
+ ```