常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx

上传人:b****8 文档编号:28324061 上传时间:2023-07-10 格式:DOCX 页数:25 大小:492.29KB
下载 相关 举报
常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx_第1页
第1页 / 共25页
常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx_第2页
第2页 / 共25页
常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx_第3页
第3页 / 共25页
常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx_第4页
第4页 / 共25页
常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx

《常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx》由会员分享,可在线阅读,更多相关《常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx(25页珍藏版)》请在冰豆网上搜索。

常用数学软件教程042 第4章 Mathematica使用基础 第2节 基本代数运算.docx

常用数学软件教程042第4章Mathematica使用基础第2节基本代数运算

目录索引

4.2 基本代数运算3

4.2.1 代数式化简3

Simplify[expr]:

应用代数或其它变换进行化简3

FullSimplify[expr]:

应用更广泛的变换(包括初等函数在内的变换)进行化简。

3

例子3

几种常用的集合类型5

例子5

4.2.2 代数式的展开与因式分解7

Expand[expr]:

将表达式展开成包含正整数幂的项。

7

Factor[expr]:

对表达式进行因式分解就。

7

例子7

Expand[expr,patt]:

展开expr,但保留patt的因式(或只对patt展开)。

7

例子7

ExpandAll[expr]:

对表达式的每部分包括子表达式全部展开。

8

例子8

Apart[expr]:

对有理分式展开成最简分式。

8

Apart[expr,var]:

将var作为一个常数展开。

8

例子8

4.2.3 三角函数的处理9

TrigExpand[expr]:

将三角函数表达式展开。

9

TrigFctor[expr]:

将三角函数表达式因式分解。

9

TrigReduce[expr]:

将相乘或成方的三角函数化成一次方的基本组合。

9

ExpToTrig[expr]:

将指数函数化成三角函数或双曲函数。

9

TrigToExp[expr]:

将三角函数或双曲函数化成指数函数。

9

例子9

4.2.4 多项式运算11

多项式的四则运算11

PolynomialGCD[p1,p2,…]:

求多项式p1,p2,…的最大公因式。

12

PolynomialLCM[p1,p2,…]:

求多项式p1,p2,…的最小公倍式。

12

PolynomialQuotient[p,q,x]:

变量为x,求多项式的商p/q。

12

PolynomialRemainder[p,q,x]:

变量为x,求p/q的余式。

12

例子12

Collect[expr,x]:

按x合并同类项,或将expr表示成x的多项式。

13

Collect[expr,{x1,x2,,…]:

按x1,x2,,…合并同类项。

13

Collect[expr,var,h]:

合并同类项后,再按h处理各项系数。

13

例子13

FactorTerms[poly]:

提取常数公因式。

14

FactorTerms[poly,x]:

提取不依赖于x的公因式。

14

FactorTerms[poly,{x1,x2,,…}]:

提取不依赖于x1,x2,,…的公因式14

例子14

4.2.5 方程求根14

Solve[eqns,var]:

求一个或一组方程的精确解,其中var为变量15

Reduce[expr,var]:

求方程或不等式的精确解,其中var为变量。

15

例子15

NSolve[lhs==rhs,var]:

求变量为var时的代数方程的数值解。

16

NSolve[{eqn1,eqn2,…},{var1,vsr2,…}]:

求代数方程的数值解。

16

FindRoot[lhs==rhs,{x,x0}]:

求方程在点x0附近的一个数值解。

16

FindRoot[{eqn1,eqn2,…},{{x,x0},{y,y0},…}]:

求方程组在点{x0,y0,…}附近的一个数值解16

例子16

 

4.2 基本代数运算

Mathematica最初以符号运算功能著称,而代数运算是符号运算的基础,现在的Mathematica6.0能够处理各种各样的公式运算,包括具有几百万项的多项式以及由多种高等数学函数构成的复杂公式,Mathematica都能够自动调用数以千计的运算规则和算法进行处理。

4.2.1 代数式化简

Mathmatuca具有强大的符号运算功能,不过很多时候其符号运算结果没有进行化简。

因而看起来与人工计算的结果不尽相同,但是Mathematica提供了两个化简函数,Simplify和FullSimplify,基本上可以满足要求键。

下面来看看这两个函数的用法:

ØSimplify[expr]:

应用代数或其它变换进行化简

ØFullSimplify[expr]:

应用更广泛的变换(包括初等函数在内的变换)进行化简。

例子

一般而言,后一个函数比前一个功能要强一些。

下面看几个例子。

例如对cos2x+sin2x化简:

In[1]:

=Simplify[Sin[x]^2+Cos[x]^2]

Out[1]=1

再看一个例子:

In[2:

];=Simplify[Cos[x]^2+2*Cos[x]*Sin[x]+Sin[x]^2]

Out[2]=

若对这个结果不满意,那么可以用另一个函数。

In[3:

];=FullSimplify[Cos[x]^2+2*Cos[x]*Sin[x]+Sin[x]^2]

Out[3]=1+Sin[2x]

结果只有一次幂项,是更理想的效果。

这两个函数还都可以进行附加条件的化简,比如下面的例子:

In[4:

];=Simplify[Sqrt[x^2]]

Out[4]=

Mathematica并没有直接输出x,事实上这里也的确不知道x的数据类型,不化简是正确的。

下面对它附加条件:

In[5:

];=Simplify[Sqrt[x^2],x<0]

Out[5]=-x

或者限定为实数:

In[6:

];=Simplify[Sqrt[x^2],xReals]

Out[6]=Abs[x]

这里属于符号是通过Mathematica自带的BasicMathInput包输入的,在Mathematica6.0中可以点击菜单中的Palettes,在其下拉菜单中选BasicMathInput就可调出这个基本输入工具栏。

※注:

在Mathematica5.0中也可以点击菜单中的Palettes,在其下拉菜单中选调出两个常用的基本输入工具栏:

4.BasicInput和5.BasicTypesetting

 

 

如果喜欢用键盘输入,那么上面的例子也可以是:

In[7:

];=Simplify[Sqrt[x^2],Element[x,Reals]]

Out[7]=Abs[x]

即用命令Element[x,Reals]表示x属于集合Reals。

●几种常用的集合类型

几种常用的集合类型见表4-2。

表4-2

输入

类型

举例

Complexs

复数集

2+I,5-3I

Reals

实数集

-10.33,22.19

Rationals

分数集

1/2,-7/8

Integer

整数集

4,6

Prime

质数集

2,3,5,7,9

Booleans

布尔代数集

True,False

※注:

虽然从数学上讲分数集就是有理数集,但在这里Rationals只是分数集,即小数形式的有理数并不属于Rationals。

比如:

例子

In[8:

];=Element[0.8,Rationals]

Out[8]=False

In[9:

];=Element[4/5,Rationals]

Out[9]=True

即有理数0.8不属于Rationals,但与之相等的分数4/5属于Rationals。

其它的集合都是常规定义。

在化简中,除了可以限定变量外,还可用不等式限定其范围。

例如:

In[10:

];=Plot[x^3-6*x+2,{x,-3,3}]

图4-6

Out[10]=Graphics

输出见图4-6。

In[11:

];=Simplify[Abs[x^3-6*x+2],-2

Out[11]=

In[12:

];=Simplify[Abs[x^3-6*x+2],-1

Out[12]=

由图4-6可知,多项式x3-6x+2在区间-2

还可以对特殊的函数进行化简:

In[13:

];=Simplify[Gamma[x]*Gamma[1-x]]

Out[13]=Gamma[1-x]Gamma[x]

In[14:

];=FullSimplify[%]

Out[14]=Csc[x]

符号%表示上一个运算结果,这里是指Out[13]=中的结果。

 

※查询:

In[15:

];=?

Gamma

其中,Gamma[x]为广义积分

,.即

函数。

 

4.2.2 代数式的展开与因式分解

中学已经讲述了代数式的展开与因式分解,这其中需要很多的技巧;现在只需要知道我们最后需要什么形式的结果,而中间的操作完全可以由Mathematica代劳。

将代数式展开与因式分解主要有这样两个函数。

ØExpand[expr]:

将表达式展开成包含正整数幂的项。

ØFactor[expr]:

对表达式进行因式分解就。

例子

看一个例子:

In[1]:

=Expand[(a+b)^3]

Out[1]=

In[2:

];=Factor[%]

Out[2]=

In[1]:

=对(a+b)3展开,而In[2]:

=将展开结果因式分解,得回原式。

再看几个展开的例子:

In[3:

];=

Out[3]=

In[4:

];=Expand[(x^s+y^s)^4]

Out[4]=

从Out[3]=中知,展开式中不一定要求是变量,也可以是函数式,而Out[4]=表示Expand将幂次是符号的表达式当作一个整体变量进行展开的结果。

Expand还可以对表达式中某些项保留不动,而展开其它因子,其命令格式如下:

ØExpand[expr,patt]:

展开expr,但保留patt的因式(或只对patt展开)。

例子

看个例子:

In[5:

];=Expand[(a+b)^2*(1+x)^2,x]

Out[5]=

In[6:

];=Expand[(1+x)^2+(2+x)^2,1+x]

Out[6]=

In[5:

];=中保留了x的因式不展开,或者说只对x展开,这里x的因式是(a+b)2。

In[6:

];=中保留了x+1的因式不展开,只对x+1展开,这里x+1的因式是(2+x)2。

不过Expand不对子表达式进行展开,要展开子表达式可用ExpandAll函数。

ØExpandAll[expr]:

对表达式的每部分包括子表达式全部展开。

例子

看看看看下面的例子,体会这两个命令的不同:

In[7:

];=Expand[Sqrt[(1+x)^2]]

Out[7]=

In[8:

];=ExpandAll[Sqrt[(1+x)^2]]

Out[8]=

对于有理分式而言,Expand只对分子展开,而分母不动,若想将整个分式完全展开则要用到Apart函数。

ØApart[expr]:

对有理分式展开成最简分式。

ØApart[expr,var]:

将var作为一个常数展开。

例子

看下面的例子:

In[9:

];=

Out[9]=

In[10:

];=

Out[10]=

In[9:

];=只对分子进行展开,而In[10:

];=则对分子、分母都展开。

还是上面的分式,分别将x和y视为常数展开:

In[11:

];=

Out[11]=

In[12:

];=

Out[12]=

体会这两个式子的不同。

再看几个因式分解的例子:

In[13:

];=Factor[x^3-6*x^2+11*x-6]

Out[13]=(-3+x)(-2+x)(-1+x)

In[14:

];=Factor[2*x^3*y-2*a^2*x*y-3*a^2*x^2+3*a^4]

Out[14]=

In[15:

];=Factor[(x^3+2*x^2)/(x^2-4*y^2)-(x+2)/(x^2-4*y^2)]

Out[15]=

In[13:

];=是对一元多项式进行分解,In[14:

];=则是对多项式进行分解。

In[15:

];=则是对有理分式进行分解,即将分子与分母都进行了分解。

Factor函数还可以对由初等函数组成的式子进行分解,比如:

In[16:

];=Factor[x^(2s)+2x^s+1]

Out[16]=

In[17:

];=Factor[x^(2/3*s)+2x^s+1]

Out[17]=

In[18:

];=Factor[Exp[2s]+2Exp[s]+1]

Out[18]=

In[19:

];=Factor[Sin[a]^2+2Sin[a]Cos[a]+Cos[a]^2]

Out[19]=

In[16:

];=与In[17:

];=是对幂函数进行因式分解,In[18:

];=是对指数函数进行因式分解,而In[19:

];=则是的三角函数进行因式分解,不过这里是将三角函数看成变量,而没有用到我们学习过的三角公式,Mathematica对三角函数可以进行特殊处理。

4.2.3 三角函数的处理 

中学已经讲过很多三角公式,比如积化和差、和差化积、倍角公式、半角公式等,要想将这些公式熟练运用并不是一件很容易的事,读入这些公式总体而言就是将三角函数进行展开、因式分解以及化简,不过由于三角函数有很多内在联系,因此做法也与我们前面讲过的略有不同。

Mathematica有下面几个函数对三角函数进行处理:

ØTrigExpand[expr]:

将三角函数表达式展开。

ØTrigFctor[expr]:

将三角函数表达式因式分解。

ØTrigReduce[expr]:

将相乘或成方的三角函数化成一次方的基本组合。

ØExpToTrig[expr]:

将指数函数化成三角函数或双曲函数。

ØTrigToExp[expr]:

将三角函数或双曲函数化成指数函数。

例子

我们还是通过一些例子来熟悉这些函数:

In[1]:

=TrigExpand[Sin[2x]]

Out[1]=2Cos[x]Sin[x]

In[2:

];=TrigExpand[Sin[x+y]]

Out[2]=Cos[y]Sin[x]+Cos[x]Sin[y]

与将三角函数进行展开,实际上这个函数也可以处理双曲函数:

In[3:

];=TrigExpand[Cosh[3t]]

Out[3]=

In[4:

];=TrigExpand[Tanh[x+y]]

Out[4]=

再看两个因式分解的例子:

In[5:

];=TrigFactor[Sin[x]^2+Tan[x]^2]

Out[5]=

In[6:

];=TrigFactor[Sin[x]+Cos[x]]

Out[6]=

※注:

在Mathematica5.0中Out[6]=的输出是:

Cos[x]+Sin[x],得不出结果。

这个函数也可以处理双曲函数:

In[7:

];=TrigFactor[Cosh[x]^2-Cosh[x]^4]

Out[7]=

再来看如何处理三角函数高次幂以及三角函数乘积:

In[8:

];=TrigReduce[2Cos[x]^2]

Out[8]=1+Cos[2x]

In[9:

];=TrigReduce[2Sin[x]Cos[y]]

Out[9]=Sin[x-y]+Sin[x+y]

In[8:

];=是利用TrigReduce将三角函数高次幂降到一次,In[9:

];=则将两个三角函数乘积展开成一次项的组合,这个函数也可以处理双曲函数。

In[10:

];=TrigReduce[2Sinh[u]Cosh[u]]

Out[10]=Cos[u-v]+Sinh[u+v]

※注:

在Mathematica5.0中Out[10]=的输出是:

Sinh[2u],得不出上述形式的结果,但两个结果是相同的。

In[010:

];=TrigReduce[2Sinh[u]Cosh[u]]

Out[010]=Sinh[2u]

数学上有一个欧拉公式:

这里

表示虚数单位。

利用它可以将指数函数转化成三角函数或双曲函数,反过来,当然也可以将三角函数或双曲函数转化成指数函数。

In[11:

];=TrigToExp[Cos[x]]

Out[11]=

In[12:

];=ExpToTrig[Exp[x]-Exp[-x]]

Out[12]=2Sinh[x]

※注:

欧拉公式:

 

4.2.4 多项式运算 

多项式运算是计算机代数的核心,在中学时我们就已经接触到两个多项式的加、减、乘、除运算以及诸如合并同类项、提取公因式等运算,这是一项非常辛苦繁琐的工作。

Mathematica提供了一系列有关这方面的命令,可以让Mathematica帮助解决这些问题。

●多项式的四则运算

多项式的四则运算与数值的四则运算类似,也是直接利用“+、—、*、/”运算符,其中乘号“*”也可以用空格代替,例如:

In[1]:

=p1=1+x;

p2=1+2x+x^2;

p1+p2

定义变量p1

定义变量p2

计算p1+2

Out[1]=

In[2:

];=p1-p2

Out[2]=

In[3:

];=p1*p2

Out[3]=

In[4:

];=p1/p2

Out[4]=

这里从In[3:

];=与In[4:

];=也可以看出,多项式的乘除并没有具体的操作,此时需要用到我们前面讲过的函数(比如Simplify)进行化简:

ØPolynomialGCD[p1,p2,…]:

求多项式p1,p2,…的最大公因式。

ØPolynomialLCM[p1,p2,…]:

求多项式p1,p2,…的最小公倍式。

ØPolynomialQuotient[p,q,x]:

变量为x,求多项式的商p/q。

ØPolynomialRemainder[p,q,x]:

变量为x,求p/q的余式。

例子

下面先看看如何求最大公因式与最小公倍式:

In[5:

];=Factor[x^3-y^3]

Out[5]=

In[6:

];=Factor[x^4-y^4]

Out[6]=

In[7:

];=PolynomialGCD[x^3-y^3,x^4-y^4]

Out[7]=x-y

In[8:

];=PolynomialLCM[x^3-y^3,x^4-y^4]

Out[8]=

In[9:

];=PolynomialGCD[x^2-y,x-y^2,x]

Out[9]=1

从Out[5]=和Out[6]=可以看出,多项式x3-y3与x4-y4有公因式x-y,Out[7]=也证明了这一点。

Out[8]=给出了这两个多项式的最小公倍式。

而Out[9]=表明,如果多项式没有最大公因式,则输出结果为1。

再来看看多项式的除法运算:

In[10:

];=PolynomialQuotient[x^2+x+1,2x+1,x]

Out[10]=

In[11:

];=PolynomialRemainder[x^2+x+1,2x+1,x]

Out[11]=

In[12:

];=PolynomialQuotient[x^2+b*x+1,a*x+1,x]

Out[12]=

In[13:

];=PolynomialRemainder[x^2+b*x+1,a*x+1,x]

Out[13]=

Out[10]=给出了多项式系数为数值时的商,Out[12]=则给出了多项式系数为参数时的商。

这两个函数进行有理分式除法。

In[14:

];=

Out[14]=

In[15:

];=

Out[15]=0

※注:

在Mathematica5.0中,得不出上述结果,操作如下:

多项式合并同类项的函数有以下3个:

ØCollect[expr,x]:

按x合并同类项,或将expr表示成x的多项式。

ØCollect[expr,{x1,x2,,…]:

按x1,x2,,…合并同类项。

ØCollect[expr,var,h]:

合并同类项后,再按h处理各项系数。

例子

看几个这方面的例子:

In[1]:

=Collect[a*x+b*y+c*x,x]

Out[1]=(a+c)x+by

In[2:

];=Collect[(1+a+x)^4,x]

Out[2]=

In[3:

];=Collect[(1+a+x)^4,x,Simplify]

Out[3]=

In[4:

];=Collect[(x+y+z+1)^4,{x,y},Simplify]

Out[4]=

In[1]:

=将含有x,y的二元多项式按x合并同类项,y被视为参数。

In[3]:

=则将多项式系数作化简处理。

In[4]:

=是一元多项式的例子。

Collect能够合并同类项,但不能提取公因子,提取公因子的函数有以下3个:

ØFactorTerms[poly]:

提取常数公因式。

ØFactorTerms[poly,x]:

提取不依赖于x的公因式。

ØFactorTerms[poly,{x1,x2,,…}]:

提取不依赖于x1,x2,,…的公因式

例子

还是举几个例子:

In[5:

];=FactorTerms[3+6x+3x^2]

Out[5]=

In[6:

];=FactorTerms[7x^2+7/12*x+3/4]

Out[6]=

In[7:

];=FactorTerms[(3+2x)(x+4y)^3,y]

Out[7]=

In[8:

];=Expand[(x+1)(y-2)(z+t)]

Out[8]=-2t-2tx+ty+txy-2z-2xz+yz+xyz

In[9:

];=FactorTerms[%,{x,y}]

Out[9]=(1+x)(-2+y)(t+z)

In[5:

];=与In[6:

];=在默认参数的情况下提取常数公因子,这里要注意的是提取的公因子是分数。

In[7:

];=则是提取不包含y项的公因子,In[8:

];=是先将一个包含x、y、z和t的四元多项式展开,然后在In[9:

];=提取不含x和y的公因子,由In[8:

];=中的表达式我们也知道公因子应为t+z,而提取Out[9]=的公因子也的确是t+z。

4.2.5 方程求根 

在Mathematica的语法中,用一个等号“=”表示对变量赋值,要区别方程中出现的等号,Mathematica采用双等号“==”代替,这是我们在输入方程时要注意的地方。

下面介绍两个求方程精确解的函数。

ØSolve[eqns,var]:

求一个或一组方程的精确解,其中var为变量

ØReduce[expr,var]:

求方程或不等式的精确解,其中var为变量。

例子

这两个函数都可以用于解方程,但略有区别。

Solve是将方程系数按照常规的约定处理,比如最高次幂系数不为0等;而Reduce则讨论系数可能出现的各种情形。

我们看一个例子来比较它们的区别:

In[1]:

=Solve[a*x+b

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1