本文目錄一覽:
如何用C語言解四元一次方程組?
首先要找到二元一次方程組的通解,例如:
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語言代碼
這是我很久前寫的程序。
程序例子是 4*5 增廣矩陣。
你可以改變 階數 int n=4; n 的值,可以另寫 方程係數 輸出語句。直接調用
float *ColPivot(float *c,int n); 就得到解。
/* ==========================================
* GaoSi_XiaoQu.c
* ==========================================*/
#include stdio.h
#include stdlib.h
#include math.h
float *ColPivot(float *c,int n);
void main()
{
int i,j;
float *x;
int n=4;
float a[4][5]={4.,-1.,0.,2.,-1.0,-1,4,-1,0,-7.0,0,-1,4,-1,9.0,2,0,-1,4.0,0.0};
x=ColPivot(a[0],n);
for (i=0;in;i++) printf(“x[%d]=%f\n”,i,x[i]);
getch();
}
float *ColPivot(float *c,int n)
{
int i,j,t,k;
float *x,p;
x=(float *)malloc(n*sizeof(float));
for(i=0;i=n-2;i++)
{
k=i;
for(j=i+1;j=n-1;j++)
if(fabs(*(c+j*(n+1)+i))(fabs(*(c+k*(n+1)+i)))) k=j;
if(k!=i)
for(j=i;j=n;j++)
{
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j=n-1;j++)
{
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t=n;t++)
*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}
}
for(i=n-1;i=0;i–)
{
for(j=n-1;j=i+1;j–)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
}
return x;
}
四元一次方程!! c語言!!
#include iostream
using namespace std;
int main()
{
int i,j,m,n;
int num = 0;
int s;
cin s;
for(i=0; i= s/4;i++)
for (j= 0; j=s/3; j++)
{
if (4*i+3*j s)
break;
for(m=0; m=s/2;m++)
{
if (4*i+3*j+2*m s)
break;
for(n=0; n = s; n++)
{
if(4*i+3*j+2*m+n == s)
num++;
}
}
}
cout numendl;
return 0;
}
這是最簡單的方法,但是時間複雜度很高,你看看能不能改進算法!
C語言如何解這四元一次方程啊?
void main(){ double p1,p2,p3,p4; if( p1+p2+p3+p4==1 p1==0.8*p1+0.5*p3
p2==0.2*p1+0.5*p3
p3==0.5*p2+0.2*p4
p4==0.5*p2+0.8*p4 )printf(“%d %d %d %d \n”,p1,p2,p3,p4);}
原創文章,作者:QJPUH,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/329223.html