當前位置:首頁 » 編程語言 » c語言jacobi迭代法

c語言jacobi迭代法

發布時間: 2024-06-27 03:56:33

『壹』 雅克比迭代法求解線性方程組的C語言程序

void Solve ( double dCoef [] , double dY [] , unsigned int iOrder , double dErr)
{//用Jacobi迭代法解方程組, dCoef[]系數陣, Y[]向量, iOrder給出方程階數, dErr給出精度

double res [Max]; //方程解
double res2[Max]; //保存上一階方程解

if ( Max < iOrder )
{
printf ("最多支持%d階方程組.", Max);
return;
}
for ( unsigned int i = 0 ; i < iOrder ; res2 [i++] = 0.0 ); //初始解向量 (0,0...)

while ( true )
{
bool bStopIterative = true;
for (unsigned int i = 0 ; i < iOrder ; ++i)
{
double dSum2 = 0;
for (unsigned int j = 0 ; j < iOrder ; j++)
{//求第二項
if ( j == i ) continue;
dSum2 += dCoef [i * iOrder + j] * res2 [j];
}
res[i] = 1/dCoef[i * iOrder + i] * ( dY[i] - dSum2 );

if ( abs ( res2[i] - res [i] ) > dErr )
bStopIterative = false;
}

if ( bStopIterative )
break;
for (unsigned int i = 0 ; i < iOrder ; i++ )
res2[ i ] = res[ i ];
}

//輸出結果
for (unsigned int i = 0 ; i < iOrder ; i++)
printf ("x%d = %lf\n", i+1 , res[i]);

}

int main(int argc, char* argv[])
{
double a[] =
{
8,-3,2,
4,11,-1,
2,1,4
};
double b[3] =
{
20,33,12
};

Solve ( a , b , 15 , 1e-10);
getchar();
return 0;
}

熱點內容
密碼鎖為什麼不建議用南孚 發布:2024-11-26 18:45:00 瀏覽:153
榮耀20s安卓版本在哪裡看 發布:2024-11-26 18:26:03 瀏覽:685
安卓手機前攝像頭進灰怎麼清理 發布:2024-11-26 18:23:08 瀏覽:173
kettlejava腳本 發布:2024-11-26 18:05:07 瀏覽:455
c語言關機命令 發布:2024-11-26 17:59:56 瀏覽:901
wmi文件夾 發布:2024-11-26 17:55:55 瀏覽:534
c語言乘積函數 發布:2024-11-26 17:43:23 瀏覽:187
unix與linux的關系 發布:2024-11-26 17:38:37 瀏覽:464
中恆牌密碼鎖初始管理密碼是多少 發布:2024-11-26 17:34:54 瀏覽:296
ios手機怎麼玩安卓游戲 發布:2024-11-26 17:08:23 瀏覽:396