解決済みの質問
ベクトルの加減を行うプログラムを作成せよ。
ベクトルの内積を求めるプログラムを作成せよ。
↑作るプログラムは1つにする(1つにまとめる)
2つのベクトルを適当に初期化して行う事
これ、だれか教えてくれませんか?配列とforを使うんですが、配列も、1次元と2次元しかやってないですし。
こんな感じのレベルだと思うんですが…
#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;
}
本当に誰か助けてください。
投稿日時 - 2009-11-22 21:35:21
自分で作る必要なし。ライブラリに任せるが吉。
#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";
}
投稿日時 - 2009-11-23 00:32:30
補足
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);
って表現を習っていないんですが、例文並みに簡単には出来ないでしょうか…
投稿日時 - 2009-11-23 00:45:38
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(5件中 1~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 )
が必要だと思われますが、ご提示のソースの下記配列、
以上です。 失礼致しました。
投稿日時 - 2009-11-23 02:49:00
こんにちは。
以下は、直接の回答ではないのですみません。
私自身は、数学に関してあまり詳しくありませんので、参考サイトを紹介致します。
下記サイトは、図解入りで、説明も素人から見ても解りやすく解説されていると思い
ますので、参考になるかと思います。
下記サイトでは、それぞれについての「計算式」も記載されていますので、これから
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};
↑この配列が、ベクトルの何(座標?)を表しているのかが解りません。
※当方の理解不足かもしれませんので、その際はすみません。
以上です。
投稿日時 - 2009-11-23 01:50:10
>ベクトルの内積はこれじゃないんですか?
>だったらもう分かんないです
あきらめる前に、教科書やインターネットなどで調べてみましょう。
投稿日時 - 2009-11-22 23:19:52
補足
それで載ってたのがこれなんですよ
#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つでいいからお願いします
投稿日時 - 2009-11-23 00:00:24