关于我们
 新书资讯
 新书推荐
|
|
符号计算的程序分析——在线性代数、矩阵论中的应用研究
定 价:¥45
中 教 价:¥28.80 (6.40折)
库 存 数: 0
随着计算机技术的飞速发展,计算机代数系统已经广泛地应用于科研、教学以及工程技术中,如著名的Maple、Mathematica和Matlab等。它们在线性代数及矩阵论的教学中应用研究的较少,不够深入,《符号计算程序分析:在线性代数、矩阵论中的应用》对此进行比较深入的研究。《符号计算程序分析:在线性代数、矩阵论中的应用》共8章,分别介绍了n阶行列式的计算,矩阵及其运算,解实矩阵方程,线性方程组,矩阵的Doolittle和Crout分解,复矩阵乘法,计算复数行列式及求解复矩阵方程,指针在符号行列式计算中的应用。
《符号计算程序分析:在线性代数、矩阵论中的应用》适合具有线性代数知识和C语言程序设计基础的大学生及讲授线性代数课的教师阅读,也适合研究符号计算的科研人员和工程技术人员阅读。
本书研究了计算机代数系统在线性代数及矩阵论的教学应用。全书共分8章。前5章为与整数和有理数(分数)有关的计算程序;第6章和第7章为复数有关的计算程序;第8章为文字方面的程序,部分程序国外用DNA计算才能实现。
前言
第1章 n阶行列式的计算
1.1 全排列及其逆序数的计算程序
1.1.1 基本概念
1.1.2 计算程序
1.2 按n阶行列式的定义开发的计算程序
1.2.1 行列式的概念
1.2.2 行列式计算程序实现方法分析
1.2.3 计算程序
1.3 行列式按行(列)展开的程序
1.3.1 按行(列)展开概念
1.3.2 计算行列式及余子式的c程序
1.3.3 行列式按行(列)展开的程序
1.4 克莱姆法则的计算程序
1.4.1 线性方程的方程组概念
1.4.2 克莱姆法则计算程序
1.5 计算分数行列式
1.5.1 分数行列式例
1.5.2 计算程序
1.6 分数克莱姆法则
1.6.1 分数计算程序
1.6.2 部分算法分析
1.6.3 分数克莱姆法则运行实例
第2章 矩阵及其运算
2.1 矩阵的概念
2.2 矩阵乘法
2.3 矩阵的转置
2.4 逆阵
2.5 元素为分数的矩阵乘法
2.5.1 c[i][j]的算法分析
2.5.2 分数矩阵乘法计算程序
第3章 解实矩阵方程
3.1 计算矩阵方程AX=B
3.1.1 计算矩阵方程AX=B技术分析
3.1.2 存储空间
3.1.3 程序中二维数组和主要函数
3.1.4 计算程序
3.2 计算矩阵方程XA=B
3.2.1 计算矩阵方程XA=B技术分析
3.2.2 存储空间
3.2.3 程序中二维数组和主要函数
3.2.4 计算程序
3.3 计算矩阵方程AXB=C
3.3.1 计算矩阵方程AXB=C技术分析
3.3.2 存储空间
3.3.3 程序中二维数组和主要函数
3.3.4 计算程序
第4章 线性方程组
4.1 非齐次线性方程组概述
4.2 程序设计
4.2.1 Turbo C 2.0程序
4.2.2 Visual C++6.0程序
第5章 矩阵的D00littie和Crout分解
5.1 Doolittle分解与Crout分解概述
5.2 Doolittle分解程序及运行
5.2.1 Turbo C 2.0程序
5.2.2 Visual C++6.0程序
5.3 Crout分解计算程序及运行
5.3.1 Turho C 2.0分解程序及示例
5.3.2 Visual C十+6.0程序
第6章 复矩阵乘法
6.1 复矩阵乘法概述
6.2 元素实部、虚部均为整形数的复矩阵
6.2.1 Turbo C 2.0程序
6.2.2 计算实例
6.3 两矩阵元素的实部与虚部均是有理数
6.3.1 复分数矩阵乘法程序
6.3.2 运行示例
6.4 一个矩阵元素的实部与虚部均是整数,另一矩阵元素的实部与虚部均是有理数计算矩阵乘积
6.4.1 分析与设置数据类型
6.4.2 Turbo C 2.0矩阵乘法程序(1)
6.4.3 Turbo C 2.0矩阵乘法程序(2)
第7章 计算复数行列式及求解复矩阵方程Ax=B
7.1 计算复数行列式
7.1.1 复数行列式简述
7.1.2 计算程序
7.1.3 程序运行示例
7.2 计算复数余子式
7.2.1 复数余子式简述
7.2.2 Turbo C 2.0计算程序
7.2.3 程序运行示例
7.3 计算复分数行列式
7.3.1 复分数行列式简述
7.3.2 复分数行列式计算程序
7.3.3 复分数行列式程序运行示例
7.4 计算复分数余子式
7.4.1 复分数余子式简述
7.4.2 复分数余子式Turbo C 2.0计算程序
7.5 复克莱姆法则
7.5.1 复数域上的克莱姆法则简述
7.5.2 复数域上的克莱姆法则程序设计
7.5.3 复数域上的克莱姆法则Turbo C 2.0计算程序
7.5.4 复数域上的克莱姆法则Turbo C 2.0程序运行示例
7.6 解复数矩阵方程AX=B的程序
第8章 指针在符号行列式计算中的应用
8.1 计算行列式的应用
8.1.1 理论上完美无缺的Turbo C 2.0程序
8.1.2 程序运行实例
8.2 简单的符号行列式计算
8.2.1 符号行列式Turbo C 2.0计算程序
8.2.2 符号行列式Ⅵsual C++6.0程序
8.3 使用指针计算简单的符号行列式
8.3.1 简单说明
8.3.2 使用指针计算符号行列式Turbo C 2.0程序
8.4 字母行列式
8.5 使用指针计算元素形如f(z)=∑aixn-i的符号行列式
8.5.1 程序组成
8.5.2 使用指针计算元素一元多项式的符号行列式的Turbo C 2.0程序
参考文献
第1章 n阶行列式的计算
1.1 全排列及其逆序数的计算程序
1.1.1 基本概念
在数学中,把考察的对象,叫做元素。把n个不同的元素排成一列,叫做这n个元素的全排列(也简称排列)。对于n个不同的元素,我们规定各元素之间有一个标准次序,于是在这n个元
素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有1个逆序。一个排列中所有逆序的总数叫做这个排列的逆序数。
逆序数为奇数的排列叫做奇排列,逆序数为偶数的排列叫做偶排列。对于计算排列逆序数,不失一般性,不妨设n个元素为1~n这n自然数,并规定由小到大为标准次序。设
p1p2.pn
为这n个自然数的一个排列,考虑元素pi(i=1,2,.,n),如果比pi大且排在pi
前面的元素有ti个,就说pi这个元素的逆序数是ti,全体元素的逆序数之和为
t=t1+t2+.+tn=∑nti
i =1
即是这个排列的逆序数。
用pj-pi>0表示pj排在pi前面且比pi大这一事实。排列的逆序数可表示为
t = i∑=1nj ∑=i1 g(i,j), g(i,j)=
1 pj > pi , i=1,2,.,n;j=1,2,.,i0pj≤pi
在C(C++)语言中表示为
1 pj > pi
t = ∑-i=01n∑-j=01ig(i,j), g(i,j)=0pj≤pi,
i=0,1,.,n-1;j=0,1,.,i-1
1.1.2 计算程序
TurboC2.0程序
?2? 符号计算程序分析
/*Inverse.c*/#include"conio.h"main()
{ #defineN10 /*定义N是10*/ inti,j,n,t,s,a[N]; printf("n=");scanf("%d",&n);/*n是排列的长度,小于或等于N*/ for(i=0;i
{ printf("a[%d]=",i);scanf("%d",&a[i]);/*a[i]是排列中的元素,*/
} /*i=0,1,.,n-1*/ t=0;/*t代表排列的逆序数,初始化为0*/ for(i=0;i
{ s=0;/*s是元素的a[i]的逆序数*/ for(j=0;ja[i])s++;/*或a[i]
求排列43152的逆序数,答案是t=6。运算过程如下:n=5a[0]=4a[1]=3a[2]=1a[3]=5a[4]=24inverse=03inverse=11inverse=2
第1章 n阶行列式的计算?3?
5inverse=02inverse=3t=6Pressanykeytoend.VisualC++6.0程序/*Inverse.cpp 求逆序数*/#includevoidmain()
{ constintN=10; /*定义N是10*/ inti,j,n,t,s,a[N]; cout<<"n=";cin>>n;/*n是排列的长度,小于或等于N*/ for(i=0;i>a[i];/*a[i]是排列中的元素,i=0,*/
} /*1,2,.,n-1*/ t=0;/*t代表排列的逆序数,初始化为0*/ for(i=0;ia[i])s++;/*或a[i]#defineN8 /*定义N为8*/
longa[N][N];/*定义元素为二维数组*/
longdeterminant(intn,inti,intj[],longd,longt,longa[],int
column) ;
longdet(intn,longa[],intcolumn)/*接口*/
{ /*n是行列式的阶数,a是二维数组名,column是行列式的最大列数*/
/*d是行列式,t是项,j[i]是计算过程中选择第i行元素的循环变量*/
longd,t;
intj[N];
d=0;
t=1;
d=determinant(n,0,j,d,t,a,column);
returnd;
}/*interfaceofcomputingdeterminant*/
longdeterminant(intn,inti,intj[],longd,longt,longa[],int
{ column)
/*计算部分*/
intk,sign,flag;
i f ( i for(j[i]=0;j[i]
?6? 符号计算程序分析
{
/*flag是标志*/
flag=0;
k=0;
while((flag==0)&&(k if(flag==1)continue;/*选下一列元素*/
if(a[i*column+j[i]]==0)continue;/*元素a[I,j[i]]为0*//*选下一列*/ sign=1;for(k=0;k d=determinant(n,i+1,j,d,t*sign*a[i*column+j[i]],a,column);
} /*递归调用*/
elsed+=t; /*累加*/
returnd;/*返回行列式计算结果*/
}/*computingdeterminant*/
main( )
{ inti,j,n; longd; printf("n="); scanf("%d",&n); for(i=0;i
|