ÊýÖµ¼ÆËã·½·¨ÊµÑ鱨¸æ

ÏßÐÔ·½³Ì×éµÄ¸÷Öֽⷨ

ÌâÄ¿£º

ÓÃÈýÖÖ²»Í¬µÄ·½·¨¼ÆËãÏßÐÔ·½³Ì×éAx=b£¬ÊäÈë·½³Ì×éµÄ½×Êýn,¾ØÕóAµÄÔªËØºÍ³£ÏòÁ¿bµÄÔªËØ,Êä³ö·½³Ì×éµÄ½â¡£ Ò»£® ¸ß˹ÁÐÖ÷Ôª·¨ 1£®·½·¨Ô­Àí£º.

¸ß˹ÏûÈ¥·¨°üÀ¨Á½¹ý³Ì£ºÏȰѷ½³Ì×黯Ϊͬ½âµÄÉÏÈý½Ç·½³Ì×飬ÔÙ°´Ï෴˳ÐòÇó½âÉÏÈý½Ç·½³Ì×顣ǰÕß³ÆÏûÈ¥»òÏûÔª¹ý³Ì£¬ºóÕ߳ƻشú¹ý³Ì¡£

ÏûÈ¥¹ý³Ìʵ¼ÊÉÏÊǶÔÔö¹ã¾ØÕó×÷³õµÈ±ä»»¡£¶ÔÒ»°ãµÄn½×·½³Ì×飬ÏûÈ¥¹ý³Ì·Ön-1²½£ºµÚÒ»²½ÏûÈ¥a[1][1]Ï·½ÔªËØ£¬µÚ¶þ²¿ÏûÈ¥a[2][2]Ï·½ÔªËØ£¬¡¤¡¤¡¤¡¤¡¤¡¤£¬µÚn-1²½ÏûÈ¥a[n-1][n-1]Ï·½ÔªËØ¡£µÚk²½½«µÚkÐеÄÊʵ±±¶Êý¼ÓÓÚÆäºó¸÷ÐУ¬Ò²¿É˵ÊÇ´Ók+1~nÐмõÈ¥µÚÐеÄÊʵ±±¶Êý£¬Ê¹ËüÃǵĵÚkÁÐÔªËØ±äΪ0£¬¶øk+1~n+1ÁÐÔªËØ¼õÈ¥µÚkÐжÔÓ¦ÁÐÔªËØµÄ±¶Êý¡£

ΪÁ˱ÜÃâ³öÏÖСÖ÷Ôª£¬¿ÉÔÚµÚk²½µÄµÚkÁеÄÔªËØa[k][k],a[k+1][k],¡¤¡¤¡¤,a[n][k]ÖÐÑ¡Ö÷Ôª£¬¼´ÔÚÆäÖÐÕÒ³ö¾ø¶ÔÖµ×î´óµÄÔªËØa[p][k]£¬È»ºó½»»»µÚkºÍµÚpÐУ¬¼ÌÐø½øÐÐÏûÈ¥¹ý³Ì¡£½»»»ÐÐÏ൱Óڸı䷽³Ì˳Ðò£¬²»»áÓ°ÏìÔ­·½³Ì×éµÄ½â¡£ÕâÖÖ·½·¨³ÆÎªÁÐÖ÷ÔªÏûÈ¥·¨¡£ 2. Ô´´úÂ룺

void Gaosi(float a[15][15],int n,float b[15],float x[15]) /*¸ß˹ÁÐÖ÷Ôª·¨µÄº¯Êý*/ {

int i,j,k;

for(k=1;k<=n-1;k++) {

float max=fabs(a[k][k]); int p_max=k;

for(int p=k;p<=n;p++) /*ÁÐÖ÷ÔªµÄÑ¡Ö÷Ôª*/ if(max

for(int m=1;m<=n+1;m++) {

float temp=0; temp=a[k][m]; a[k][m]=a[p][m]; a[p][m]=temp; } }

for(i=k+1;i<=n;i++) {

float c=a[i][k]/a[k][k]; for(j=k;j<=n+1;j++)

a[i][j]=a[i][j]-c*a[k][j]; } }

for(int p=1;p<=n;p++)

{

b[p]=a[p][n+1]; }

x[n]=b[n]/a[n][n]; for(k=n-1;k>=1;k--) {

float sum=0;

for(j=k+1;j<=n;j++) {

sum+=(a[k][j]*x[j]); }

x[k]=(b[k]-sum)/a[k][k]; }

cout<<\; cout<<\Óøß˹ÏûÈ¥·¨½â·½³Ì×飺\<

for(int q=1;q<=n+1;q++) {

printf(\,a[m][q]); }

cout<

Output(x,n); /*ÒÀ´ÎÊä³ö·½³ÌµÄ½â*/ } ¶þ£® Jacobiµü´ú·¨ 1. ·½·¨Ô­Àí£º

ÓÉ·½³Ì×éµÄÐÎʽ¿É¹¹³Éµü´úʽ£º

x[i](k+1)=(-a[i][1]x[1](k)-¡¤¡¤¡¤-a[i][i-1]x[i-1](k)-a[i][i+1]x[i+1](k)-¡¤¡¤¡¤-a[1]x[n](k)+b[i])/a[i][i], i=1~n

¸ø¶¨³õÖµx(0)=x(x[1](0),x[2](0),¡¤¡¤¡¤x[n](0))T,Áîk=0,1,¡¤¡¤¡¤£¬Óɴ˿ɵÃÏòÁ¿ÐòÁÐ{x(k)}.Èç¹û´ËÐòÁÐÊÕÁ²ÓÚx,ÄÇôÿ¸ö·ÖÁ¿ÐòÁÐ{x[i](k)}±ØÊÕÁ²ÓÚÏëx[i],x[i](i=1~n)¾Í±ØÈ»ÊÇÔ­·½³Ì×éµÄ½â¡£´Ë·½·¨³ÆÎªÑſɱÈ(Jacobi)µü´ú·¨¡£ 2. Ô´´úÂ룺

void Jacobi(float a[15][15],float x[15],int n,float b[15]) /*Ñſɱȵü´ú·¨º¯Êý*/ {

float y[15]={0}; double D;

for(int i=1;i

D=0;

for(int i=1;i

y[i]=b[i];

for(int j=1;j

y[i]=y[i]-a[i][j]*x[j]; y[i]=y[i]/a[i][i];

if(fabs(x[i]-y[i])>D) /*Í˳öÑ­»·µÄÌõ¼þ*/ D=fabs(x[i]-y[i]); }

for(int i=1;i=Level) continue; else

break; }

cout<<\; cout<<\ÓÃJacobi·¨½â·½³Ì×飺\<

Seidelµü´ú·¨ÊÇÔÚJacobi·½·¨µÄ»ù´¡ÉϽøÐÐÁ˸Ľø¡£ËüÔÚ¼ÆËãÏëx(k+1)ʱ£¬½«ÒѾ­Ëã³öµÄ·ÖÁ¿Á¢¼´´úÌæx(k)¶ÔÓ¦·ÖÁ¿£¬ÓÖ³Æ×÷Öð¸öµü´ú·¨¡£ 2. Ô´´úÂ룺

void Seidel(float a[15][15],float x[15],int n,float b[15]) /*Seidelµü´ú·¨º¯Êý*/ {

float y=0; double D;

for(int i=1;i

D=0;

for(int i=1;i

y=b[i];

for(int j=1;j

y=y-a[i][j]*x[j]; y=y/a[i][i];

if(fabs(x[i]-y)>D) D=fabs(x[i]-y); x[i]=y; }

if(D>=Level) continue; else

break; }

cout<<\; cout<<\ÓÃSeidel·¨½â·½³Ì×飺\<

cout<<\·½³ÌµÄ½âΪ:\<

cout<<\<

void Input(float a[15][15],int &n,float b[]) /*ÊäÈë·½³Ì²ÎÊýµÄº¯Êý*/ {

float m_in;

cout<<\ÇëÊäÈë·½³Ì½×Êýn:\<>n;

cout<<\ÇëÒÀ´ÎÊäÈë·½³Ì¶ÔÓ¦µÄÔö¹ã¾ØÕóÖеÄÊý¾Ý£º\<

for(int q=1;q<=n+1;q++) {

cin>>m_in; a[m][q]=m_in; }

for(int p=1;p<=n;p++) {

b[p]=a[p][n+1]; } }

int _tmain(int argc, _TCHAR* argv[]) /*Ö÷º¯Êý*/ {

}

ÔËÐнá¹û£º

float a[15][15]={0},x[15]={0},b[15]={0}; int n=0; while(1) {

char in;

Input(a,n,b); Gaosi(a,n,b,x); Jacobi(a,x,n,b);

Seidel(a,x,n,b);

/*ÓÃÈýÖÖ·½·¨½â·½³Ì×é*/

cout<<\ÔÙÀ´½âÒ»¸ö£¿y/n\<>in; if(in=='y') continue; else break; }

return 0;

Î壮 ½á¹û·ÖÎö£º

ÉÏ·½µÄ·½³Ì×éÓÃÈýÖÖ·½·¨µÃ³öµÄ½á¹û»ù±¾Ïàͬ£¬µ«ÔÚ¼ÆËãÆäËüµÄ·½³Ì×éʱ£¬»á·¢ÏÖ¸ß˹

ÁÐÖ÷Ôª·¨»ù±¾²»»á³ö´óµÄ²î´í£¬¶øÁ½ÖÖµü´ú·¨»á³öÏÖһЩ´íÎó¡£ÕâÊÇÓÉÓÚ¸ß˹ÁÐÖ÷Ôª·¨ÊÇÒ»ÖֱȽÏͨÓõķ½·¨£¬¶øµü´ú·¨ÊÇÒªÇó·½³Ì×éµÄ½â±ØÐëÊÇÊÕÁ²µÄ¡£Èç¹û²»ÊÕÁ²µÄ»°£¬Ëã·¨»áÎÞÏÞ½øÐÐÏÂÈ¥£¬³ÌÐòÒ²¾ÍÔËÐв»³ö½á¹û¡£ËùÒÔ£¬ÔÚʵ¼Ê²Ù×÷ÖУ¬Ó¦¸ÃÏÈÅжϷ½³Ì×éµÄ½âÊÇ·ñÊÕÁ²£¬È»ºóÑ¡ÔñºÏÊʵÄËã·¨½øÐмÆËã¡£

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4