找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2363|回復(fù): 0
收起左側(cè)

n階(<20)行列式計算器 (有bug)

[復(fù)制鏈接]
ID:75926 發(fā)表于 2015-4-10 17:28 | 顯示全部樓層 |閱讀模式
  1.     最近線代的計算量越來越大了  網(wǎng)上的計算器 只能算低階的行列式  .所以我自己就寫了一個 最多可以計算20階的行列式的 代碼  計算結(jié)果總是會出問題,我發(fā)在這里 希望有誰能給我建議 .基于C語言  主要使用遞歸算法完成.
復(fù)制代碼
  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(bǔ)中的數(shù)據(jù) 去掉第 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)//計算行列式的主要函數(shù)
  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. }
復(fù)制代碼



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表