行列式的值的源代码如下:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i,j,m,n,s,t,k=1
double a[n][n],f=1,c,x,sn
for (i=0i<ni++)
for (j=0j<nj++)
scanf ("%lf",&a[i][j])
for (i=0,j=0i<n&&j<ni++,j++)
{
if (a[i][j]==0)
{
for (m=ia[m][j]==0m++)
if (m==n)
{
sn=0
printf("deta=%lf\n",sn)
exit(0)
}
else
for (n=jn<nn++)
{
c=a[i][n]
a[i][n]=a[m][n]
a[m][n]=c
}
k*=(-1)
}
for (s=n-1s>is--)
{
x=a[s][j]
for (t=jt<nt++)
a[s][t]-=a[i][t]*(x/a[i][j])
}
for (i=0i<ni++)
f*=a[i][i]
sn=k*f
printf ("deta=%lf\n",sn)
}
扩展资料
1、每个C语言程序中main函数是有且只有一个。
2、C语言程序写完后,都是先编译,后连接,最后运行。(.c-->.obj-->.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行
#include <stdio.h>#include <stdlib.h>
void fun3(float *,int)
float fun4(float *,int)
void main()
{
int i,j,n
float *a,answer
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n")
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
do
{
printf("请输入您要计算的行列式的行数或列数n(n>1):")
scanf("%d",&n)
}while(n<2)
a=(float *)malloc(n*n*sizeof(float))
for(i=0i<ni++)
{
printf("请输入您要计算的行列式的:\n")
for(j=0j<nj++)
{
printf("第%d行%d列:",i+1,j+1)
scanf("%f",&a[i*n+j])
}
}
fun3(a,n)
answer=fun4(a,n)
printf("您要计算的行列式的值为:%.3f\n\n\n",answer)
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n")
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
}
void fun3(float a[],int n)
{
int i,j,d,f
float m=1,w
for(j=0j<nj++)
{
for(i=0i<ni++)
{
if(a[j*n+j]==0)
{
for(d=j+1d<nd++)
{
if(a[d*n+j]!=0)
break
}
for(f=jf<nf++)
a[j*n+f]+=a[d*n+f]*m
}
if(i!=j)
{
w=-(a[i*n+j]/a[j*n+j])
for(f=jf<nf++)
a[i*n+f]+=a[j*n+f]*w
}
}
}
}
float fun4(float a[],int n)
{
int i
float answer=1
for(i=0i<ni++)
answer*=a[i*n+i]
return answer
}
不用det函数,如何用matlab编写一个函数计算行列式的值?编写该程序,我们可以利用代数余子式方法求取矩阵行列式值。通过递归的方法进行计算。其实现代码:function d=det1(A)
[n,m]=size(A)
if n==m
if n==1d=A
elseif n==2, d=A(1,1)*A(2,2)-A(1,2)*A(2,1)
else, d=0A1=AA1(1,:)=[]
for i=1:n
A2=A1A2(:,i)=[]d=d+A(1,i)*(-1)^(1+i)*det1(A2)
end, end
else, error('A rectangular matrix cannot be handled.')end
使用方法:
A=[16,2,3,135,11,10,89,7,6,124,,14,15,1]
det1(A)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)