a*b=c,已知矩阵a,c求b求好心人给我看一下

#include<stdio.h>intmain(){voidbianling2(floata[][4],intn);voidjisuan(floata[][4],flo... #include<stdio.h>
int main()
{
void bianling2(float a[][4],int n);
void jisuan(float a[][4],float b[][1],float c[][1],int n);
float a[4][4],b[4][1],c[4][1];
int i,j;
printf("请输入一个4乘4的矩阵a:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%10f",&a[i][j]);
bianling2(a,4);//使矩阵变成上三角型矩阵
for(i=0;i<4;i++)
scanf("%10f",&c[i][0]);
jisuan(a,b,c,4);//计算
for(i=0;i<4;i++)
printf("%10f",b[i][0]);//输出
return 0;
}
void bianling2(float a[][4],int n)
//把行列式变成下三角
{
float b[4][4],temp;
int i,k,j,m1,m2,x;
for(k=n-1;k>0;k--)
{
for(x=1;x<n;x++)//冒泡排序
{
int k1=k;
for(i=k;i>=x;i--)
{
if(a[k1][k]<a[k1-1][k])
{
for(j=0;j<n;j++)
{
temp=a[i][j];a[i][j]=a[i-1][j];a[i-1][j]=temp;//交换两行的数首元素最大的放在第一行

}
/*for(m1=0;m1<n;m1++)//检验 行列式a
{
for(m2=0;m2<n;m2++)
printf("%5lf",a[m1][m2]);
printf("\n");
}*/
//printf("\n");
}
k1--;
}
}
if(k==n-1)//判断第一列
{
if(a[k][k]==0)//判断对角线是否为零如果为零无解重新输入值
{
printf("输入的行列式有误\n");
printf("请重新输入行列式a:\n");
int m,n;
float c[4][4];
for(m=0;m<4;m++)
for(n=0;n<4;n++)
scanf("%10lf",&c[m][n]);
bianling2(c,4);//重新调用此函数
}
//else break;//这一行是错误的
}
else//判断其他的列
{
if(a[k][k]==0)
{
k--;
break;
}
}
if(k<=0)//当k达到4 的时候就跳出循环
break;
else
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[i][j]=a[i][j];
/*for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("b%5.1f",b[i][j]);//检验 输出b行列式的每一步
printf("\n");
}*/
for(i=k-1;i>=0;i--)//一定要注意是对于那个变量进行的操作
for(j=k;j>=0;j--)
a[i][j]=a[i][j]-a[k][j]*b[i][k]/a[k][k];
/*for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("a%10f",a[i][j]);//检验 输出a行列式的每一步
printf("\n");
}*/
}
}
}
void jisuan(float a[][4],float b[][1],float c[][1],int n)
//a为下三角已知,b为要求的行列式,c为已知的行列
{
int i,j;
float sum=0.0;
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
sum=a[i][j]*b[j][0]+sum;
b[i][0]=(c[i][0]-sum)/a[i][i];
//printf("%5f\n",b[i][0]);
}
}
展开
 我来答
哒哒v587
2015-06-27
知道答主
回答量:1
采纳率:0%
帮助的人:1221
展开全部
a-¹*a*b=a-¹*c⇒b=a-¹*c(a-¹为a的逆矩阵
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式