欢迎来到天天文库
浏览记录
ID:8821352
大小:121.63 KB
页数:5页
时间:2018-04-08
《判定方阵的正定与负定在c语言中写法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、判定方阵的正定与负定在C语言中写法#include#includeintinput(intn);floatcount(intn,floata[99][99]);main(){inti,j,m,h,k,l,n=0;floatx,a[99][99]={{0}};printf("这是一个判定方阵(100以内包括100)的正定与负定的程序:");while(1)/*实现多次运算*/{n=input(n);/*输入方阵阶数*/for(i=0;i2、for(j=0;j3、n;l++)/*输出方阵各阶顺序主子式的值*/{x=count(l+1,a);if(l%2==1){if(x>=0)i++;elsej++;}else{if(x>=0)h++;elsek++;}if(x==0)/*m确定各阶顺序主子式为零的次数*/m++;printf("方阵的%d阶顺序主子式值为:%.2f",l+1,x);}if(n%2==0)/*矩阵为偶数阶时*/{if(i==n/2&&h==n/2&&m==0)printf("该方阵为正定矩阵");elseif(j==0&&k==0&&m!=0)print4、f("该方阵为半正定矩阵");elseif(i==n/2&&k==n/2&&m==0)printf("该方阵为负定矩阵");elseprintf("该方阵为不定矩阵");}else/*矩阵为奇数阶时*/{if(i==(n-1)/2&&h==(n+1)/2&&m==0)printf("该方阵为正定矩阵");elseif(j==0&&k==0&&m!=0)printf("该方阵为半正定矩阵");elseif(i==(n-1)/2&&k==(n+1)/2&&m==0)printf("该方阵为负定矩阵");elseprin5、tf("该方阵为不定矩阵");}printf("");}return0;}intinput(intn){inti;printf("请输入方阵阶数:");scanf("%d",&i);if(i<=06、7、i>100)/*确保方阵阶数输入正确*/{printf("输入错误,请重新输入!!!");i=input(i);}returni;}floatcount(intn,floata[99][99]){floatb[99][99],sum=0;/*定义数组b并初始化*/inti=0,j=0;/*i,j为行8、与列,sum为行列式的值*/intx=0,c=0,p=0;/*用x判断加与减,c,p为中间变量*/if(n==1)returna[0][0];for(i=0;i9、0)/*i+j(此时j=0,故只考虑i)为偶数,加法预算*/{x=1;}else/*i+j为奇数,减法运算*/{x=(-1);}sum+=a[i][0]*count(n-1,b)*x;/*计算行列式的值*/}returnsum;/*将值返回*/}运行时的简单结果
2、for(j=0;j3、n;l++)/*输出方阵各阶顺序主子式的值*/{x=count(l+1,a);if(l%2==1){if(x>=0)i++;elsej++;}else{if(x>=0)h++;elsek++;}if(x==0)/*m确定各阶顺序主子式为零的次数*/m++;printf("方阵的%d阶顺序主子式值为:%.2f",l+1,x);}if(n%2==0)/*矩阵为偶数阶时*/{if(i==n/2&&h==n/2&&m==0)printf("该方阵为正定矩阵");elseif(j==0&&k==0&&m!=0)print4、f("该方阵为半正定矩阵");elseif(i==n/2&&k==n/2&&m==0)printf("该方阵为负定矩阵");elseprintf("该方阵为不定矩阵");}else/*矩阵为奇数阶时*/{if(i==(n-1)/2&&h==(n+1)/2&&m==0)printf("该方阵为正定矩阵");elseif(j==0&&k==0&&m!=0)printf("该方阵为半正定矩阵");elseif(i==(n-1)/2&&k==(n+1)/2&&m==0)printf("该方阵为负定矩阵");elseprin5、tf("该方阵为不定矩阵");}printf("");}return0;}intinput(intn){inti;printf("请输入方阵阶数:");scanf("%d",&i);if(i<=06、7、i>100)/*确保方阵阶数输入正确*/{printf("输入错误,请重新输入!!!");i=input(i);}returni;}floatcount(intn,floata[99][99]){floatb[99][99],sum=0;/*定义数组b并初始化*/inti=0,j=0;/*i,j为行8、与列,sum为行列式的值*/intx=0,c=0,p=0;/*用x判断加与减,c,p为中间变量*/if(n==1)returna[0][0];for(i=0;i9、0)/*i+j(此时j=0,故只考虑i)为偶数,加法预算*/{x=1;}else/*i+j为奇数,减法运算*/{x=(-1);}sum+=a[i][0]*count(n-1,b)*x;/*计算行列式的值*/}returnsum;/*将值返回*/}运行时的简单结果
3、n;l++)/*输出方阵各阶顺序主子式的值*/{x=count(l+1,a);if(l%2==1){if(x>=0)i++;elsej++;}else{if(x>=0)h++;elsek++;}if(x==0)/*m确定各阶顺序主子式为零的次数*/m++;printf("方阵的%d阶顺序主子式值为:%.2f",l+1,x);}if(n%2==0)/*矩阵为偶数阶时*/{if(i==n/2&&h==n/2&&m==0)printf("该方阵为正定矩阵");elseif(j==0&&k==0&&m!=0)print
4、f("该方阵为半正定矩阵");elseif(i==n/2&&k==n/2&&m==0)printf("该方阵为负定矩阵");elseprintf("该方阵为不定矩阵");}else/*矩阵为奇数阶时*/{if(i==(n-1)/2&&h==(n+1)/2&&m==0)printf("该方阵为正定矩阵");elseif(j==0&&k==0&&m!=0)printf("该方阵为半正定矩阵");elseif(i==(n-1)/2&&k==(n+1)/2&&m==0)printf("该方阵为负定矩阵");elseprin
5、tf("该方阵为不定矩阵");}printf("");}return0;}intinput(intn){inti;printf("请输入方阵阶数:");scanf("%d",&i);if(i<=0
6、
7、i>100)/*确保方阵阶数输入正确*/{printf("输入错误,请重新输入!!!");i=input(i);}returni;}floatcount(intn,floata[99][99]){floatb[99][99],sum=0;/*定义数组b并初始化*/inti=0,j=0;/*i,j为行
8、与列,sum为行列式的值*/intx=0,c=0,p=0;/*用x判断加与减,c,p为中间变量*/if(n==1)returna[0][0];for(i=0;i9、0)/*i+j(此时j=0,故只考虑i)为偶数,加法预算*/{x=1;}else/*i+j为奇数,减法运算*/{x=(-1);}sum+=a[i][0]*count(n-1,b)*x;/*计算行列式的值*/}returnsum;/*将值返回*/}运行时的简单结果
9、0)/*i+j(此时j=0,故只考虑i)为偶数,加法预算*/{x=1;}else/*i+j为奇数,减法运算*/{x=(-1);}sum+=a[i][0]*count(n-1,b)*x;/*计算行列式的值*/}returnsum;/*将值返回*/}运行时的简单结果
此文档下载收益归作者所有