本文目录一览:
如何用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);}