• 締切済み

プログラミングの質問です

以下の 3 つのベクトルの内積を計算する関数 InnerProduct() を定義し,実際にそれらの内積の結果を表示するプログラムを作成せよ. v1 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] v2 = [1, -1, 1, -1, 1, -1, 1, -1, 1, -1] v3 = [1, 0, -1, 1, 0, -1, 0, 0, 0, 0] このプログラミングの解答と結果を教えていただけないでしょうか。プログラムは下記の文から始まっています。 # -*- coding: utf-8 -* """ innerproduct.py プログラム """ # 関数の定義 # メイン実行部 v1 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]# -*- coding: utf-8 -* v2 = [1, -1, 1, -1, 1, -1, 1, -1, 1, -1] v3 = [1, 0, -1, 1, 0, -1, 0, 0, 0, 0]

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1523/2217)
回答No.1

課題の丸投げっぽく見える質問にはここではあまり回答がつきません。宿題は自分でやりましょう。 期待されているのとは違うであろう回答をすると、ベクトルの内積などの計算は自分で関数を作るのではなく、NumPyなどのライブラリを使うほうが間違いが入り込む余地を減らせます。v1とv2の内積は下記のコードで求めることができます。 import numpy as np v1 = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) v2 = np.array([1, -1, 1, -1, 1, -1, 1, -1, 1, -1]) print(np.dot(v1, v2))

関連するQ&A

  • プログラミング初心者です

    学校の授業で、コマンドプロント上で簡単なプログラミング(for文、while文、if文、関数作成)といった簡単なものは実習したことがあります。 ただ、プログラム本文の前の、定義付けや、データの受け渡、データの種類といったことはほとんど理解できていません。 さきざき、波形を処理するようなプログラムをいじるかもしれないので(csvファイルからFFT処理、マップ作成、データ結合など)、勉強しておきたいと考えています。 ・プログラムを開発する環境の詳しい説明(コンパイラ、実行の仕方などが詳しく書かれている) ・プログラミングの方法 ・ファイルやデータの種類の説明 など プログラミング+開発環境全体について初心者でもわかるような詳しい説明がされている書籍を紹介してほしいのですが。 使ってみてわかりやすかったと思われる本でも教えてください。 本当にど素人なので質問内容が尻切れの内容でしたら申し訳ないです。 色々間違っているかもしれないので補足がありましたらよろしくお願いします。

  • c言語プログラミングでの質問?です。

    学校でc言語プログラミングを使って簡単なゲームを作りなさい。 という課題が出ました。 下記の条件に沿って作れとのことです。 なかなかいいアイデアが浮かばないんですが、なにかちょうどいいものないですかね? ・scanf文を使うこと。。 ・if文を使うこと。 ・for文(while文)を使うこと。 ・rand関数を使うこと。 ・自分で定義した関数を使うこと。 ・配列または文字列を使うこと。

  • C言語プログラミングについて質問です

    2つの実数のそれぞれの平方根を計算した後にその差を計算し、それを二乗した結果を表示するプログラミングを作り、そしてその関数reverseがmain関数のなかで正しく昨日するか確かめるプログラミングを作る 上のプログラムを教えてください

  • 内積と成す角

    理系の大学3年生です。 線形代数,微積分,数理統計のみ受講したことがあります。 ベクトル空間についてもよくわかっていないのですが、 n次元ベクトルu,vに対して内積(u,v)を定義することが出来ますよね。 また内積を用いてベクトルの大きさ|u|=√(u,u)を定義できますよね。 (実は一般的な内積の定義の仕方もよく知りません。 (u,v)=u1*v1+u2*v2+...+un*vnでいいのでしょうか?) さて、ここで高校で習った内積の定義を思い出すと   (u,v) = |u|*|v|*cosθ と習いました。 変形して   cosθ = (u,v)/{|u|*|v|}  ---(*) となり、二つのベクトルの成す角が求まる、と習いました。 2次元ベクトル,3次元ベクトルならば問題ないのですが。 式(*)の右辺はn次元ベクトルの場合でも機械的に計算して値を求めることが出来てしまいますよね。 ではその場合、2つのn次元ベクトルが成す角って何なのでしょうか? n次元ベクトルでも2つあれば、両方を含む平面を考えることが出来るということでしょうか? 感覚的でよいので、この場合の成す角θについて何らかの解説をお願いできたらと思います。

  • C言語ベクトルの内積計算について

    以下に示すベクトルx,yの内積を算出するプログラムを作成してください。ベクトルは配列として扱い、変数はすべてint型を用いて下さい。また、内積の算出には、void型関数を使用し、算出結果はコマンドライン上に出力すること。 x=(1,2,3),y=(5,6,7)

  • プログラミングC言語

    プログラミングC言語の問題で、 「ベクトルの内積を用いて、2つのベクトルの成す角度を求めるプログラムを作成せよ。」 という問題をやっていて、以下の画像のような答えになるのですが、上手くいきません。 どのようにすればいいのでしょうか? 作ったソースコード #include<stdio.h> #include<math.h> double naiseki(int *vecterA, int *vecterB) { double rad, deg; rad = acos( (vecterA[0]*vecterB[0] + vecterA[1]*vecterB[1]) / ( sqrt((double)(vecterA[0]*vecterA[0] + vecterA[1]*vecterA[1])) * sqrt((double)(vecterB[0]*vecterB[0] + vecterB[1]*vecterB[1])) ) ); deg = rad/3.141592*180; return deg; } int main(void) { double va[2]; double vb[2]; printf("v1_x:"); scanf("%lf", &va[0]); printf("v1_y:"); scanf("%lf", &va[1]); printf("v2_x:"); scanf("%lf", &vb[0]); printf("v2_y:"); scanf("%lf", &vb[1]); puts("内積から求めたベクトルの角度は"); printf("%f",naiseki(va,vb)); puts("です。"); return(0); } 最後のnaiseki(va,vb)のところで互換性がありませんと でてしまいます。 double naiseki のソースコードはこのままでプログラムが 動くようにしてほしいです。 よろしくお願いします!

  • プログラミングで関数の宣言と定義の違いがわからない

    プログラミングで関数の宣言と定義の違いがわからないんですが何が違うんでしょうか?https://www.youtube.com/watch?v=Oygc-zY64K8 この動画の人は定義と同じことを言っているように見えますが

  • pythonのCGIでページを遷移したい

    PythonのCGIserverを使っています。 /cgi-bin/hoge.py から /cgi-bin/foo.py へとページを遷移させたいのですが、うまくいきません。 どうすればいいですか? 以下、hoge.pyのソースです。 #!/usr/local/bin/python # coding: utf-8 (中略) print "Location: /cgi-bin/foo.py\n\n" 他の方法として、 import foo として、fooの関数やメソッドを呼ぶことも考えたのですが、 これもうまくいきません。。

    • 締切済み
    • CGI
  • 大学のベクトル解析の問題です。

    大学のベクトル解析の問題です。 次の公式を証明せよ。ただし、f、g:スカラー関数、 v:ベクトル関数とする。 1.div(fv) = (gradf)・v + fdiv(v) 2.rot(fv) = (gradf)×v + frot(v) 証明はdivやgrad、rotの定義に基づいて行うこと。 という問題です。 わかる方、回答お願いします。 片方でもわかれば、両方解けると思うんですが、 内積や外積の法則がよくわかってないのか、うまくできません。 よろしくお願いします!

  • 大学の宿題でfortranをつかったものがあるんですがわかりません><簡単なものでいいんでどなたかおねがいします>

    大学の宿題でfortarnを使ったものがあるんですがわかりません>< 簡単なプログラミングでいいので親切な方作ってください>< 問題は↓です^^ 関数 f(x) = (1+x2)/(1+x4) を区間 [0,1] 上で積分した結果を出力するプログラムを作成せよ。 但し、積分関数を文関数で定義すること。尚、文関数については5回目に説明されている