#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条)