高斯-賽德爾迭代法
創新互聯公司是一家專注于做網站、成都網站建設與策劃設計,遵化網站建設哪家好?創新互聯公司做網站,專注于網站建設十多年,網設計領域的專業建站公司;建站業務涵蓋:遵化等地區。遵化做網站價格咨詢:18982081108
#include stdio.h
#include conio.h
#include alloc.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( "迭代發散\n ");
exit(1);
}
nu++;
}
while(fabs(dx) 1e-6);
return x;
}
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);
clrscr();
for(i=0;i =2;i++)
printf( "x[%d]=%f\n ",i,x[i]);
getch();
}
#includestdio.h
double
val(double
a00,double
a11,double
a01,double
a10)
{
return
a00*a11-a01*a10;
}
void
main()
{
double
a1,b1,c1,a2,b2,c2;
double
m1,m2,m3;
printf("Please
input
a1,b1,c1\n");
scanf("%lf%lf%lf",a1,b1,c1);
printf("Please
input
a2,b2,c2\n");
scanf("%lf%lf%lf",a2,b2,c2);
m1
=
val(a1,b2,a2,b1);
m2
=
val(c1,b2,c2,b1);
m3
=
val(c1,a2,c2,a1);
if(m1==0){
if(m2==0
m3==0)
printf("無數解\n");
else
printf("無解\n");
}else
printf("x=%lf,y=%lf\n",m2/m1,-m3/m1);
}
這個是先求行列式的值,然后判斷其是否為0,討論解的情況,當有唯一解的時候,輸出x和y的值。
val()函數用于計算2x2行列式的值。
有不明白的地方可以追問,望采納:)
首先要找到二元一次方程組的通解,例如:ax+by=m ? ?cx+dy=n不難算出 ? ? ?x=(md-bn)/(ad-bc) ? ? ? y=(mc-an)/(bc-ad) ?這相當于知道了算法,接下來就可以編程序了:
int?main(){
int?a,b,c,d,m,n;
double?x=0,y=0;
scanf("%d,%d,%d,%d,%d,%d",a,b,c,d,m,n);
if(a*d==b*c||b*c==a*d)puts("無解");
else{
x=(m*d-b*n)/(a*d-b*c);
y=(m*c-a*n)/(b*c-a*d);
printf("x=%f,y=%f",x,y);
}
return?0;
}
輸入系數,就可以計算了
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器以及超級電腦等作業平臺。
C語言之所以命名為C,是因為 C語言源自Ken Thompson發明的B語言,而 B語言則源自BCPL語言。
/*
1 -2 1 -1 -2 4
交點坐標為(1.22,0.05),(-1.22,4.95)
Press any key to continue
*/
#include?stdio.h
#include?math.h
double?Value(double?x,double?a,double?b,double?c)?{
return?a?*?x?*?x?+?b?*?x?+?c;
}
int?main()?{
double?x1,y1,x2,y2;
double?a,b,c,d,e,f,delta;
scanf("%lf%lf%lf%lf%lf%lf",a,b,c,d,e,f);
delta?=?(b?-?e)*(b?-?e)?-?4?*?(a?-?d)?*?(c?-?f);
if(delta??0)?{
printf("二拋物線無交點。\n");
return?0;
}
x1?=?(-(b?-?e)?+?sqrt(delta))/(2.0?*?(a?-?d));
x2?=?(-(b?-?e)?-?sqrt(delta))/(2.0?*?(a?-?d));
y1?=?Value(x1,a,b,c);
y2?=?Value(x2,a,b,c);
printf("交點坐標為(%.2lf,%.2lf),(%.2lf,%.2lf)\n",x1,y1,x2,y2);
return?0;
}
當前標題:c語言函數求解方程組 c語言如何求解方程
標題來源:http://vcdvsql.cn/article24/ddsigce.html
成都網站建設公司_創新互聯,為您提供云服務器、App設計、標簽優化、網站收錄、網站排名、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯