當前位置:首頁 » 編程語言 » 高斯賽德爾迭代c語言

高斯賽德爾迭代c語言

發布時間: 2025-01-02 06:59:40

『壹』 19.7192x^3 +295.788x^2 = 673.7341 一元三次方程求解,最好過程

假如給我們一個一般的三次方程: ax3+3bx2+3cx+d=0 (1) 如果令 x=y-b/a 我們就把方程(1)推導成 y3+3py+2q=0 (2) 其中 3p=c/a-b2/a2,2q=2b3/a3-3bc/a2+d/a 。 藉助於等式 y=u-p/u 引入新變數u 。把這個表達式帶入(2),得到: (u3)2+2qu3-p3=0 (3) 由此得 u3=-q±√(q2+p3), 於是 y=3√(-q±√(q2+p3))-p/3√(-q±√(q2+p3)) 。 =3√(-q+√(q2+p3))+3√(-q-√(q2+p3)) 。 (最後這個等式里的兩個立方根的積等於-p 。)
用此法代入求解,過程復雜,不宜展示

『貳』 誰能幫我設計一個C語言程序,求解方程組的,急啊,哪位高手幫下咯,萬分感謝

假定你要的是線性方程組,下面的
float *GauseSeidel(float *a,int n)
是高斯賽德爾法求解線性方程組的通用子程序。
N 是 迭代次數極限。

main()里寫了調用的例子。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
float *GauseSeidel(float *a,int n)
{
int i,j,nu=0;
float *x,dx;
x=(float *)malloc(n*sizeof(float));
for(i=0;i<=n-1;i++)
x[i]=0.0;
do {
for(i=0;i<=n-1;i++) {
float d=0.0;
for(j=0;j<=n-1;j++)
d+=*(a+i*(n+1)+j)*x[j];
dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));
x[i]+=dx;
}
if(nu>=N)
{
printf("iter divergence\n");
exit(1);
}
nu++;
}
while(fabs(dx)>1e-6);
return x;
}
void main()
{
int i;
float *x;
float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};
float *GauseSeidel(float *,int);
x=GauseSeidel(c,3);
for(i=0;i<=2;i++)
printf("x[%d]=%f\n",i,x[i]);
getch();
}

熱點內容
Pua腳本 發布:2025-05-14 19:24:56 瀏覽:448
蘋果像素低為什麼比安卓好 發布:2025-05-14 19:13:23 瀏覽:459
安卓機微信怎麼設置紅包提醒 發布:2025-05-14 19:00:15 瀏覽:271
androidsystem許可權設置 發布:2025-05-14 18:56:02 瀏覽:970
mq腳本 發布:2025-05-14 18:45:37 瀏覽:25
仙境傳說ro解壓失敗 發布:2025-05-14 18:45:01 瀏覽:868
betweenand的用法sql 發布:2025-05-14 18:39:25 瀏覽:250
tplink攝像頭存儲卡格式化 發布:2025-05-14 18:37:08 瀏覽:347
安卓平板怎麼安裝excel的軟體 發布:2025-05-14 18:35:44 瀏覽:42
廣州數控圓弧編程實例 發布:2025-05-14 18:25:00 瀏覽:401