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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2966閲覧

eigenでのエラーについて

chiku_soh

総合スコア12

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/07/04 12:17

行列計算を仕様としているのですが、コンパイル時にはエラーをはかれないのですが、
実行時に

terminal

1Assertion failed: row >= 0 && row < rows() && col >= 0 && col < cols(), file Eigen/src/Core/DenseCoeffsBase.h, line 365

というエラーが出ます。
-Wall オプションをつけても何も言われません。

どなたか解決方法をご存知の方がいらっしゃいましたら、ご教授ください。
よろしくお願いいたします。

汚いですが、以下にコードを貼るのでよろしくお願いします。

Cul_Matrix.cpp

1#include <iostream> 2#include <chrono> 3 4using namespace std; 5 6#include "Eigen/Core" 7 8#define Roop_Max 50 9 10int main() 11{ 12 Eigen::MatrixXf A=Eigen::MatrixXf::Zero(2,2); 13 Eigen::MatrixXf Ax=Eigen::MatrixXf::Zero(2,1); 14 Eigen::MatrixXf Ax_=Eigen::MatrixXf::Zero(2,1); 15 Eigen::MatrixXf b_Ax_=Eigen::MatrixXf::Zero(2,1); 16 Eigen::MatrixXf x_true=Eigen::MatrixXf::Zero(2,1); 17 Eigen::MatrixXf x=Eigen::MatrixXf::Zero(2,1); 18 Eigen::MatrixXf x_=Eigen::MatrixXf::Zero(2,1); 19 Eigen::MatrixXf b=Eigen::MatrixXf::Zero(2,1); 20 A(0,0) = 1.0; 21 A(0,1) = 2.0; 22 A(1,0) = 3.0; 23 A(1,1) = 4.0; 24 25 b(0,1) = 1.0; 26 b(1,1) = 2.0; 27 28 x = b; 29 30 for ( int i = 0; i < Roop_Max; i++ ) 31 { 32 x_ = x * x; 33 Ax = A * x; 34 Ax_ = A * x_; 35 b_Ax_ = b - Ax_; 36 37 if (Ax == b) 38 { 39 break; 40 } 41 else 42 { 43 x = x + b_Ax_; 44 x_true = x; 45 } 46 47 } 48 49 cout << x_true << endl; 50}

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

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

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

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

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

guest

回答1

0

ベストアンサー

Eigen::MatrixXf b=Eigen::MatrixXf::Zero(2,1); b(0,1) = 1.0; b(1,1) = 2.0;

おかしいと思いませんか?

投稿2019/07/04 12:54

asm

総合スコア15147

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

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

chiku_soh

2019/07/04 15:25

ありがとうございます。全然気づきませんでした。 それを修正したら、Assertion failed: lhs.cols() == rhs.rows() && "invalid matrix product" && "if you wanted a coeff-wise or a dot product use the respective explicit functions", file Eigen/src/Core/Product.h, line 97 というのがでたんですが、どうすればいいですか。
asm

2019/07/04 16:49

x_ = x * x; これは何を意図しているのでしょうか? 2行1列のx=(x00,x10)行列同士をかけ合わせたx*xとは? 行列の積ではなく、ベクトル積ですか?
chiku_soh

2019/07/07 01:29

ありがとうございました。 自分で変なミスしてることに全然気づきませんでした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問