用C或C++怎么编写求N阶行列式的值?要求有具体算法和程序.

用C或C++怎么编写求N阶行列式的值?要求有具体算法和程序.,第1张

方法:递推法

记所求行列式为dn

最后一行拆分为:0

0

0

……1

ana1

ana2

ana3

……an^2

这样行列式变成两个行列式相加,前者按照最后一行展开为行列式d(n-1),后者先从最后一行提取公因子an,再把最后一行分别乘以-a1,-a2,-a3,……局宽卜,-a(n-1)加到第一行,第巧拦二行,第三行,……,第n-1行,化成一个n阶下三角行列式,对角线元素是1,1,1,……,1,an,所以结果是an^2

所以,dn=d(n-1)+an^2

又d1=a+a1^2,d2=a+a1^2+a2^2,所以

dn=d(n-1)+an^2=d(n-1)+a(n-1)^2+an^2=桐穗……=d1+a2^2+a3^3+……+an^2=1+a1^2+a2^2+a3^3+……+an^2

#include<stdio.h>

void main()

{

int n,a,b,y[10],x[10],i,j,temp

float m[10][10],k=1

printf("Input \"n\"")

scanf("%d",&n)

printf("input the matrix:\n")

for(b=1b<=nb++)

{

printf("next row:\n")

for(a=1a<=na++)scanf("%f",&m[a][b])

}

for(b=1b<=nb++)

{

for(a=1a<桐颤=na++)printf("%10f",m[a][b])

printf("\n")

}

printf("\n")

for(i=1i<棚察=ni++){x[i]=1y[i]=i}

for(j=1j<=nj++)while(m[x[j]][j]==0)x[j]++

for(b=nb>=1b--)

for(a=1a<=b-1a++)

if(x[a]>x[a+1])

{

temp=x[a]x[a]=x[a+1]x[a+1]=temp

temp=y[a]y[a]=y[a+1]y[a+1]=temp

k*=-1

}

for(b=1b<=nb++)

{

for(a=1a<=na++)printf("%10f",m[a][y[b]])

printf("\n")

}

printf("链轮茄\n")

for(a=1a<=na++)

for(b=a+1b<=nb++)

if(m[a][y[b]]!=0)

for(i=a+1i<=ni++)

m[i][y[b]]-=m[a][y[b]]*m[i][y[b-1]]/m[a][y[b-1]]

for(b=1b<=nb++)

{

for(a=1a<=na++)printf("%10f",m[a][y[b]])

printf("\n")

}

for(i=1i<=ni++)k*=m[i][y[i]]

printf("the matrix is %f \n",k)

scanf("%d",i)

}

我在刚学c那会写的一个程序,算法不是很优秀,而且有漏洞,希望能给你提供大体思路。

我也帮你找了个别人写的程序,你也去看看吧。也是百度上的。

改变N的值可以求N阶行列派笑式的值

#define N 4

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

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存