采用高斯列主元消元法解线性方程组
1)学习解线性方程组的一些基本方法(2)掌握“高斯消元法”解线性方程组的算法。(3)编程实现“高斯消元法”解线性方程组的算法。输入:方程(矩阵)得阶n,系数矩阵A,右端项...
1)学习解线性方程组的一些基本方法
(2)掌握“高斯消元法”解线性方程组的算法。
(3)编程实现“高斯消元法”解线性方程组的算法。
输入:方程(矩阵)得阶n,系数矩阵A,右端项b
输出:方程组得解X[n]
帮忙解决下!
谢谢 展开
(2)掌握“高斯消元法”解线性方程组的算法。
(3)编程实现“高斯消元法”解线性方程组的算法。
输入:方程(矩阵)得阶n,系数矩阵A,右端项b
输出:方程组得解X[n]
帮忙解决下!
谢谢 展开
3个回答
展开全部
int I;
#include <stdio.h>
void input(float a[100][100],float b[100][1],int n)
{int i,j;
char infile[20];
FILE *input;
printf("input infile name:\n");
getch();
scanf("%s",infile);
input=fopen(infile,"r");
if(input==0)
{
printf("Can't open the file\n");
exit(0);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fscanf(input,"%f",&a[i][j]);
for(i=0;i<n;i++)
fscanf(input,"%f",&b[i][0]);
fclose(input);
return;
}
float max_value(float a[100][100],int n,int k)
{float max;
int i;
max=a[k][k];
for(i=k+1;i<n;i++)
if(max<a[i][k])
{
max=a[i][k];
I=i;
}
return(max);
}
void change(float *p,float *q)
{
float temp;
temp=*p; *p=*q; *q=temp;
return;
}
main()
{float a[100][100],b[100][1],x[100],max,m,*c,*d;
int k=0,q=0,n,i,j;
printf("n=");
scanf("%d",&n);
input(a,b,n);
for(k=0;k<n && q==0;k++)
{
max=max_value(a,n,k);
if(max==0)
q=1;
else
{ if(I!=k)
{
c=&b[I][0];
d=&b[k][0];
change(c,d);
for(j=k;j<n;j++)
{
c=&a[I][j];
d=&a[k][j];
change(c,d);
}
}
for(i=k+1;i<n;i++)
{
m=a[i][k]/a[k][k];
b[i][0]=b[i][0]-b[k][0]*m;
for(j=0;j<n;j++)
a[i][j]=a[i][j]-a[k][j]*m;
}
}
}
for(i=n-1;i>=0;i--)
{
for(j=i+1;j<n;j++)
b[i][0]=b[i][0]-a[i][j]*x[j];
x[i]=b[i][0]/a[i][i];
}
for(i=0;i<n;i++)
printf("x[%d]=%6.2f\n",i,x[i]);
/*printf("%f",max);*/
/*for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%f",a[i][j]);
getch();
for(i=0;i<n;i++)
printf("%f",b[i][0]);
getch();*/
}
#include <stdio.h>
void input(float a[100][100],float b[100][1],int n)
{int i,j;
char infile[20];
FILE *input;
printf("input infile name:\n");
getch();
scanf("%s",infile);
input=fopen(infile,"r");
if(input==0)
{
printf("Can't open the file\n");
exit(0);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fscanf(input,"%f",&a[i][j]);
for(i=0;i<n;i++)
fscanf(input,"%f",&b[i][0]);
fclose(input);
return;
}
float max_value(float a[100][100],int n,int k)
{float max;
int i;
max=a[k][k];
for(i=k+1;i<n;i++)
if(max<a[i][k])
{
max=a[i][k];
I=i;
}
return(max);
}
void change(float *p,float *q)
{
float temp;
temp=*p; *p=*q; *q=temp;
return;
}
main()
{float a[100][100],b[100][1],x[100],max,m,*c,*d;
int k=0,q=0,n,i,j;
printf("n=");
scanf("%d",&n);
input(a,b,n);
for(k=0;k<n && q==0;k++)
{
max=max_value(a,n,k);
if(max==0)
q=1;
else
{ if(I!=k)
{
c=&b[I][0];
d=&b[k][0];
change(c,d);
for(j=k;j<n;j++)
{
c=&a[I][j];
d=&a[k][j];
change(c,d);
}
}
for(i=k+1;i<n;i++)
{
m=a[i][k]/a[k][k];
b[i][0]=b[i][0]-b[k][0]*m;
for(j=0;j<n;j++)
a[i][j]=a[i][j]-a[k][j]*m;
}
}
}
for(i=n-1;i>=0;i--)
{
for(j=i+1;j<n;j++)
b[i][0]=b[i][0]-a[i][j]*x[j];
x[i]=b[i][0]/a[i][i];
}
for(i=0;i<n;i++)
printf("x[%d]=%6.2f\n",i,x[i]);
/*printf("%f",max);*/
/*for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%f",a[i][j]);
getch();
for(i=0;i<n;i++)
printf("%f",b[i][0]);
getch();*/
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
富港检测技术(东莞)有限公司_
2024-04-02 广告
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你介绍个简单的方法吧:只要给定N阶,用Excel可以做个模板,就可以解出来了,无需编程。
当然编程也可解决的啦
当然编程也可解决的啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询