這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)C++中怎么簡(jiǎn)化線性代數(shù)矩陣行,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),白云企業(yè)網(wǎng)站建設(shè),白云品牌網(wǎng)站建設(shè),網(wǎng)站定制,白云網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,白云網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。具體內(nèi)容如下
輸入一個(gè)矩陣,可分別輸出該矩陣的階梯型和最簡(jiǎn)型。
輸入僅支持整數(shù),支持分?jǐn)?shù)形式輸出。
媽媽再也不用擔(dān)心俺的線性代數(shù)作業(yè)~
使用實(shí)例:
(實(shí)現(xiàn)格式化輸出部分寫(xiě)的極為丑陋......)
#include<iostream>#include<cmath>#include<algorithm>#include<iomanip>#include<cstdio>#include<string>#define f(i,l,r) for(i=(l);i<=(r);i++)#define ff(i,r,l) for(i=(r);i>=(l);i--)#define ll long long#define EPS 1e-6using namespace std;const int MAXN=105;int n,m;char output[MAXN];string s;struct frac{ int x,y=1; bool operator < (const frac &tmp)const{ return 1.0*x/y<1.0*tmp.x/tmp.y; } frac operator - (const frac &tmp){ frac ans; ans.x=x*tmp.y-y*tmp.x; ans.y=y*tmp.y; ans.sim(); return ans; } frac operator * (const frac &tmp){ frac ans; ans.x=x*tmp.x; ans.y=y*tmp.y; ans.sim(); return ans; } frac operator / (const frac &tmp){ frac ans; ans.x=x*tmp.y; ans.y=y*tmp.x; ans.sim(); return ans; } int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } void sim(){ int d=gcd(x,y); x/=d; y/=d; if(x<0&&y<0){ x=-x; y=-y; } } void write() { int i; char tmp[MAXN]; int num=0; int nx=x,ny=y; s=""; if(!nx){ s+="0"; } else{ if(nx<0||ny<0){ s+='-'; nx=abs(nx); ny=abs(ny); } if(nx%ny==0){ nx/=ny; while(nx){ tmp[++num]='0'+nx%10; nx/=10; } ff(i,num,1){ s+=tmp[i]; } } else{ while(nx){ tmp[++num]='0'+nx%10; nx/=10; } ff(i,num,1){ s+=tmp[i]; } s+='/'; num=0; while(ny){ tmp[++num]='0'+ny%10; ny/=10; } ff(i,num,1){ s+=tmp[i]; } } } f(i,s.length(),7){ cout<<" "; } cout<<s; }}a[MAXN][MAXN];void out_f(){ int i,j; f(i,1,n){ f(j,1,m){ cout<<1.0*a[i][j].x/a[i][j].y<<" "; } cout<<endl; }}void out(){ int i,j; f(i,1,n){ f(j,1,m){ a[i][j].write(); cout<<" "; } cout<<endl; }}int find(int r,int c){ int i,t=-1; f(i,r,n){ if(t==-1||a[t][c]<a[i][c]) t=i; } return t;}void interchange(int r1,int r2){ int j; f(j,1,m){ swap(a[r1][j],a[r2][j]); } return;}void scale(int r,int c){ int j; ff(j,m,c){ a[r][j]=a[r][j]/a[r][c]; } return;}void muilt(int r,int c){ int i,j; f(i,r+1,n){ if(!a[i][c].x) continue; ff(j,m,c){ a[i][j]=a[i][j]-(a[i][c]*a[r][j]); } } return;}void gause_1(){ int c,r=1; f(c,1,n){ int pos=find(r,c); if(!a[pos][c].x) continue; interchange(r,pos); scale(r,c); muilt(r,c); r++; }}void gause_2(){ int i,j; ff(i,n,1){ f(j,i+1,n){ a[i][n+1]=a[i][n+1]-(a[i][j]*a[j][n+1]); a[i][j].x=0; } } return;}int main(){ int i,j; cout<<"輸入矩陣的行數(shù)和列數(shù):"<<endl; cin>>n>>m; cout<<"輸入矩陣元素:"<<endl; f(i,1,n){ f(j,1,m){ cin>>a[i][j].x; } } gause_1(); cout<<"階梯型為:"<<endl; out(); gause_2(); cout<<"最簡(jiǎn)型為:"<<endl; out(); return 0;}
上述就是小編為大家分享的C++中怎么簡(jiǎn)化線性代數(shù)矩陣行了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享題目:C++中怎么簡(jiǎn)化線性代數(shù)矩陣行-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.rwnh.cn/article40/cejdeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、軟件開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)、用戶體驗(yàn)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容