求行列式的值,用C语言怎么写啊?

求行列式的值,用C语言怎么写啊?,第1张

行列式的值的源代码如下:

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存