找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2053|回复: 0
打印 上一主题 下一主题
收起左侧

n阶(<20)行列式计算器 (有bug)

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-10 17:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1.     最近线代的计算量越来越大了  网上的计算器 只能算低阶的行列式  .所以我自己就写了一个 最多可以计算20阶的行列式的 代码  计算结果总是会出问题,我发在这里 希望有谁能给我建议 .基于C语言  主要使用递归算法完成.
复制代码
  1. #include "stdafx.h"
  2. float p[][20] = { 0 };
  3. void T(float(*a)[20], float(*p2)[20], int y, int x, int n)//把a中的数据 去掉第 y 行 第x列  后给p2
  4. {
  5. int k = 0, l = 0;
  6. for (int i = 0; i<n; i++)
  7. {
  8. if (i != y)
  9. {
  10. for (int j = 0; j<n; j++)
  11. {
  12. if (j != x)
  13. {
  14. p2[k][l] = a[i][j];
  15. if (++l == n - 1)
  16. {
  17. l = 0;
  18. }
  19. }
  20. }
  21. k++;
  22. }
  23. }
  24. }
  25. int cc(int i, int j)
  26. {
  27. if ((i + j) % 2 == 0)
  28. {
  29. return 1;
  30. }
  31. else
  32. return -1;
  33. }
  34. float Deter(float(*a)[20], int n)//计算行列式的主要函数
  35. {
  36. float s = 0;

  37. if (n == 2)
  38. {
  39. s = a[0][0] * a[1][1] - a[1][0] * a[0][1];
  40. }
  41. else
  42. {
  43. for (int i = 0; i<n; i++)
  44. {
  45. T(a, p, i, 0, n);
  46. s += a[i][0] * Deter(p, n - 1)*cc(i + 1, 1);
  47. }
  48. }
  49. return s;
  50. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表