- ベストアンサー
C++でベクトルの加減を行うプログラムを作成してください
- C++でベクトルの加算と減算を行うプログラムを作成する方法を教えてください。
- また、配列とforループを使用しているため、1次元と2次元の配列についても教えていただけると助かります。
- サンプルのプログラムを使用して内積を求める方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
自分で作る必要なし。ライブラリに任せるが吉。 #include <iostream> #include <algorithm> #include <functional> #include <iterator> #include <numeric> using namespace std; int main() { float w[] = {1.2, 2.3, 3.4, 4.5, 5.6}; float x[] = {4.8, 2.6, 1.3, 9.1, 8.7}; float y[5]; std::transform(w, w+5, x, y, std::plus<float>()); cout << "w + x = { "; copy(y, y+5, ostream_iterator<float>(cout," ")); cout << "}\n"; std::transform(w, w+5, x, y, std::minus<float>()); cout << "w - x = { "; copy(y, y+5, ostream_iterator<float>(cout," ")); cout << "}\n"; float u = inner_product(w, w+5, x, 0.0f); cout << "内積 = " << u << "です\n"; }
その他の回答 (5)
こんにちは。 #5です。 すみません。 #5の「■補足」について、以下の訂正があります。 <訂正前> 2つのベクトルの計算を行うには、1つのベクトルを表す座標が2点、 2つのベクトル分を合わせて、合計4点の座標が必要だと思われ ますが、ご提示のソースの下記配列、 <訂正後> 2つのベクトルの計算を行うには、1つのベクトルを表す座標の1点につき、 X座標とY座標の2つの成分が必要だと思います。 2つのベクトル分を合わせると、以下のように合計4つの座標成分(a1、a2、b1、b2) ベクトル1: 座標 α = ( a1, a2 ) ベクトル2: 座標 β = ( b1, b2 ) が必要だと思われますが、ご提示のソースの下記配列、 以上です。 失礼致しました。
こんにちは。 以下は、直接の回答ではないのですみません。 私自身は、数学に関してあまり詳しくありませんので、参考サイトを紹介致します。 下記サイトは、図解入りで、説明も素人から見ても解りやすく解説されていると思い ますので、参考になるかと思います。 下記サイトでは、それぞれについての「計算式」も記載されていますので、これから C言語(またはC++)での計算式(及びプログラム)も作成できるかと思います。 ■参考サイト ※下記ページは何れも同一サイトです。 ベクトルの和 http://www.geisya.or.jp/~mwm48961/kou2/vector_sum.htm ベクトルの差 http://www.geisya.or.jp/~mwm48961/kou2/vector_sub.htm ベクトル成分の計算 http://www.geisya.or.jp/~mwm48961/kou2/v_coord3.html ベクトルの内積 http://www.geisya.or.jp/~mwm48961/kou2/dot_product0.html 高校数学の基本問題(※上記4つのページのトップページです) http://www.geisya.or.jp/~mwm48961/koukou/index_m.htm ■補足 2つのベクトルの計算を行うには、1つのベクトルを表す座標が2点、 2つのベクトル分を合わせて、合計4点の座標が必要だと思われ ますが、ご提示のソースの下記配列、 > float w[] = {1.2,2.3,3.4,4.5,5.6}; > float x[] = {4.8,2.6,1.3,9.1,8.7}; ↑この配列が、ベクトルの何(座標?)を表しているのかが解りません。 ※当方の理解不足かもしれませんので、その際はすみません。 以上です。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
...ひょっとしてベクトルの加減算のやり方知らないんですか? 紙とエンピツで筆算するのと同じ手順を踏めばいいですよ?
- asuncion
- ベストアンサー率33% (2127/6290)
>ベクトルの内積はこれじゃないんですか? >だったらもう分かんないです あきらめる前に、教科書やインターネットなどで調べてみましょう。
補足
それで載ってたのがこれなんですよ #include <iostream> using namespace std; int main() { float w[] = {1.2,2.3,3.4,4.5,5.6}; float x[] = {4.8,2.6,1.3,9.1,8.7}; float u = 0.0; int i; for(i=0;i<5;i=i++) { u += w[i] * x[i]; } cout << "u=" << u << "です\n"; return 0; } どっちか1つでいいからお願いします
- Tacosan
- ベストアンサー率23% (3656/15482)
そんな感じ. 「ベクトルの加減」はどのように計算すればいいのか, あるいは「ベクトルの内積」はどのように計算すればいいのか理解できていればそんなに難しくないはず.
補足
ベクトルの内積はこれじゃないんですか? だったらもう分かんないです
補足
2つのベクトルを適当に初期化して行う事って書いているんですが、これはどうすればいいんですか? あと、すみません…本当にすみません… std::transform(w, w+5, x, y, std::plus<float>()); と copy(y, y+5, ostream_iterator<float>(cout," ")); と float u = inner_product(w, w+5, x, 0.0f); って表現を習っていないんですが、例文並みに簡単には出来ないでしょうか…