高斯消元好題選講

2021-09-28 23:07:22 字數 2724 閱讀 3047

傳送門傳送門

傳送門傳送門

例1:看似是乙個高斯消元,但普通的程式交上去會被卡成80

8080

分w awa

wa。我們看下面的一組hack資料:

2

0 2 3

0 0 0

化簡2y+

3=0,

0=

02y+3=0,0=0

2y+3=0

,0=0

易得該方程組有無數解,但是我們的程式會輸出−1-1

−1。究其原因,我們在考慮第乙個方程時有f[1

][1]

=0,f

[1][

3]≠0

f[1][1]=0,f[1][3]≠0

f[1][1

]=0,

f[1]

[3]

​=0,程式直接判斷無解退出。

所以我們在排序時,我們應該將第一關鍵字大的排前面,第二關鍵字小的排前面,這樣就可以避免這種情況的發生。

一些細節處理見**:

#include

#define eps 1e-6

using

namespace std;

double a[

105]

[105];

int flag1,flag2;

int n;

double

check

(double x)

bool

cmp(

int k,

int x,

int y)

}int

main()

}for

(int i=

1;i<=n;i++)}

for(

int j=

1;j<=n+

1;j++)if

(!check

(a[i]

[i])

)for

(int j=

1;j<=n;j++)}

}for

(int i=

1;i<=n;i++)}

for(

int i=

1;i<=n;i++)}

for(

int i=

1;i<=n;i++

)}

例2

設中心點座標為(x1

,x2,

...,

xn

)(x_1,x_2,...,x_n)

(x1​,x

2​,.

..,x

n​),依照題意列出n+1

n+1n+

1個方程,上下兩方程相減得出n

nn個方程,有n

nn個未知數,高斯消元求解即可。

#include

using

namespace std;

int n;

double p[15]

[15],a[15]

[15];

intmain()

}for

(int i=

1;i<=n;i++)}

for(

int i=

1;i<=n;i++)}

for(

int j=

1;j<=n+

1;j++

)for

(int j=

1;j<=n;j++)}

}for

(int i=

1;i<=n;i++

)}

例3

列舉刪掉的方程,由剩餘的方程聯立求解即可。

注意判斷浮點數及是否有唯一解。

#include

using

namespace std;

double a[

105]

[105

],b[

105]

[105

],w[

105]

;int flag=

0,m[

105]

,f[105][

105]

,n,num,k,x;

intsolve()

for(

int j=

1;j<=n+

1;j++)if

(!a[i]

[i])

return0;

for(

int j=

1;j<=n;j++)}

}int maxn=-1

,num=0;

for(

int i=

1;i<=n;i++

)for

(int i=

1;i<=n;i++)}

return num;

}int

main()

scanf

("%lf"

,&b[i]

[n+1])

;}for(

int i=

1;i<=n+

1;i++)}

swap

(b[i]

,b[n+1]

);num=

solve()

;if(num)

flag=num;}}

if(!flag)

else cout<}

高斯消元 浮點高斯消元

浮點數高斯消元 問題描述 給出乙個線性方程組,有n個方程組,m個未知數。解這個線性方程組。輸入格式 第1行 2個整數n和m,n,m 400,且n不一定等於m 接下來n行,每行m 1個整數,表示乙個方程的m個未知數的係數和常數 輸出格式 如果無解,輸出 no solution 如果有唯一解,輸出m行,...

矩陣消元 高斯消元

安利一波高斯消元的部落格,內容很詳細。看完這個相信你已經理解了大概,高斯消元求線性方程組,在學習線性代數 大學課程 的時候我們都接觸過。原理是先把執行緒組轉換成矩陣,然後把它等價變換成上三角矩陣,這樣從下到上依次可以求出解集。高斯消元模板 模板題 include define n 205 using...

第三講 高斯消元法

gauss消元法的步驟 1 若方程組的第乙個主元位置為 0 則交換方程以得到第乙個主元 2 用第乙個方程的倍數消去第乙個主元下方所有係數 3 確定第二個主元,繼續以上消元過程 4 最後得到含乙個未知量的方程,回代得方程組的解.n 個方程有 n 個主元 leftrightarrow 方程組有唯一解。消...