094766.rar

  • Jeanczlb
    了解作者
  • C/C++
    开发工具
  • 5KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2017-12-08 21:50
    上传日期
部分线性代数计算算法,个人精力有限只整理的这么一点,
094766.rar
  • 因素分解factorization.cpp
    1001B
  • 非线性方程求解.c
    2.4KB
  • 线性方程求解.c
    2.6KB
  • 矩阵相乘.cpp
    1.5KB
  • 复矩阵相乘.C
    2.8KB
  • 方阵求逆.C
    3.4KB
  • 5全排列.cpp
    648B
内容介绍
#include <stdio.h> #include <stdlib.h> #include <math.h> #define MAX 255 void MatrixMul(a,b,m,n,k,c) /*实矩阵相乘*/ int m,n,k; /*m:矩阵A的行数, n:矩阵B的行数, k:矩阵B的列数*/ double a[],b[],c[]; /*a为A矩阵, b为B矩阵, c为结果,即c = AB */ { int i,j,l,u; /*逐行逐列计算乘积*/ for (i=0; i<=m-1; i++) for (j=0; j<=k-1; j++) { u=i*k+j; c[u]=0.0; for (l=0; l<=n-1; l++) c[u]=c[u]+a[i*n+l]*b[l*k+j]; } return; } int brinv(a,n) /*求矩阵的逆矩阵*/ int n; /*矩阵的阶数*/ double a[]; /*矩阵A*/ { int *is,*js,i,j,k,l,u,v; double d,p; is=malloc(n*sizeof(int)); js=malloc(n*sizeof(int)); for (k=0; k<=n-1; k++) { d=0.0; for (i=k; i<=n-1; i++) /*全选主元,即选取绝对值最大的元素*/ for (j=k; j<=n-1; j++) { l=i*n+j; p=fabs(a[l]); if (p>d) { d=p; is[k]=i; js[k]=j;} } /*全部为0,此时为奇异矩阵*/ if (d+1.0==1.0) { free(is); free(js); printf(" >> This is a singular matrix, can't be inversed!\n"); return(0); } /*行交换*/ if (is[k]!=k) for (j=0; j<=n-1; j++) { u=k*n+j; v=is[k]*n+j; p=a[u]; a[u]=a[v]; a[v]=p; } /*列交换*/ if (js[k]!=k) for (i=0; i<=n-1; i++) { u=i*n+k; v=i*n+js[k]; p=a[u]; a[u]=a[v]; a[v]=p; } l=k*n+k; a[l]=1.0/a[l]; /*求主元的倒数*/ /* a[kj]a[kk] -> a[kj] */ for (j=0; j<=n-1; j++) if (j!=k) { u=k*n+j; a[u]=a[u]*a[l]; } /* a[ij] - a[ik]a[kj] -> a[ij] */ for (i=0; i<=n-1; i++) if (i!=k) for (j=0; j<=n-1; j++) if (j!=k) { u=i*n+j; a[u]=a[u]-a[i*n+k]*a[k*n+j]; } /* -a[ik]a[kk] -> a[ik] */ for (i=0; i<=n-1; i++) if (i!=k) { u=i*n+k; a[u]=-a[u]*a[l]; } } for (k=n-1; k>=0; k--) { /*恢复列*/ if (js[k]!=k) for (j=0; j<=n-1; j++) { u=k*n+j; v=js[k]*n+j; p=a[u]; a[u]=a[v]; a[v]=p; } /*恢复行*/ if (is[k]!=k) for (i=0; i<=n-1; i++) { u=i*n+k; v=i*n+is[k]; p=a[u]; a[u]=a[v]; a[v]=p; } } free(is); free(js); return(1); } print_matrix(a,n)/*打印的方阵a的元素*/ int n; /*矩阵的阶数*/ double a[]; /*矩阵a*/ { int i,j; for (i=0; i<n; i++) { for (j=0; j<n; j++) printf("%13.7f\t",a[i*n+j]); printf("\n"); } } main() { int i,j,n=0; double A[MAX],B[MAX],C[MAX]; static double a[4][4]={ {0.2368,0.2471,0.2568,1.2671}, {1.1161,0.1254,0.1397,0.1490}, {0.1582,1.1675,0.1768,0.1871}, {0.1968,0.2071,1.2168,0.2271}}; static double b[4][4],c[4][4]; clrscr(); puts("**********************************************************"); puts("* This program is to inverse a square matrix A(nxn). *"); puts("**********************************************************"); while(n<=0) { printf(" >> Please input the order n of the matrix (n>0): "); scanf("%d",&n); } printf(" >> Please input the elements of the matrix one by one:\n >> "); for(i=0;i<n*n;i++) { scanf("%lf",&A[i]); B[i]=A[i]; } for(i=0;i<4;i++) for(j=0;j<4;j++) b[i][j]=a[i][j]; i=brinv(A,n); if (i!=0) { printf(" Matrix A:\n"); print_matrix(B,n); printf("\n"); printf(" A's Inverse Matrix A-:\n"); print_matrix(A,n); printf("\n"); printf(" Product of A and A- :\n"); MatrixMul(B,A,n,n,n,C); print_matrix(C,n); } printf("\n Press any key to quit..."); getch(); }
评论
    相关推荐
    • ACCESS2000源码-禁用SHIFT及其它特殊设置
      说 明: 〖ACCESS禁用SHIFT及其它特殊设置源码〗说明文件你是否有过ACCESS开发经验,你是不是发现当按住SHIFT进入ACCESS,可以跳过你的启动画面或窗体或宏,而直接进入你的数据库,如果你的程序没有加密或没有编绎成...
    • 其它others
      NULL 博文链接:https://darrenzhu.iteye.com/blog/1702719
    • Spring整合其他ORM框架
      Spring整合其他ORM框架:Spring整合其他ORM框架整合的时候所需要的jar包spring-orm-3.2.0.RELEASE.jar
    • awesome-linux-zh::penguin: 适用于 Linux 下的应用程序,软件,工具和其他材料
      Linux 资源大全 :penguin: 翻译自 ,此外整合补充了一些其他资源 ...K3b - 一个设计给 KDE在Linux或其它类Unix系统上的CD/DVD烧录的自由软件 Mixxx - 一个免费的开源版本的DJ混音软件,适用于专业级
    • 大学生网页作品作业制作+HTML+ASP-其它其他资源
      高质量网页设计制作大作业成品免费下载。本作品使用DIV布局粉红色边框,但是一点也不娘哦!免费dreamweaver/frontpage网页制作作业成品模板下载。学生原创课程设计网页设计制作大作业成品免费下载。...
    • 802.11n的吞吐率、强健性和可靠性-其它其他资源
      用来学习无线网络使用,是Cambridge.Next Generation Wireless LANs.802.11n这本书的翻译版
    • Lemmy仿Reddit社区-其他
      可设置站点管理员和社区管理员,可以指定其他管理员 可以锁定、删除和恢复帖子和评论 可以从社区和网站封禁和解禁用户 5、洁净的移动端友好界面 6、高性能 服务器采用Rust编写而成 前端 gzip 压缩到只有80kB
    • linux其它一些资料
      其它一些资料 其它一些资料 其它一些资料 其它一些资料 其它一些资料 其它一些资料
    • OPC C# 其它Dll
      其中包含二个dll ScaleOPClient.dll OPCdotNETLib.dll
    • TensorBoard及其它
      BAT算法工程师深入详细地讲解TensorBoard及其它,带你轻松入门机器学习!