??
字號(hào):
#include<iostream>//確定矩陣a,at的維數(shù)#define M 4#define N 2using namespace std;//定義矩陣類(lèi)Aclass A{public: //對(duì)類(lèi)A中的數(shù)組a[M][N]初始化 void set() { cout<<"請(qǐng)按行依次輸入矩陣A的元素:\n"; for(int i=0;i<M;i++) for(int j=0;j<N;j++) cin>>a[i][j]; } //聲明類(lèi)的成員函數(shù),用于對(duì)矩陣a[m][n]求轉(zhuǎn)置 void T(); //將運(yùn)算符重載函數(shù)聲明為類(lèi)的友元 friend A operator *(A &A1,A &A2); //聲明函數(shù),用于實(shí)現(xiàn)矩陣at與矩陣y相乘 void complex(double y[4][1]); //用于存放at*a的結(jié)果 double temp1[N][N]; //用于存放at*y的結(jié)果 double temp2[2][1];private: //用于表示公式中的A double a[M][N]; //用于表示公式中A的轉(zhuǎn)置陣 double at[N][M]; };//定義類(lèi)的成員函數(shù)void A::T(){ for(int i=0;i<M;i++) for(int k=0;k<N;k++) at[k][i]=a[i][k];}//定義運(yùn)算符重載函數(shù)A operator *(A &A1,A &A2){ for(int i=0;i<N;i++) for(int k=0;k<N;k++) A1.temp1[i][k]=A1.at[i][0]*A2.a[0][k]+A1.at[i][1]*A2.a[1][k]+A1.at[i][2]*A2.a[2][k]+A1.at[i][3]*A2.a[3][k]; return A1;}//定義類(lèi)的成員函數(shù)void A::complex(double y[4][1]){ for(int i=0;i<2;i++) temp2[i][0]=at[i][0]*y[0][0]+at[i][1]*y[1][0]+at[i][2]*y[2][0]+at[i][3]*y[3][0];}int main(){ double y[4][1]={11,3,6,14}; //創(chuàng)建類(lèi)的對(duì)象A1 A A1; //對(duì)A1中的a初始化 A1.set(); //對(duì)A1中的a求轉(zhuǎn)置 A1.T(); //實(shí)現(xiàn)at*a并將結(jié)果存于temp1 A1=A1*A1; double t1[2][2]; //將temp1的值傳給t1 for(int i=0;i<N;i++) for(int k=0;k<N;k++) t1[i][k]=A1.temp1[i][k]; //實(shí)現(xiàn)at*y并將結(jié)果存于temp2 A1.complex(y); double t2[2][1]; //將temp2的值傳給t2 for(i=0;i<2;i++) t2[i][0]=A1.temp2[i][0]; double X,Y; //求用最小二乘法轉(zhuǎn)化出的新的方程組的解 X=(t2[1][0]*t1[0][1]-t1[1][1]*t2[0][0])/(t1[0][1]*t1[1][0]-t1[1][1]*t1[0][0]); Y=(t2[0][0]-t1[0][0]*X)/t1[0][1]; //輸出計(jì)算結(jié)果 cout<<"經(jīng)用最小二乘法知,所求方程組的近似解為:\n"<<"X="<<X<<'\t'<<"Y="<<Y<<endl; return 0;}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -