C编程解线性代数二阶三阶矩阵(奇迹冬瓜)
来源:互联网 发布:淘宝手机排名 编辑:程序博客网 时间:2024/04/19 05:32
(一)
小编语
大学数学三大基础:概论,线性,高数,用计科系软件角度运用数学观点理论编写程序来解决作业是一个极富创造力的工程,现在就线性代数第一章的理论来进行程序(c基础语言)的编写以求达到简化作业的目的,当然,最终目的还是为了睡个好觉,首先进行这个课题的理论积累。
(二)
二阶行列式理论基础
二阶行列式推导过程:
①a11x1+a12x2=b1
②a21x1+a22x2=b2
由一二式的推导
①*a21:a11a21x1+a12a21x2=b1a21
②*a11:a11a21x1+a11a22x2=b2a11
①-②:(a12a21-a11a22)x2=b1a21-b2a11
当a12a21-a11a22≠0时
x1=(b1a21-b2a11)/(a12a21-a11a22)
x2=(b2a12-b1a22)/(a12a21-a11a22)
那么二阶行列式
| a11 a12 | | b1 a12 | | a11 b1 |
| a21 a22 | | b2 a22 | | a21 b2 |
其中a叫做元素(element),下标分别表示行与列,简称行标与列标,系数行列式(D):由对角线法则得D=a11a22-a12a21
同理得D1=b1a22-a12b2 D2=a11b2-b1a21
于是乎x1=D1/D x2=D2/D
(三)
二阶编程代码
#include<stdio.h>#include<stdlib.h>void main(){float arr[2][3],D1,D2,D;int i,j;for(i=0;i<2;i++){for(j=0;j<3;j++){scanf("%f",&arr[i][j]);}}D=arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0];if(0!=D){D1=arr[0][2]*arr[1][1]-arr[0][1]*arr[1][2];D2=arr[0][0]*arr[1][2]-arr[0][2]*arr[1][0];}else{exit(0);}printf("x1:%-5.2f x2:%-5.2f\n",D1/D,D2/D);getchar();getchar();}
程序测试:
线性代数第一章例一:
3x1-2x2=12
2x1+x2=1
(四)
三阶行列式理论与代码
#include<stdio.h>#include<stdlib.h>#define N 3void Exchange(float (*p)[N],int i,float *q);float MainDgl(float (*s)[N]);float ViceDgl(float (*s)[N]);void main(){float arr[N][N],b[N],D1[N],D;int i,j;for(i=0;i<N;i++){for(j=0;j<N;j++){scanf("%f",&arr[i][j]);}}D=MainDgl(arr)-ViceDgl(arr);printf("D:%-5.3f ",D);printf("\n");getchar();getchar();}void Exchange(float (*p)[N],int i,float *q){int j=0;float temp;for(;j<N;j++){temp=p[i][j];p[i][j]=q[j];q[j]=temp;}}float MainDgl(float (*s)[N]){float m=1,sum=0;int i=0,j=0,k=1,start=0,end=N-1;while(start<=end){m*=s[i++][j++];if(i==N){i=0;}if(j==N){j=0;}if(0==k%N){sum+=m;m=1;i=0;j=++start;}k++;}return sum;}float ViceDgl(float (*s)[N]){float m=1,sum=0;int i=0,j=N-1,k=1,start=N-1,end=0;while(start>=end){m*=s[i++][j--];if(i==N){i=0;}if(j==-1){j=N-1;}if(0==k%N){sum+=m;m=1;i=0;j=--start;}k++;}return sum;}
以第五版线性代数的作业作为测试:
习题一p25
第一大题(1)
| 2 0 1 |
| 1 -4 -1 |
| -1 8 3 |
测试结果:
- C编程解线性代数二阶三阶矩阵(奇迹冬瓜)
- c语言版数据结构(奇迹冬瓜)-数组和广义表(稀疏矩阵的乘法)
- c语言版数据结构(奇迹冬瓜)-数组和广义表(稀疏矩阵的转置算法一)
- c语言版数据结构(奇迹冬瓜)-数组和广义表(十字链表存贮稀疏矩阵的行列值)
- c语言版数据结构(奇迹冬瓜)-数组和广义表(十字链表稀疏矩阵的加法)
- (游戏编程-03)MFC版俄罗斯方块(奇迹冬瓜)
- (游戏编程-04)JAVA版雷电(奇迹冬瓜)
- (游戏编程-01)MFC版坦克大战(奇迹冬瓜)
- c语言版数据结构(奇迹冬瓜)-栈实战(1)栈解迷宫<迷宫算法>
- c语言版数据结构(奇迹冬瓜)-单链式队列
- c语言版数据结构(奇迹冬瓜)-链表实战(3)解升序排列的一元多项式相加
- (游戏编程-02)MFC版贪吃蛇(奇迹冬瓜)
- c语言版数据结构(奇迹冬瓜)-链表实战(1)A=AUB
- c语言版数据结构(奇迹冬瓜)-链表实战(2)合并两有序线性表
- c语言版数据结构(奇迹冬瓜)-栈实战(3)括号匹配的检测
- c语言版数据结构(奇迹冬瓜)-栈实战(4)表达式求值
- c语言版数据结构(奇迹冬瓜)-队列实战(1)离散事件模拟(银行排队)
- c语言版数据结构(奇迹冬瓜)-串(定长顺序存储各项操作)
- 歌厅歌曲管理系统(转)用c语言实现的一个课程设计
- python:将数字转换成用英文表达的程序
- Oracle中的NULL和空字符串
- 第八章 类高级概念
- 我的JAVA学习笔记(记下一些容易忘记的知识点)持续更新
- C编程解线性代数二阶三阶矩阵(奇迹冬瓜)
- android 简单的触屏事件
- 读完《深度探索C++对象模型》第一遍感悟
- 关于 Android SDK r20.0.1 更新后,Hierarchical Parent 必须填写的解决办法
- js之表格api:99乘法表
- 虚继承与虚基类的本质
- Word2007里EndNote图标突然消失不见的原因及解决方法
- JSP,include指令ud
- 【ACM】杭电1073:Online Judge