c++
1//メインのコード 2#include <stdio.h> 3#include <iostream> 4#include <math.h> 5#include "LinearAlgebra.hpp" 6 7int main(int argc,const char * argv[]){ 8 using namespace std; 9 vector<vector<double> > A(3,vector<double>(3));//行列Aの設定 10 A= {{3,-1,-1},{-1,3,-1},{-1,-1,3}}; 11 vector<double> b(3); 12 b= {1,1,1};//ベクトルbの設定 13 cout<<"A="<<endl; 14 printMatrix(A);//Aを表示 15 cout<<"b="<<endl; 16 printVector(b);//bを表示 17 vector<double> x(3); 18 x=GaussianElimination(A,b);//gauss消去 19 cout<<"x="<<endl; 20 printVector(x);//Ax=bの解を出力```ここに言語を入力 21 return 0; 22}
c++
1//関数ファイルLinearAlgebra.cpp 2#include "LinearAlgebra.hpp" 3#include <vector> 4#include <math.h> 5#include <iostream> 6using namespace::std; 7 8//ベクトルaを出力 9void printVector(vector<double> a){ 10 for(int i=0;i<a.size();i++){ 11 printf("%.2e\t",a[i]); 12 } 13 printf("\n"); 14} 15 16//行列Aを出力 17void printMatrix(vector<vector<double> > A){ 18 for(int i=0;i<A.size();i++){ 19 for(int j=0;j<A.size();j++){ 20 printf("%2e\t",A[i][j]); 21 } 22 printf("\n"); 23 } 24 printf("\n"); 25} 26//後退代入Ax=b 27vector<double> Backward_sub(vector<vector<double> > A,vector<double> b){ 28 int N=int(b.size()); 29 vector<double> x(N); 30 for(int k=N-1;k>=0;k--){ 31 float C=0; 32 for(int j=k+1;j<N;j++){ 33 C=A[k][j]*x[j]; 34 } 35 x[k]=(b[k]-C)/A[k][k]; 36 } 37 return x; 38} 39//gause消去 40vector<double> GaussianElimination(vector<vector<double> > a,vector<double> c){ 41 unsigned long N=c.size(); 42 vector<vector<double> > A(N,vector<double>(N)); 43 vector<double> b(N); 44 A=a; 45 b=c; 46 //前進消去 47 for(int k=0;k<N-1;k++){ 48 for (int i=k+1;i<=N;i++){ 49 int B=a[i][k]/a[k][k]; 50 for(int j=k+1;j<N;j++){ 51 A[i][j]=A[i][j]-A[i][k]*A[k][j]; 52 } 53 b[i]=b[i]-A[i][k]*b[k]; 54 } 55 } 56 cout<<"前進消去\n"; 57 cout<<"A="<<endl; 58 printMatrix(A); 59 cout<<"b="<<endl; 60 printVector(b); 61 //後退代入 62 cout<<"後退代入\n"; 63 vector<double> x(N); 64 x=Backward_sub(A,b); 65 return x; 66}
c++
1//ヘッダーファイル LinearAlgebra.hpp 2#ifndef LinearAlgebra_hpp 3#define LinearAlgebra_hpp 4 5#include <stdio.h> 6#include <vector> 7#include<math.h> 8using namespace::std; 9 10void printVector(vector<double>); 11void printMatrix(vector<vector<double> >); 12vector <double> VectorSubtract(vector <double>,vector <double>); 13vector <double> MatrixVector(vector<vector<double> >,vector <double>); 14vector <double> ResidualError(vector<vector <double> >,vector <double>,vector <double>); 15double VectorNorm1(vector <double>); 16double VectorNorm2(vector <double>); 17double VectorNormInfty(vector <double>); 18double MatrixNorm1(vector<vector <double> >); 19double MatrixNormIntfty(vector<vector <double> >); 20vector<double> GaussianElimination(vector<vector<double> > ,vector<double> ); 21vector<double> Backward_sub(vector<vector<double> > ,vector<double> ); 22 23#endif /* LinearAlgebra_hpp */
コードを全て記載しておきます。行列AとベクトルbのAx=bの解xを求めるコードを作っています。
出力するとエラーが出てしまい、そのエラーコードが
main.cpp:9:8: error: expected expression
A= {{3,-1,-1},{-1,3,-1},{-1,-1,3}};
^
main.cpp:11:8: error: expected expression
b= {1,1,1};
^
となってます。教授にも質問しましたが、おそらくLinearAlgebra.cppのどこかが間違っていると思われます。
どのように修正すればいいか教えてくれると幸いです.
使ってるのはXcodeのversion11.5です
回答2件
あなたの回答
tips
プレビュー