当前位置: 首页 > news >正文

n阶行列式算法(c程序)

#include<stdio.h>

#include<math.h>

#define N 100 //N比输入的阶数大即可

int main()

{   int n,a[N][N],i,j;

    void row_col_times(int b[N][N],int n);

    printf("请输入方阵阶数:\n");

    scanf("%d",&n);

    printf("请输入%d阶的方阵(用空格隔开)\n",n);

    for(i=0;i<n;i++)

    for(j=0;j<n;j++)

    scanf("%d",&a[i][j]);

    printf("您输入的%d阶方阵是:\n");

    for(i=0;i<n;i++)

   {for(j=0;j<n;j++)

   {printf("%3d ",a[i][j]);}//右对齐输出矩阵

    printf("\n");}

    row_col_times(a,n);//调用行列式乘积函数

    return 0;

}

 

void row_col_times(int b[N][N],int n)

{ int change_col(int c[N][N],int n,int i);

  int product(int d[N][N],int n,int p);

  int i,j,k,p=0;

    for(i=0;i<n-1;i++)//i为阶数

    {

     if(b[i][i]==0)//当对角线元素为零时调换列

          { p=p+change_col(b,n,i);}

     for(j=i+1;j<n;j++)//j指列

      { 

       for(k=i+1;k<n;k++)//k指行

       b[k][j]=b[k][j]*b[i][i]-b[k][i]*b[i][j];//最重要的操作

      }

    }

printf("the det of array is:%d",product(b,n,p));//调用对角线乘积+符号函数

}

 

int change_col(int c[N][N],int n,int i)

{ int temp,j,k,flag=0;

  for(k=i;k<n;k++)//k指列

     { if(c[i][k]!=0)  

       { 

         for(j=i;j<n;j++)//j指行

             {

              temp=c[j][i];

              c[j][i]=c[j][k];

              c[j][k]=temp;//调换列

             }

         flag++;//列调换符号记录

         break;

       }

     }

  return flag;//返回调换符号记录数

}

 

int product(int d[N][N],int n,int p)

{   int product=1,i;

    for(i=0;i<n;i++)

    product=product*d[i][i];//对角线乘积

    for(i=0;i<n-1;i++)

    product=product/pow(d[i][i],n-i-1);//除回来

    product=product*pow(-1,p);//乘上列调换符号

    return product;

}

/*本程序的构建利用了初等变换下行列式的的不变性

和下三角方阵行列式的公式,并添加了个人的思维方式。

望不吝赐教*/

转载于:https://www.cnblogs.com/mathstudysharing/p/n_determinant.html

相关文章:

  • 2-2+CPU多级缓存-乱序执行优化
  • 正则表达式中/i,/g,/ig,/gi,/m的区别和含义
  • bzoj 2194 快速傅立叶之二 —— FFT
  • ELK使用2-Kibana使用
  • 用Inno setup制作以管理员权限启动的安装包
  • airtest自动化游戏脚本测试
  • 【WebApi】通过HttpClient调用Web Api接口
  • JUnit测试
  • error while loading shared libraries: xxx.so.x 错误的原因和解决办法
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • jmeter查看结果树中响应数据Unicode转换成中文
  • 牛客网——反序输出
  • python-24: re 模块 之三 re.compile
  • 常用安全测试用例(二)
  • 查看GPU占用率以及指定GPU加速程序
  • eclipse的离线汉化
  • ES6系列(二)变量的解构赋值
  • golang中接口赋值与方法集
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 奇技淫巧
  • javascript面向对象之创建对象
  • Redis在Web项目中的应用与实践
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Spring Cloud Feign的两种使用姿势
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 深入浅出webpack学习(1)--核心概念
  • 源码安装memcached和php memcache扩展
  • 正则表达式
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $.ajax()方法详解
  • (solr系列:一)使用tomcat部署solr服务
  • (SpringBoot)第七章:SpringBoot日志文件
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二)Linux——Linux常用指令
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • ***详解账号泄露:全球约1亿用户已泄露
  • .java 9 找不到符号_java找不到符号
  • .Net 8.0 新的变化
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 常见的偏门问题
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET简谈设计模式之(单件模式)
  • .net开发引用程序集提示没有强名称的解决办法
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @Builder用法
  • @JoinTable会自动删除关联表的数据
  • @Valid和@NotNull字段校验使用
  • []串口通信 零星笔记