C语言 计算行列式

C语言 计算行列式,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12560609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存