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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1565閲覧

行列の||v||2  (2-ノルム)を求める

hkey0495oy

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/30 17:50

以下の7×7正方行列Aと7次ベクトルbを掛け算して行列とベクトルの積Ab(C)を求め,この積Ab(C)の2-ノルムを求めたいのですがネットで調べても該当しそうなプログラムが見当たらなかったのでどなたかご教授願います.

ちなみに2-ノルムとは
√(|v1|^2+|v2|^2+……|vn|^2)
で算出されるものです.

以下のコードの場合では
Abの各値を二乗した値の和
(-8)^2 + (-2)^2 + 0^2 + ...... +4^2
の平方根になります.

これをこの場合の値ではなくA,bがどのような値になっても求めれるようにしたいです.


以下プログラム

import numpy as np

A=np.array([[2,1,0,0,0,0,0],[-1,2,1,0,0,0,0],[0,-1,2,1,0,0,0],[0,0,-1,2,1,0,0],[0,0,0,-1,2,1,0],[0,0,0,0,-1,2,1],[0,0,0,0,0,-1,2]])
print('A=\n',A)

b=np.array([[-3],[-2],[-1],[0],[1],[2],[3]])
print('B=\n',b)

C=np.zeros((7,1))
for i in range(0,7):
for j in range(0,7):
C[i,0]+=A[i,j]*b[j,0]
print('Ab=\n',C)

--ここに2-ノルムを求めるプログラムを記述--


以下出力結果

A=
[[2,1,0,0,0,0,0]
[-1,2,1,0,0,0,0]
[0,-1,2,1,0,0,0]
[0,0,-1,2,1,0,0]
[0,0,0,-1,2,1,0]
[0,0,0,0,-1,2,1]
[0,0,0,0,0,-1,2]]

b=
[[-3]
[-2]
[-1]
[0]
[1]
[2]
[3]]

Ab=
[[-8]
[-2]
[0]
[2]
[4]
[6]
[4]]

--ここに2-ノルムの計算結果を表示--

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

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

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

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

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

guest

回答1

0

ベストアンサー

numpyはベクトルや行列に特化したライブラリですので、様々な便利関数があります。
以下コードを紹介しますので、実行して確かめてみてください。

Python

1import numpy as np 2 3A=np.array([[2,1,0,0,0,0,0],[-1,2,1,0,0,0,0],[0,-1,2,1,0,0,0],[0,0,-1,2,1,0,0],[0,0,0,-1,2,1,0],[0,0,0,0,-1,2,1],[0,0,0,0,0,-1,2]]) 4print('A=\n',A) 5 6b=np.array([[-3],[-2],[-1],[0],[1],[2],[3]]) 7print('B=\n',b) 8 9C = A @ b # 行列やベクトルの積は@で書きます。 10print('C=\n',C) 11 12norm = np.linalg.norm(C, ord=2) # L0/L1/L2ノルムも関数があります 13print('norm=\n',norm)

投稿2020/10/30 23:13

toast-uz

総合スコア3266

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

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

hkey0495oy

2020/11/04 16:29

ノルムの計算式が分かっていたのでどうにかして計算しようとしていましたが,いろんなライブラリがあるんですね!わざわざありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問