189
数数数数数数 Mathematica 数数数数数

数学分析实验 - Mathematica 软件的应用

  • Upload
    halia

  • View
    239

  • Download
    1

Embed Size (px)

DESCRIPTION

数学分析实验 - Mathematica 软件的应用. 自然数的倒数组成的数列 称为调和数列。它的前 n 项和数列 记作 H ( n ) 。. 数学实验实例一. 调和数列研究. 1 、调和数列. 2 、提出问题: H ( n ) 是否收敛?. 我们借助于数学软件 Mathematica 对 H ( n ) 的收敛性进行观察。. Step1 定义前 n 项和 H ( n ) H[n_]:=Sum[1/k,{k,1,n}]. Step2 列出 H ( n ) 随 n 变化的数据表 - PowerPoint PPT Presentation

Citation preview

Page 1: 数学分析实验 -  Mathematica 软件的应用

数学分析实验- Mathematica 软件的应用

Page 2: 数学分析实验 -  Mathematica 软件的应用

数学实验实例一

1 、调和数列

自然数的倒数组成的数列

称为调和数列。它的前 n 项和数列 记作 H(n) 。

,1

,,3

1,

2

1,1

n

n

k k1

1

调和数列研究

Page 3: 数学分析实验 -  Mathematica 软件的应用

2 、提出问题: H(n) 是否收敛?

我们借助于数学软件 Mathematica 对 H(n) 的收敛性进行观察。

Step1 定义前 n 项和 H(n)

H[n_]:=Sum[1/k,{k,1,n}]

Step2 列出 H(n) 随 n 变化的数据表 t=Table[{n,N[H[n],6]},{n,1,100}]

Page 4: 数学分析实验 -  Mathematica 软件的应用

n H[n]

1 1.00000

2 1.50000

3 1.83333

4 2.08333

…… ……

99 5.17738

100 5.18738

1000 7.48547

10000 9.78761

1000000 14.39273

Page 5: 数学分析实验 -  Mathematica 软件的应用

Step3 根据数据表画出 H(n) 的图形 ph1=ListPlot[t]

20 40 60 80 100

2

3

4

5

Page 6: 数学分析实验 -  Mathematica 软件的应用

通过对所得图象的观察和分析,我们发现它很接近对数函数的图象。我们把它与对数函数 y=lnx 的图象一起比较一下。

Step4 与对数函数 y=lnx 作比较 ph2=Plot[Log[x],{x,1,100}]

Show[ph1,ph2]

Page 7: 数学分析实验 -  Mathematica 软件的应用

20 40 60 80 100

1

2

3

4

5

Page 8: 数学分析实验 -  Mathematica 软件的应用

根据图象比较的结果可以看出,当 n 很大时, H(n)

的图象与 ln(n) 的图象非常相似,但它们大致相差一个常数。这个常数约为 C=H(100)-ln100≈0.5822.

我们将 lnx 的图象向上平移 C 个单位后再进行观察。 c1=H[100]-Log[100] ph3=Plot[Log[x]+c1,{x,1,100}] Show[ph1,ph3]

Page 9: 数学分析实验 -  Mathematica 软件的应用

20 40 60 80 100

1

2

3

4

5

Page 10: 数学分析实验 -  Mathematica 软件的应用

猜测 1

调和数列的前 n 项和 H(n) 是发散数列,它的数值与 l

n(n)+C 很接近。

猜测 2

数列 H(n)- ln(n) 可能是收敛的。

Page 11: 数学分析实验 -  Mathematica 软件的应用

可以得到如下的数据表:

Step5 用计算数据作印证 对充分大的 n ,计算 H(n)-ln(n) 的值: t2=Table[N[{n,H[n],Log[n],H[n]-Log[n]},10],

{n,1000,10000,1000}]

Page 12: 数学分析实验 -  Mathematica 软件的应用

n H(n) ln(n) H(n)-ln(n)

1000 7.485470861 6.907755279 0.5777155816

2000 8.178368104 7.6009024595 0.5774656441

3000 8.583749890 8.006367568 0.5773823223

4000 8.871390300 8.2940496401 0.5773406597

5000 9.094508853 8.517193191 0.577315661

6000 9.276813744 8.699514748 0.5772989959

7000 9.430952520 8.853665428 0.5772870918

8000 9.564474984 8.9871968207 0.5772781636

9000 9.682251076 9.104979856 0.5772712194

10000 9.787606036 9.210340372 0.5772656641

Page 13: 数学分析实验 -  Mathematica 软件的应用

3 、研究数列 H(n)-ln(n) 的收敛性

Step1

令 C(n)=H(n)-ln(n) ,通过图象观察其特性: Cup[n_] :=H[n]-Log[n]

tup=Table[ {n, N[Cup[n],6]},{n,1,100}]

ph4=ListPlot[tup,PlotStyle->RGBColor[0,0,1]]

Step2

令 c(n)=H(n)-ln(n+1) ,通过图象观察其特性: Clow[n_] :=H[n]-Log[n+1]

tlow=Table[ {n, N[Clow[n],6]},{n,1,100}]

ph5=ListPlot[tlow,PlotStyle->RGBColor[1,0,0]]

Page 14: 数学分析实验 -  Mathematica 软件的应用

Step3

比较 C(n) 和 c(n) ,在同一坐标系中作出它们的图象。 Show[ph4,ph5]

20 40 60 80 100

0.52

0.54

0.56

0.58

0.62

Page 15: 数学分析实验 -  Mathematica 软件的应用

通过观察可知如下事实: 1 、 C(n) 是单调递减数列; 2 、 c(n) 是单调递增数列; 3 、 c(n) ≤ C(n) ; 4 、 c(n) , C(n) 都是收敛数列,而且它们有相同的极限。

Page 16: 数学分析实验 -  Mathematica 软件的应用

4 、结论与证明

结论:

极限 存在。)ln1

3

1

2

11(lim n

nn

把这个极限值记为 C , C ≈0.5772,称为欧拉( Euler )常数。

Page 17: 数学分析实验 -  Mathematica 软件的应用

数学实验工具 常见的数学工具软件: 1 、 Mathematica ; 2 、 Matlab ; 3 、 Maple ; 4 、 MathCad.

我们主要使用 Mathematica 这一数学工具软件。

Page 18: 数学分析实验 -  Mathematica 软件的应用

Mathematica 介绍 Mathematica 是一个功能强大的数学工具软件,具有数值计算、符号演算、图象制作、公式编辑和编程等各项功能。

1 、运行和退出 Mathematica 系统。

2 、界面介绍。

3 、输入和计算表达式。

4 、保存和打开文件。

5 、使用帮助系统。

Page 19: 数学分析实验 -  Mathematica 软件的应用

变量与函数一、 Mathematica 中的数据类型 Mathematica 系统中,数值分成四种类型:整数、

有理数、实数和复数。

整数型数据可以表示任意长度的精确整数,不受计算机字长的限制。 如: 264 ; 最大素数 21257787-1 等。

Page 20: 数学分析实验 -  Mathematica 软件的应用

有理型数据可以精确表示任意的既约分数,当两个整数相除而又不能整除时,就用有理数型表示。 如: 3/39.

实数型数据可以表示任意精度的近似实数。 如: Pi.

复数型数据可以表示复数,其实部和虚部可以是整数型、有理型或实数型。 如: I2 ; Arg[1+I].

Page 21: 数学分析实验 -  Mathematica 软件的应用

Integer 整数型 精确运算

Rational 有理数 ( 分数 ) 型 精确运算

Real ( 近似 ) 实数型 近似计算

Complex 复数型

Mathematica 中的数据类型

Page 22: 数学分析实验 -  Mathematica 软件的应用

二、系统中的数据常数

Pi 圆周率 π 3.14159…

E 自然对数的底 e 2.71828…

Degree 1o π /180

GoldenRatio 黄金分割比 1.618…

Infinity 无穷大 ∞

I 虚数单位 i 1

Page 23: 数学分析实验 -  Mathematica 软件的应用

三、函数与变量的命名规则

在 Mathematica 系统中,变量名和函数名遵从如下命名规则: ( 1 ) 以字母开头的任意长度的字符或数字串; ( 2 ) 区分大小写; ( 3 ) 为与系统函数相区别,通常以小写字母开头; ( 4 ) 函数的形式为 f[x].

Page 24: 数学分析实验 -  Mathematica 软件的应用

四、变量赋值与变量替换

举例如下: x=5; ( 赋值) x=. (取消赋值) /. x ->3 (变量替换,计算时用 3暂时替换 x 的值) Clear[x] (清除 x 的定义及其赋值)

Page 25: 数学分析实验 -  Mathematica 软件的应用

五、四则运算

运算 表达式 运算符 举例

加 Plus + a+b

减 Minus - a-b

乘 Times * a*b

除 Divide / a/b

乘方 Power ^ a^3

优先级:乘方 >乘除 >加减;同级运算从左到右;乘方运算从右到左。

Page 26: 数学分析实验 -  Mathematica 软件的应用

六、初等函数函数名称 函数表达式

对数 Log[x], Log[a,x]

指数 Exp[x]

开平方 Sqrt[x]

三角函数 Sin[x] Cos[x] Tan[x]Cot[x] Sec[x] Csc[x]

反三角函数 ArcSin[x] ArcCos[x] ArcTan[x]ArcCot[x] ArcSec[x] ArcCsc[x]

双曲函数 Sinh[x] Cosh[x] Tanh[x]Coth[x] Sech[x] Csch[x]

反双曲函数 ArcSinh[x] ArcCosh[x] ArcTanh[x]ArcCoth[x] ArcSech[x] ArcCsch[x]

Page 27: 数学分析实验 -  Mathematica 软件的应用

例 1 完成下列初等函数运算

1 、

2 、求 在 x=3处的值,保留 20 位有效数字。

);5

tan5

sin(

2

2

2

1 x

e

相应的命令如下: N[Sin[Pi/5+Tan[Pi/5]]]

a1=Sin[x+Tan[x]]/.x->Pi/5

N[a1,10]

t=Exp[-x^2/2]/Sqrt[2 Pi]

N[t/.x->3,20]

Page 28: 数学分析实验 -  Mathematica 软件的应用

七、自定义函数

格式 意义f[x_]:=… 定义一元函数 f(x)

f[x_,y_]:=… 定义二元函数 f(x,y)

f[x_,y_,…]:=…

定义多元函数 f(x,y,…)

Clear[f] 取消对 f 的定义

(1) 出现在 f[x_] 中的 x 是一类实体,用来表示函数定义中的变量。 x_ 可以用任何形式的参数来替代,右端定义式中的 x 将会随之变化。看下面的例子:

Page 29: 数学分析实验 -  Mathematica 软件的应用

f[x_]:=2x-1

g[x]:=2x-1

f[10]

f[x]

f[Log[y]]

g[10]+g[x]+g[y]

f[10]+f[x]+f[y]

从这些例子中可以看出两者之间的差别。

Page 30: 数学分析实验 -  Mathematica 软件的应用

(2) 如果在定义函数时需要用几个命令才能完成,可以将几个命令依次排列,命令之间用分号分隔,用圆括号把首尾命令括起来。例如: h[x_]:=(y=Max[x];z=Min[x];y^2-z^2)

a={1,2,4,6,8}

h[a]

更恰当的方法是用模块形式来定义:其格式是: Module[{局部变量 }, 函数表达式 ]

例如:上面的例子可以改写为: hh[x_]:=Module[{y,z}, y=Max[x];z=Min[x];y^2-z^2]

a={1,2,4,6,8}

hh[a]

Page 31: 数学分析实验 -  Mathematica 软件的应用

例 2 设 ,其中 a, k 是参数 . 当 时,

(1) 作出 f(x) 在 x=0, 0.5, 1, 1.5, 2, 2.5, 3 处的数据表 .

(2) 画出函数 f(x) 的图形 .

22

)( xkaexf 2

1,

2

1 ka

g[x_,a_,k_]:=a Exp[-k^2 x^2]

a=1/Sqrt[2 Pi]; k=1/2

Table[g[x,a,k],{x,0,3,0.5}]

Plot[g[x,a,k],{x,-4,4}]

Page 32: 数学分析实验 -  Mathematica 软件的应用

数学常数 e 的探讨 编制一个对数表,使任意给出的 N 都能简便地求出其对数值 log a N . 借助于乘方运算容易得到如下对数表:

N 1 a a2 a3 … ak …

b 0 1 2 3 … k …

N 1 10 100 1000 … 10k …

b 0 1 2 3 … k …

当 a =10 时,得到下表:

Page 33: 数学分析实验 -  Mathematica 软件的应用

问题 1 怎样选择 a 的值才能使 N 的取值间隔很小?

由于 N=a b , a 的取值越接近于 1 , N 的间隔就越小。例如,取 a =1.0001 ,可以作出下面的对数表:

NBase[r_,b_]:=(1+r)^b

Table[{NBase[0.0001,b],b},{b,0,100,10}]

Table[{NBase[0.0001,b],b},{b,100,1000,100}]

Table[{NBase[0.0001,b],b},{b,1000,10000,1000}]

Table[{NBase[0.0001,b],b},{b,10000,100000,10000}]

相应的对数表可以从Mathematica 中得出。

Page 34: 数学分析实验 -  Mathematica 软件的应用

问题 2 如何解决 b 过大的问题?

由于 r 是一个已知的非常小的正数,取 b*=r b , b

* 的值就比较合适。N 1 (1+r)1 (1+r)2 (1+r)3 … (1+r)k …

b* 0 r 2r 3r … kr …

由于对给定的 N ,

b* 实际上是以 为底的对数。当 r→0 时, a→e.

从而得到以 e 为底的对数 ln N 。

*1

])1[()1( brbb rraN

rra1

)1(

Page 35: 数学分析实验 -  Mathematica 软件的应用

连续利率与 e 一位顾客在银行开设了一个 1000元的存款帐户,银行每年支付 10% 的利息。用 an 表示 n 年后帐户中的存款总额。于是

其中 a0=1000 表示开户时的存款。

0)1( ara nn

若银行改为每月结算一次利息,每月利率为 r/12 ,n年后的本息之和为:

若每天结算一次利息, n年后的本息之和为:

.)12

1( 012 a

ra nn

.)365

1( 0365 a

ra nn

Page 36: 数学分析实验 -  Mathematica 软件的应用

一般地,设银行每年结算 m次利息,则 n年之后的本息之和为

.)1( 0am

ra mnn

数学探讨

设 r 为年利率,银行每年结算 m次利息,每个结算周期的利率为 r/m , n年后的存款总额为:

用 Mathematica 作如下的计算:

.)1()( 0mn

n m

ramb

Page 37: 数学分析实验 -  Mathematica 软件的应用

每年结算一次: a0=1;r=0.10;n=10;

b[m_,n_,r_]:=a0(1+r/m)^(m n)

b[1,n,r]

每月结算一次: b[12,n,r]

每天结算一次: b[365,n,r]

每秒钟结算一次: b[365*24*3600,n,r]

2.59374

2.70704

2.71791

2.71828

Page 38: 数学分析实验 -  Mathematica 软件的应用

从计算结果可以看出,随着结算次数的增加, 1元存款 10年后的存款总额越来越接近 e. 事实上,这是因为:

.)10

11(lim)(lim 10

10 em

mb m

mm

对一般情况,有:

.)1(lim)(lim 00rnmn

mn

mea

m

ramb

结论: 连续结算方式下 n年后的存款额计算公式为 :

.0rn

n eab

Page 39: 数学分析实验 -  Mathematica 软件的应用

1.3 分段函数Mathematica 的常用函数

N[x,n] Abs[x]

Sign[x] Round[x]

Floor[x] Ceiling[x]

Max[x1,x2,……] Min[x1,x2,……]

Re[z] Im[z]

Conjugate[z] Arg[z]

Mod[m,n] Quotient[m,n]

n! n!!

Binomial[n,m]

Page 40: 数学分析实验 -  Mathematica 软件的应用

例 1 观察取整函数 Round, Floor, Ceiling 的用法。

Print[Round[1.4],Floor[1.4],Ceiling[1.4]]

Print[Round[-1.4],Floor[-1.4],Ceiling[-1.4]]

Print[Round[1.5],Floor[1.5],Ceiling[1.5]]

Print[Round[-1.5],Floor[-1.5],Ceiling[-1.5]]

例 2 观察符号函数 Sign及Max, Min 对函数的影响。

Plot[Sign[Cos[x]], {x,-2Pi,2Pi}]

Plot[Max[Sin[x],Cos[x]], {x,-2Pi,2Pi}]

Plot[Min[Sin[x],Cos[x]], {x,-2Pi,2Pi}]

Page 41: 数学分析实验 -  Mathematica 软件的应用

用递归方法定义函数 Mathematica 中可以利用递归方式定义函数。例如,定义求阶乘的函数:

fac[0]=1

fac[n_]:=n fac[n-1]

求前 n 个自然数的和: he[1]=1

he[n_]:=n+he[n-1]

注意: n应该是整数,否则出现无限循环。 系统默认的循环次数为 256次。可设置系统 变量 $RecursionLimit 的值修改这个缺省值。

Page 42: 数学分析实验 -  Mathematica 软件的应用

定义分段函数

1 、使用约束条件控制定义范围

y1[x_]:=3-Sqrt[-x]/;x<0

y1[x_]:=x^2

例 3 定义分段函数

0,

0,32 xx

xxy

Page 43: 数学分析实验 -  Mathematica 软件的应用

2 、使用 If 条件语句定义分段函数

格式 意义

If[条件 , t, f] 当条件成立时,执行命令 t; 当条件不成立时,执行命令 f 。

If[条件 , t, f, u] 当条件成立时,执行命令 t; 当条件不成立时,执行命令 f ;无法判断时,执行命令 u 。

y2[x_]:=If[x<0,3-Sqrt[-x],x^2,100]

Page 44: 数学分析实验 -  Mathematica 软件的应用

3 、使用 Which条件语句定义分段函数

格式 意义

Which[条件 1, t1, 条件 2, t2, ……]

按照顺序依次检查所列条件,当首次遇到条件 n 成立时,执行命令 t n.

如: Which[x==2,1,x>3,3,True,0]

Page 45: 数学分析实验 -  Mathematica 软件的应用

例 3 定义分段函数

3,0

32,3

21,1

10,

0,02

x

xx

x

xx

x

y

y[x_]:=Which[x<=0,0,x<=1,x^2,x<=2,1,x<=3,3-

x,True,0]

Page 46: 数学分析实验 -  Mathematica 软件的应用

4 、关系判别和逻辑表达式

关系表达式 意义

x==y 等于

x!=y 不等于

x>y 大于

x<y 小于

x>=y 大于等于

x<=y 小于等于

Page 47: 数学分析实验 -  Mathematica 软件的应用

基本逻辑运算符有 :

逻辑运算符 意义 举例! 逻辑非 !(x>5)

&& 逻辑与 x!=0&&y>3

|| 逻辑或 x==0||y==0

Xor 异或 Xor[x==0,y==0]

Implies 蕴涵 Implies[x>3,x>2]

Implies[p,q] 等价于 !p||q.

Page 48: 数学分析实验 -  Mathematica 软件的应用

个人所得税的纳税问题

1 、实际背景

税法规定:公民的个人工资、薪金应依法纳税。所得税的计算办法为:在每个人的月收入中超过 800元以上的部分应该纳税。应纳税款实行分段累积税率,按下列税率表计算:

Page 49: 数学分析实验 -  Mathematica 软件的应用

级数 全月应纳税所得额 税率( % )

1 不超过 500元的部分 5

2 超过 500元,不到 2000元的部分 10

3 超过 2000元,不到 5000元的部分 15

4 超过 5000元,不到 20000元的部分

20

5 超过 20000元,不到 40000元的部分

25

6 超过 40000元,不到 60000元的部分

30

7 超过 60000元,不到 80000元的部分

35

8 超过 80000元,不到 100000元的部分

40

9 超过 100000 的部分 45

若某人的月工资收入为 x ,请列出他应交纳的税款 y

与 x之间的函数关系。

Page 50: 数学分析实验 -  Mathematica 软件的应用

2 、数学推导

(1)按税法规定,当 x≤800元时,不必纳税 . y=0 ;(2)当 800<x≤1300元时,纳税部分是 x-800. y=5%(x-800) ;(3)当 1300<x≤2800元时, y=25+10%(x-1300) ;(4)以此类推,可以得出如下的纳税计算公式:

Page 51: 数学分析实验 -  Mathematica 软件的应用

月收入 应纳税款0 ≤x≤800 0

800<x≤1300 (x-800)*5%

1300<x≤2800 25+(x-1300)*10%

2800<x≤5800 25+150+(x-2800)*15%

5800<x≤20800 175+450+(x-5800)*20%

20800<x≤40800 625+3000+(x-20800)*25%

40800<x≤60800 3625+5000+(x-40800)*30%

60800<x≤80800 8625+6000+(x-60800)*35%

80800<x≤100800 14625+7000+(x-80800)*40%

x>100800 21625+8000+(x-100800)*45%

Page 52: 数学分析实验 -  Mathematica 软件的应用

3 、计算程序

Shui1[x_]:=Which[0<x<=800,0,

800<x<=1300,0.05*(x-800),

1300<x<=2800,0.10*(x-1300)+25,

2800<x<=5800,0.15*(x-2800)+175,

5800<x<=20800,0.20*(x-5800)+625,

20800<x<=40800,0.25*(x-20800)+3625,

40800<x<=60800,0.30*(x-40800)+8625,

60800<x<=80800,0.35*(x-60800)+14625,

80800<x<=100800,0.40*(x-80800)+21625,

True,0.45*(x-100800)+29625]

Page 53: 数学分析实验 -  Mathematica 软件的应用

也可使用递归方法定义:

Shui2[x_]:=Which[0<x<=800,0,

800<x<=1300,0.05*(x-800),

1300<x<=2800,0.10*(x-1300)+Shui2[1300],

2800<x<=5800,0.15*(x-2800)+Shui2[2800],

5800<x<=20800,0.20*(x-5800)+Shui2[5800],

20800<x<=40800,0.25*(x-20800)+Shui2[20800],

40800<x<=60800,0.30*(x-40800)+Shui2[40800],

60800<x<=80800,0.35*(x-60800)+Shui2[60800],

80800<x<=100800,0.40*(x-80800)+Shui2[80800],

True,0.45*(x-100800)+ Shui2[100800]]

Page 54: 数学分析实验 -  Mathematica 软件的应用

我们也可以作出分段税率的图象:

20000 40000 60000 80000 100000 120000

0.1

0.2

0.3

0.4

0.5

x

问题 1 在分段税率图中,怎样表现出应纳税的数额?

Page 55: 数学分析实验 -  Mathematica 软件的应用

问题 2

怎样计算图形中所示的面积?

Page 56: 数学分析实验 -  Mathematica 软件的应用

20000 40000 60000 80000 100000 120000

0.1

0.2

0.3

0.4

xx

Page 57: 数学分析实验 -  Mathematica 软件的应用

20000 40000 60000 80000 100000 120000

0.1

0.2

0.3

0.4

xx

Page 58: 数学分析实验 -  Mathematica 软件的应用

y=0.05×(max{x-800,0}+max{x-1300,0}

+max{x-2800,0}+max{x-5800,0}+max{x-20800,0}

+max{x-40800,0}+max{x-60800,0}+max{x-80800,0}

+max{x-100800,0})

Mathematica 中相应的命令是:Shui3[x_]:=0.05*(Max[x-800,0]+Max[x-1300,0]+Max[x-28

00,0]+Max[x-5800,0]+Max[x-20800,0]+Max[x-40800,0]+M

ax[x-60800,0]+Max[x-80800,0]+Max[x-100800,0])

把图示面积分成若干水平排列的矩形条,第一条的高度都是 5% ,宽度恰好是月收入 x 与各税率段的起点之差。于是可得纳税额的另一计算公式:

Page 59: 数学分析实验 -  Mathematica 软件的应用

1.4 一元函数的图形Plot 函数的使用方法

格式 意义Plot[f,{x,a,b},选择项 ]

按选择项中指定(或缺省)的格式画出 f(x) 在区间 [a,b] 上的图形。

如: Plot[Tan[x],{x,-2Pi,2Pi}]

Plot[Tan[x],{x,-2Pi,2Pi},PlotRange->{-10,10}]

Page 60: 数学分析实验 -  Mathematica 软件的应用

作图原理

以给定的表达式作为计算对象,根据给定的取值范围选取自变量的样点数,再计算出相应的函数值,得到函数图象的一组型值点。型值点的个数可以通过选择项( P

lotPoints ) 进行调整。 根据型值点数据构造出图形的基本要素,进而形成函数曲线的一个图形表达式,表示为 Graphics 。最后调用系统内部定义的显示程序 ($DisplayFunction) 把图形表达式投射到计算机屏幕上。

可以使用 InputForm 函数了解作图过程的细节。 InputForm[Plot[Tan[x],{x,-2Pi,2Pi},PlotRange->{-10,1

0}]

Page 61: 数学分析实验 -  Mathematica 软件的应用

画多个函数的图形

格式 意义

Plot[{f1,f2,…},{x,a,b},选择项 ]

按选择项中指定(或缺省)的格式画出 f1(x), f2(x),… 在区间 [a,b]上的图形。

如: Plot[{Sin[x],Cos[x]},{x,-2Pi,2Pi}]

Page 62: 数学分析实验 -  Mathematica 软件的应用

使用选择项对图形进行修饰 Mathematica 绘图时允许使用选择项对绘制的图形细节提出各种要求和设置。如:指定原点位置、不画坐标轴,指定颜色等等。每个选择项有一个确定的名称,以“选择项名 ->选择项值”的形式放在 Plot 中最后边的位置。修饰曲线的样式 (第一类选择项 )选择项名称 意义

PlotStyle->…指定曲线的外观:颜色、线形、线宽等。

Page 63: 数学分析实验 -  Mathematica 软件的应用

选择项 意义 格式RGBColor 指定颜色 RGBColor[r,g,b]

GrayLevel 指定灰度 GrayLevel[g]

Thickness 指定线宽 Thickness[width]

Dashing 指定线形 Dashing[{ 实线长度 , 虚线长度 }]

用法说明

如: Plot[Sin[x],{x,-Pi,Pi},PlotStyle->

{Thickness[0.01],RGBColor[1.000,0,0.502],Dashing[{0.03,

0.02}]}]

Page 64: 数学分析实验 -  Mathematica 软件的应用

选择项 意义Background-> GrayLevel[0.3]

指定背景颜色

GridLines-> Automatic

指定是否画网格线,默认为 None

PlotRange-> {a,b} 确定所画 y 的范围为 [a,b]

AspectRatio->1.3确定图的纵横比,默认值为 Golde

nRatio

PlotLabel->”xxxx”

设定图的标题为 xxxx

修饰整幅图的外观 (第二类选择项 )

Page 65: 数学分析实验 -  Mathematica 软件的应用

例如: Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Gr

idLines->Automatic,Background-> RGBColor[1,1,0]]

Plot[Tan[x],{x,-2Pi,2Pi},PlotStyle-> RGBColor[0,0,1],

PlotRange->{0,5},AspectRatio-> 1/2,PlotLabel->"y=tan

x"]

Page 66: 数学分析实验 -  Mathematica 软件的应用

选择项 意义

Axes->False指定是否画坐标轴,默认为 Tru

e

AxesLabel->{xx,yy} 指定坐标轴的名称Ticks->{-3,-1.5,1.5,3}

Ticks-> {{1,2,3},{1,2,3}}

指定两坐标轴上刻度的位置,默认值为 Automatic

Frame->True 在图形周围是否加框FrameLabel-

>"xxxx"设定框的周围是否加标志,默认

为 None

对坐标轴外观进行修饰 (第二类选择项 )

Page 67: 数学分析实验 -  Mathematica 软件的应用

例如: Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Ax

es->None,Frame->True]

Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Ba

ckground-> RGBColor[1,1,0],AxesLabel->{"x", "sin(x)

"}]

Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Bac

kground->RGBColor[1,1,0],Ticks-> {{-3,-1.5,0,1.5,3},{-1,0,

1}}]

Page 68: 数学分析实验 -  Mathematica 软件的应用

Show 函数格式 意义

Show[ 图 1, 图 2,…,选择项 ]

再现已做好的图形 ( 可以使用第二类选择项)

例如: g1=Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],

GridLines->Automatic,Background-> RGBColor[1,1,0]]

Show[g1,AspectRatio->Automatic]

Show[g1,Axes->{True,False},GridLines->None]

ph1=Plot[Sin[x],{x,-2Pi,2Pi}]

ph2=Plot[Tan[x],{x,-2Pi,2Pi}]

Show[ph1,ph2,PlotRange->{-3,3}]

Page 69: 数学分析实验 -  Mathematica 软件的应用

用用 ParametricPlot ParametricPlot 函数作参数方程的图形函数作参数方程的图形

格式 意义

ParametricPlot[{x,y},{t,t0,t1},选择项 ]

作由参数方程 x=x(t),y=y(t)所确定的函数在区间 [t0,t1] 上的图象

ParametricPlot[{{x1,y1},{x2,y2},…},{t,t0,t1},选择项 ]

作由多个参数方程 x=x1(t),y=y1(t);x=x2(t),y=y2(t);… 所确定的若干个函数在区间 [t0,t1] 上的图象

Page 70: 数学分析实验 -  Mathematica 软件的应用

例如: ParametricPlot[{Cos[x],Sin[x]},{x,-Pi,Pi},PlotStyle->

RGBColor[0,0,1],Background-> RGBColor[1,1,0],Aspect

Ratio->1,Axes->None]

a=Input["Input a real number:"]

b=Input["Input a real number:"]

ParametricPlot[{Sin[a t],Cos[b t]},{t,0,2Pi},PlotStyle-

> RGBColor[0,1,0],AspectRatio->Automatic]

ParametricPlot[{{Sin[t],Cos[t]},{1.5t,t^2}}, {t,-Pi,Pi},

PlotStyle->RGBColor[0,1,0],AspectRatio-> Automatic]

Page 71: 数学分析实验 -  Mathematica 软件的应用

用用 ListPlot ListPlot 函数作图函数作图

表达式格式 意义ListPlot[{y1,y2,…}, 选择项 ]

画出 y1,y2,… 各点的图形,相应的 x值为 1,2,…

ListPlot[{{x1,y1}, {x2,y2},…},选择项 ]

画出 (x1,y1),(x2,y2),… 各点的图形

选择项格式 意义PlotStyle-> PointSize[0.01]

设定散点图中每个人点的大小

PlotJoined->True 是否连接各个型值点构成折线图

Page 72: 数学分析实验 -  Mathematica 软件的应用

例如: t1=Table[{x,x^3},{x,-3,3,0.2}]

ListPlot[t1,PlotStyle->RGBColor[0,0,1]]

ListPlot[t1,PlotStyle-> {RGBColor[0,0,1],PointSize[0.0

15]},PlotJoined-> True,AspectRatio->1]

Page 73: 数学分析实验 -  Mathematica 软件的应用

函数图象的观察

绘制幂函数 y=x, y=x3, y=x6, y=x30 在区间 [0,2] 上的图形 .

P[x_,p_]:=x^p

Plot[{P[x,1],P[x,3],P[x,6],P[x,30]},{x,0,2},PlotRange-

>{0,2},

AspectRatio->0.8,PlotLabel->"n=1, 3, 6, 30",PlotStyle->

{RGBColor[1,0,0], RGBColor[1,0.502,0],

RGBColor[0,1,1], RGBColor[0,1,0]}]

Page 74: 数学分析实验 -  Mathematica 软件的应用

0.5 1 1.5 2

0.25

0.5

0.75

1

1.25

1.5

1.75

2n1, 3, 6, 30

Page 75: 数学分析实验 -  Mathematica 软件的应用

比较函数 f(x)=x,g(x)=x+x3, h(x)=x3 在 x→0 时函数的性态 .

Plot[{x,x+x^3,x^3},{x,0,0.5}, AspectRatio->Automatic,

PlotStyle->{RGBColor[1,0,0], RGBColor[0,1,0],

RGBColor[0,0,1]}]

Page 76: 数学分析实验 -  Mathematica 软件的应用

0.1 0.2 0.3 0.4 0.5

0.1

0.2

0.3

0.4

0.5

0.6

Page 77: 数学分析实验 -  Mathematica 软件的应用

比较函数 f(x)=x,g(x)=x+x3, h(x)=x3 在 x→∞ 时函数的性态 .

Plot[{x,x+x^3,x^3},{x,10,100}, PlotStyle->

{RGBColor[1,0,0], RGBColor[0,1,0], RGBColor[0,0,1]}]

Page 78: 数学分析实验 -  Mathematica 软件的应用

20 40 60 80 100

200000

400000

600000

800000

1106

Page 79: 数学分析实验 -  Mathematica 软件的应用

pdata1=Table[p,{p,-5,-1,0.5}]

pdata2=Table[p,{p,-1,0,0.1}]

pdata3=Table[p,{p,0,1,0.1}]

pdata4=Table[p,{p,1,5,0.5}]

pdata=Join[pdata1,pdata2,pdata3,pdata4];

Do[Plot[{x,1,x^pdata[[p]]},{x,0,2},PlotRange->

{0,3},PlotLabel->"p="<>ToString[pdata[[p]]],PlotStyle->

{RGBColor[1,0,0],RGBColor[0,1,0],RGBColor[0,0,1]}],

{p,1,Length[pdata]}]

观察 p连续变化时,幂函数图象的变化 .

Page 80: 数学分析实验 -  Mathematica 软件的应用

幂函数与指数函数、对数函数的比较 .

Plot[{x^10,1.1^x},{x,0,800}, PlotRange->{0,10^29},

PlotStyle->{RGBColor[1,0,0], RGBColor[0,0,1]}]

Plot[{x^0.3,100 Log[10,x]},{x,0,5*10^7}, PlotStyle->

{RGBColor[1,0,0], RGBColor[0,0,1]}]

Page 81: 数学分析实验 -  Mathematica 软件的应用

1107

2107

3107

4107

5107

200

400

600

Page 82: 数学分析实验 -  Mathematica 软件的应用

11010 21010 31010 41010 51010

250

500

750

1000

1250

1500

Page 83: 数学分析实验 -  Mathematica 软件的应用

1.3 分段函数Mathematica 的常用函数

N[x,n] Abs[x]

Sign[x] Round[x]

Floor[x] Ceiling[x]

Max[x1,x2,……] Min[x1,x2,……]

Re[z] Im[z]

Conjugate[z] Arg[z]

Mod[m,n] Quotient[m,n]

n! n!!

Binomial[n,m]

Page 84: 数学分析实验 -  Mathematica 软件的应用

例 1 观察取整函数 Round, Floor, Ceiling 的用法。

Print[Round[1.4],Floor[1.4],Ceiling[1.4]]

Print[Round[-1.4],Floor[-1.4],Ceiling[-1.4]]

Print[Round[1.5],Floor[1.5],Ceiling[1.5]]

Print[Round[-1.5],Floor[-1.5],Ceiling[-1.5]]

例 2 观察符号函数 Sign及Max, Min 对函数的影响。

Plot[Sign[Cos[x]], {x,-2Pi,2Pi}]

Plot[Max[Sin[x],Cos[x]], {x,-2Pi,2Pi}]

Plot[Min[Sin[x],Cos[x]], {x,-2Pi,2Pi}]

Page 85: 数学分析实验 -  Mathematica 软件的应用

用递归方法定义函数 Mathematica 中可以利用递归方式定义函数。例如,定义求阶乘的函数:

fac[0]=1

fac[n_]:=n fac[n-1]

求前 n 个自然数的和: he[1]=1

he[n_]:=n+he[n-1]

注意: n应该是整数,否则出现无限循环。 系统默认的循环次数为 256次。可设置系统 变量 $RecursionLimit 的值修改这个缺省值。

Page 86: 数学分析实验 -  Mathematica 软件的应用

定义分段函数

1 、使用约束条件控制定义范围

y1[x_]:=3-Sqrt[-x]/;x<0

y1[x_]:=x^2

例 3 定义分段函数

0,

0,32 xx

xxy

Page 87: 数学分析实验 -  Mathematica 软件的应用

2 、使用 If 条件语句定义分段函数

格式 意义

If[条件 , t, f] 当条件成立时,执行命令 t; 当条件不成立时,执行命令 f 。

If[条件 , t, f, u] 当条件成立时,执行命令 t; 当条件不成立时,执行命令 f ;无法判断时,执行命令 u 。

y2[x_]:=If[x<0,3-Sqrt[-x],x^2,100]

Page 88: 数学分析实验 -  Mathematica 软件的应用

3 、使用 Which条件语句定义分段函数

格式 意义

Which[条件 1, t1, 条件 2, t2, ……]

按照顺序依次检查所列条件,当首次遇到条件 n 成立时,执行命令 t n.

如: Which[x==2,1,x>3,3,True,0]

Page 89: 数学分析实验 -  Mathematica 软件的应用

例 3 定义分段函数

3,0

32,3

21,1

10,

0,02

x

xx

x

xx

x

y

y[x_]:=Which[x<=0,0,x<=1,x^2,x<=2,1,x<=3,3-

x,True,0]

Page 90: 数学分析实验 -  Mathematica 软件的应用

4 、关系判别和逻辑表达式

关系表达式 意义

x==y 等于

x!=y 不等于

x>y 大于

x<y 小于

x>=y 大于等于

x<=y 小于等于

Page 91: 数学分析实验 -  Mathematica 软件的应用

基本逻辑运算符有 :

逻辑运算符 意义 举例! 逻辑非 !(x>5)

&& 逻辑与 x!=0&&y>3

|| 逻辑或 x==0||y==0

Xor 异或 Xor[x==0,y==0]

Implies 蕴涵 Implies[x>3,x>2]

Implies[p,q] 等价于 !p||q.

Page 92: 数学分析实验 -  Mathematica 软件的应用

个人所得税的纳税问题

1 、实际背景

税法规定:公民的个人工资、薪金应依法纳税。所得税的计算办法为:在每个人的月收入中超过 800元以上的部分应该纳税。应纳税款实行分段累积税率,按下列税率表计算:

Page 93: 数学分析实验 -  Mathematica 软件的应用

级数 全月应纳税所得额 税率( % )

1 不超过 500元的部分 5

2 超过 500元,不到 2000元的部分 10

3 超过 2000元,不到 5000元的部分 15

4 超过 5000元,不到 20000元的部分

20

5 超过 20000元,不到 40000元的部分

25

6 超过 40000元,不到 60000元的部分

30

7 超过 60000元,不到 80000元的部分

35

8 超过 80000元,不到 100000元的部分

40

9 超过 100000 的部分 45

若某人的月工资收入为 x ,请列出他应交纳的税款 y

与 x之间的函数关系。

Page 94: 数学分析实验 -  Mathematica 软件的应用

2 、数学推导

(1)按税法规定,当 x≤800元时,不必纳税 . y=0 ;(2)当 800<x≤1300元时,纳税部分是 x-800. y=5%(x-800) ;(3)当 1300<x≤2800元时, y=25+10%(x-1300) ;(4)以此类推,可以得出如下的纳税计算公式:

Page 95: 数学分析实验 -  Mathematica 软件的应用

月收入 应纳税款0 ≤x≤800 0

800<x≤1300 (x-800)*5%

1300<x≤2800 25+(x-1300)*10%

2800<x≤5800 25+150+(x-2800)*15%

5800<x≤20800 175+450+(x-5800)*20%

20800<x≤40800 625+3000+(x-20800)*25%

40800<x≤60800 3625+5000+(x-40800)*30%

60800<x≤80800 8625+6000+(x-60800)*35%

80800<x≤100800 14625+7000+(x-80800)*40%

x>100800 21625+8000+(x-100800)*45%

Page 96: 数学分析实验 -  Mathematica 软件的应用

3 、计算程序

Shui1[x_]:=Which[0<x<=800,0,

800<x<=1300,0.05*(x-800),

1300<x<=2800,0.10*(x-1300)+25,

2800<x<=5800,0.15*(x-2800)+175,

5800<x<=20800,0.20*(x-5800)+625,

20800<x<=40800,0.25*(x-20800)+3625,

40800<x<=60800,0.30*(x-40800)+8625,

60800<x<=80800,0.35*(x-60800)+14625,

80800<x<=100800,0.40*(x-80800)+21625,

True,0.45*(x-100800)+29625]

Page 97: 数学分析实验 -  Mathematica 软件的应用

也可使用递归方法定义:

Shui2[x_]:=Which[0<x<=800,0,

800<x<=1300,0.05*(x-800),

1300<x<=2800,0.10*(x-1300)+Shui2[1300],

2800<x<=5800,0.15*(x-2800)+Shui2[2800],

5800<x<=20800,0.20*(x-5800)+Shui2[5800],

20800<x<=40800,0.25*(x-20800)+Shui2[20800],

40800<x<=60800,0.30*(x-40800)+Shui2[40800],

60800<x<=80800,0.35*(x-60800)+Shui2[60800],

80800<x<=100800,0.40*(x-80800)+Shui2[80800],

True,0.45*(x-100800)+ Shui2[100800]]

Page 98: 数学分析实验 -  Mathematica 软件的应用

我们也可以作出分段税率的图象:

20000 40000 60000 80000 100000 120000

0.1

0.2

0.3

0.4

0.5

x

问题 1 在分段税率图中,怎样表现出应纳税的数额?

Page 99: 数学分析实验 -  Mathematica 软件的应用

问题 2

怎样计算图形中所示的面积?

Page 100: 数学分析实验 -  Mathematica 软件的应用

20000 40000 60000 80000 100000 120000

0.1

0.2

0.3

0.4

xx

Page 101: 数学分析实验 -  Mathematica 软件的应用

20000 40000 60000 80000 100000 120000

0.1

0.2

0.3

0.4

xx

Page 102: 数学分析实验 -  Mathematica 软件的应用

y=0.05×(max{x-800,0}+max{x-1300,0}

+max{x-2800,0}+max{x-5800,0}+max{x-20800,0}

+max{x-40800,0}+max{x-60800,0}+max{x-80800,0}

+max{x-100800,0})

Mathematica 中相应的命令是:Shui3[x_]:=0.05*(Max[x-800,0]+Max[x-1300,0]+Max[x-28

00,0]+Max[x-5800,0]+Max[x-20800,0]+Max[x-40800,0]+M

ax[x-60800,0]+Max[x-80800,0]+Max[x-100800,0])

把图示面积分成若干水平排列的矩形条,第一条的高度都是 5% ,宽度恰好是月收入 x 与各税率段的起点之差。于是可得纳税额的另一计算公式:

Page 103: 数学分析实验 -  Mathematica 软件的应用

1.4 一元函数的图形Plot 函数的使用方法

格式 意义Plot[f,{x,a,b},选择项 ]

按选择项中指定(或缺省)的格式画出 f(x) 在区间 [a,b] 上的图形。

如: Plot[Tan[x],{x,-2Pi,2Pi}]

Plot[Tan[x],{x,-2Pi,2Pi},PlotRange->{-10,10}]

Page 104: 数学分析实验 -  Mathematica 软件的应用

作图原理

以给定的表达式作为计算对象,根据给定的取值范围选取自变量的样点数,再计算出相应的函数值,得到函数图象的一组型值点。型值点的个数可以通过选择项( P

lotPoints ) 进行调整。 根据型值点数据构造出图形的基本要素,进而形成函数曲线的一个图形表达式,表示为 Graphics 。最后调用系统内部定义的显示程序 ($DisplayFunction) 把图形表达式投射到计算机屏幕上。

可以使用 InputForm 函数了解作图过程的细节。 InputForm[Plot[Tan[x],{x,-2Pi,2Pi},PlotRange->{-10,1

0}]

Page 105: 数学分析实验 -  Mathematica 软件的应用

画多个函数的图形

格式 意义

Plot[{f1,f2,…},{x,a,b},选择项 ]

按选择项中指定(或缺省)的格式画出 f1(x), f2(x),… 在区间 [a,b]上的图形。

如: Plot[{Sin[x],Cos[x]},{x,-2Pi,2Pi}]

Page 106: 数学分析实验 -  Mathematica 软件的应用

使用选择项对图形进行修饰 Mathematica 绘图时允许使用选择项对绘制的图形细节提出各种要求和设置。如:指定原点位置、不画坐标轴,指定颜色等等。每个选择项有一个确定的名称,以“选择项名 ->选择项值”的形式放在 Plot 中最后边的位置。修饰曲线的样式 (第一类选择项 )选择项名称 意义

PlotStyle->…指定曲线的外观:颜色、线形、线宽等。

Page 107: 数学分析实验 -  Mathematica 软件的应用

选择项 意义 格式RGBColor 指定颜色 RGBColor[r,g,b]

GrayLevel 指定灰度 GrayLevel[g]

Thickness 指定线宽 Thickness[width]

Dashing 指定线形 Dashing[{ 实线长度 , 虚线长度 }]

用法说明

如: Plot[Sin[x],{x,-Pi,Pi},PlotStyle->

{Thickness[0.01],RGBColor[1.000,0,0.502],Dashing[{0.03,

0.02}]}]

Page 108: 数学分析实验 -  Mathematica 软件的应用

选择项 意义Background-> GrayLevel[0.3]

指定背景颜色

GridLines-> Automatic

指定是否画网格线,默认为 None

PlotRange-> {a,b} 确定所画 y 的范围为 [a,b]

AspectRatio->1.3确定图的纵横比,默认值为 Golde

nRatio

PlotLabel->”xxxx”

设定图的标题为 xxxx

修饰整幅图的外观 (第二类选择项 )

Page 109: 数学分析实验 -  Mathematica 软件的应用

例如: Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Gr

idLines->Automatic,Background-> RGBColor[1,1,0]]

Plot[Tan[x],{x,-2Pi,2Pi},PlotStyle-> RGBColor[0,0,1],

PlotRange->{0,5},AspectRatio-> 1/2,PlotLabel->"y=tan

x"]

Page 110: 数学分析实验 -  Mathematica 软件的应用

选择项 意义

Axes->False指定是否画坐标轴,默认为 Tru

e

AxesLabel->{xx,yy} 指定坐标轴的名称Ticks->{-3,-1.5,1.5,3}

Ticks-> {{1,2,3},{1,2,3}}

指定两坐标轴上刻度的位置,默认值为 Automatic

Frame->True 在图形周围是否加框FrameLabel-

>"xxxx"设定框的周围是否加标志,默认

为 None

对坐标轴外观进行修饰 (第二类选择项 )

Page 111: 数学分析实验 -  Mathematica 软件的应用

例如: Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Ax

es->None,Frame->True]

Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Ba

ckground-> RGBColor[1,1,0],AxesLabel->{"x", "sin(x)

"}]

Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],Bac

kground->RGBColor[1,1,0],Ticks-> {{-3,-1.5,0,1.5,3},{-1,0,

1}}]

Page 112: 数学分析实验 -  Mathematica 软件的应用

Show 函数格式 意义

Show[ 图 1, 图 2,…,选择项 ]

再现已做好的图形 ( 可以使用第二类选择项)

例如: g1=Plot[Sin[x],{x,-Pi,Pi},PlotStyle-> RGBColor[0,0,1],

GridLines->Automatic,Background-> RGBColor[1,1,0]]

Show[g1,AspectRatio->Automatic]

Show[g1,Axes->{True,False},GridLines->None]

ph1=Plot[Sin[x],{x,-2Pi,2Pi}]

ph2=Plot[Tan[x],{x,-2Pi,2Pi}]

Show[ph1,ph2,PlotRange->{-3,3}]

Page 113: 数学分析实验 -  Mathematica 软件的应用

用用 ParametricPlot ParametricPlot 函数作参数方程的图形函数作参数方程的图形

格式 意义

ParametricPlot[{x,y},{t,t0,t1},选择项 ]

作由参数方程 x=x(t),y=y(t)所确定的函数在区间 [t0,t1] 上的图象

ParametricPlot[{{x1,y1},{x2,y2},…},{t,t0,t1},选择项 ]

作由多个参数方程 x=x1(t),y=y1(t);x=x2(t),y=y2(t);… 所确定的若干个函数在区间 [t0,t1] 上的图象

Page 114: 数学分析实验 -  Mathematica 软件的应用

例如: ParametricPlot[{Cos[x],Sin[x]},{x,-Pi,Pi},PlotStyle->

RGBColor[0,0,1],Background-> RGBColor[1,1,0],Aspect

Ratio->1,Axes->None]

a=Input["Input a real number:"]

b=Input["Input a real number:"]

ParametricPlot[{Sin[a t],Cos[b t]},{t,0,2Pi},PlotStyle-

> RGBColor[0,1,0],AspectRatio->Automatic]

ParametricPlot[{{Sin[t],Cos[t]},{1.5t,t^2}}, {t,-Pi,Pi},

PlotStyle->RGBColor[0,1,0],AspectRatio-> Automatic]

Page 115: 数学分析实验 -  Mathematica 软件的应用

用用 ListPlot ListPlot 函数作图函数作图

表达式格式 意义ListPlot[{y1,y2,…}, 选择项 ]

画出 y1,y2,… 各点的图形,相应的 x值为 1,2,…

ListPlot[{{x1,y1}, {x2,y2},…},选择项 ]

画出 (x1,y1),(x2,y2),… 各点的图形

选择项格式 意义PlotStyle-> PointSize[0.01]

设定散点图中每个人点的大小

PlotJoined->True 是否连接各个型值点构成折线图

Page 116: 数学分析实验 -  Mathematica 软件的应用

例如: t1=Table[{x,x^3},{x,-3,3,0.2}]

ListPlot[t1,PlotStyle->RGBColor[0,0,1]]

ListPlot[t1,PlotStyle-> {RGBColor[0,0,1],PointSize[0.0

15]},PlotJoined-> True,AspectRatio->1]

Page 117: 数学分析实验 -  Mathematica 软件的应用

函数图象的观察

绘制幂函数 y=x, y=x3, y=x6, y=x30 在区间 [0,2] 上的图形 .

P[x_,p_]:=x^p

Plot[{P[x,1],P[x,3],P[x,6],P[x,30]},{x,0,2},PlotRange-

>{0,2},

AspectRatio->0.8,PlotLabel->"n=1, 3, 6, 30",PlotStyle->

{RGBColor[1,0,0], RGBColor[1,0.502,0],

RGBColor[0,1,1], RGBColor[0,1,0]}]

Page 118: 数学分析实验 -  Mathematica 软件的应用

0.5 1 1.5 2

0.25

0.5

0.75

1

1.25

1.5

1.75

2n1, 3, 6, 30

Page 119: 数学分析实验 -  Mathematica 软件的应用

比较函数 f(x)=x,g(x)=x+x3, h(x)=x3 在 x→0 时函数的性态 .

Plot[{x,x+x^3,x^3},{x,0,0.5}, AspectRatio->Automatic,

PlotStyle->{RGBColor[1,0,0], RGBColor[0,1,0],

RGBColor[0,0,1]}]

Page 120: 数学分析实验 -  Mathematica 软件的应用

0.1 0.2 0.3 0.4 0.5

0.1

0.2

0.3

0.4

0.5

0.6

Page 121: 数学分析实验 -  Mathematica 软件的应用

比较函数 f(x)=x,g(x)=x+x3, h(x)=x3 在 x→∞ 时函数的性态 .

Plot[{x,x+x^3,x^3},{x,10,100}, PlotStyle->

{RGBColor[1,0,0], RGBColor[0,1,0], RGBColor[0,0,1]}]

Page 122: 数学分析实验 -  Mathematica 软件的应用

20 40 60 80 100

200000

400000

600000

800000

1106

Page 123: 数学分析实验 -  Mathematica 软件的应用

pdata1=Table[p,{p,-5,-1,0.5}]

pdata2=Table[p,{p,-1,0,0.1}]

pdata3=Table[p,{p,0,1,0.1}]

pdata4=Table[p,{p,1,5,0.5}]

pdata=Join[pdata1,pdata2,pdata3,pdata4];

Do[Plot[{x,1,x^pdata[[p]]},{x,0,2},PlotRange->

{0,3},PlotLabel->"p="<>ToString[pdata[[p]]],PlotStyle->

{RGBColor[1,0,0],RGBColor[0,1,0],RGBColor[0,0,1]}],

{p,1,Length[pdata]}]

观察 p连续变化时,幂函数图象的变化 .

Page 124: 数学分析实验 -  Mathematica 软件的应用

幂函数与指数函数、对数函数的比较 .

Plot[{x^10,1.1^x},{x,0,800}, PlotRange->{0,10^29},

PlotStyle->{RGBColor[1,0,0], RGBColor[0,0,1]}]

Plot[{x^0.3,100 Log[10,x]},{x,0,5*10^7}, PlotStyle->

{RGBColor[1,0,0], RGBColor[0,0,1]}]

Page 125: 数学分析实验 -  Mathematica 软件的应用

1107

2107

3107

4107

5107

200

400

600

Page 126: 数学分析实验 -  Mathematica 软件的应用

11010 21010 31010 41010 51010

250

500

750

1000

1250

1500

Page 127: 数学分析实验 -  Mathematica 软件的应用

2.6 偏导数与全微分

格式 意义D[f,x] 计算 f 关于 x 的偏导数

D[f,x1,x2,…]计算 f 关于 x1,x2,… 的高阶偏导数

D[f,{xi,n}] 计算 f 关于 xi 的 n阶偏导数D[f,x,NonConstants->{y}]

计算 f 关于 x 的偏导数, y 是 x 的函数

Dt[f,x] 计算 f 关于 x 的全导数Dt[f,x1,x2,…] 计算 f 关于 x1,x2,… 的全导数Dt[f,x,Constants-> {c1,c2,…}]

计算 f 关于 x 的全导数,其中 c1,c2,… 为常数

Dt[f[x,y]] 求 f 的全微分

Page 128: 数学分析实验 -  Mathematica 软件的应用

D[Exp[x+y+z^2],z]

D[x^2+y^2,x,y]

D[Exp[x+2y],{y,5}]

D[x[1]^2+x[2]^2,x[1]]

D[g[x^2,y^2],x]

D[g[x,y^2],x,x,y]

D[x^2+y^2,x,NonConstants->{y}]

D[x^2+y[x]^2,x]

D[f[Sin[x],y[x^2]],x]

Dt[x^2+y^2,x]

Dt[x^2+y^2+z^2,x]

Dt[x^2+y^2+z^2,x,Constants->{y}]

Dt[ArcSin[x/y]]

Page 129: 数学分析实验 -  Mathematica 软件的应用

t1={{"D[Exp[x+y+z^2],z]",

"D[x^2+y^2,x,y]",

"D[Exp[x+2y],{y,5}]}",

"D[x[1]^2+x[2]^2,x[1]]",

"D[g[x^2,y^2],x]",

"D[g[x,y^2],x,x,y]",

"D[x^2+y^2,x,NonConstants->{y}]",

"D[x^2+y[x]^2,x]",

"D[f[Sin[x],y[x^2]],x]",

"Dt[x^2+y^2,x]",

"Dt[x^2+y^2+z^2,x]",

"Dt[x^2+y^2+z^2,x,Constants->{y}]",

"Dt[ArcSin[x/y]]"}};

Page 130: 数学分析实验 -  Mathematica 软件的应用

t2={{D[Exp[x+y+z^2],z],

D[x^2+y^2,x,y],

D[Exp[x+2y],{y,5}],

D[x[1]^2+x[2]^2,x[1]],

D[g[x^2,y^2],x],

D[g[x,y^2],x,x,y],

D[x^2+y^2,x,NonConstants->{y}],

D[x^2+y[x]^2,x],

D[f[Sin[x],y[x^2]],x],

Dt[x^2+y^2,x],

Dt[x^2+y^2+z^2,x],

Dt[x^2+y^2+z^2,x,Constants->{y}],

Dt[ArcSin[x/y]]}};

TableForm[Transpose[Join[t1,t2]]]

Page 131: 数学分析实验 -  Mathematica 软件的应用

隐函数求导隐函数求导

例 已知 x2+y2+z2-4z=0, 求 .

eq=(x^2+y^2+z^2-4z==0);

y/:Dt[y,x]=0;

deq1=Dt[eq,x]

deq2=Dt[eq,x,x]

Solve[{deq1,deq2},{Dt[z,x],Dt[z,{x,2}]}]

2

2

,x

z

x

z

Page 132: 数学分析实验 -  Mathematica 软件的应用

例 设 x u-y v=0, y u+x v=1,求

eq={x u-y v==0,y u+x v==1};

y/:Dt[y,x]=0; x/:Dt[x,y]=0;

eqx=Dt[eq,x]

{jie1}=Solve[eqx,{Dt[u,x],Dt[v,x]}]

eqy=Dt[eq,y]

{jie2}=Solve[eqy,{Dt[u,y],Dt[v,y]}]

.,,,y

v

x

v

y

u

x

u

uv=Solve[eq,{u,v}];

u=u/.uv[[1]];v=v/.uv[[1]];

{D[u,x],D[u,y],D[v,x],D[v,y]}//Simplify

{Dt[u,x],Dt[u,y],Dt[v,x],Dt[v,y]}/.jie1/.jie2//Simplify

Page 133: 数学分析实验 -  Mathematica 软件的应用

2.7 多元函数的极值 例 1 设 z=x4-8xy+2y2-3, 求函数的极值点和极值 .

z=x^4-8x y+2y^2-3;

dzx=D[z,x];dzy=D[z,y];

s0=Solve[{dzx==0,dzy==0},{x,y}]

dzxx=D[z,x,x];dzxy=D[z,x,y];dzyy=D[z,y,y];

L=dzxx dzyy-dzxy^2

Module[{a,b,c,d,e},Do[a=L/.s0[[k]] ;b=

dzxx/.s0[[k]];c=z/.s0[[k]];d=x/.s0[[k]];e=y/.s0[[k]];

If[a>0,If[b<0,Print["(",d,", ",e,") is a maximum point. ","

z=",c], Print["(",d,", ",e,") is a minimum point."," z=",c]]],

{k,1,Length[s0]}]]

Page 134: 数学分析实验 -  Mathematica 软件的应用

也可以通过图形来观察极值点与驻点Plot3D[z,{x,-4,4},{y,-6,6},PlotPoints->100,Mesh->False]

缩小值域再作观察 :

small=Plot3D[z,{x,-4,4},{y,-6,6},PlotPoints->100,PlotRange->

{-20,3},Mesh->False]

Show[small,ClipFill->None]

ContourPlot[z,{x,-4,4},{y,-6,6},PlotRange->{-30,3}]

Page 135: 数学分析实验 -  Mathematica 软件的应用

条件极值与条件极值与 LagrangeLagrange 乘数法乘数法

例 2 求表面积为 a2 且体积最大的长方体的体积 .

Clear[x,y,z,r,g]

g[x_,y_,z_]:=x y z-k(2x y+2y z+2 x z-a^2)

eq1=D[g[x,y,z],x]==0; eq2=D[g[x,y,z],y]==0;

eq3=D[g[x,y,z],z]==0; eq4=D[g[x,y,z],k]==0;

r=Solve[{eq1,eq2,eq3,eq4},{x,y,z,k}]

g[x,y,z]/.r[[2]]

Clear[g,eq1,eq2,eq3,eq4,r]

Page 136: 数学分析实验 -  Mathematica 软件的应用

Clear[x,y,z,s,t,r,k1,k2,m1,m2,L]

L=(x-s)^2+(y-t)^2+(z-r)^2+k1(x+y-z-1)+m1(2x+y-z-2)+

k2(s+2t-r-2)+m2(s+2t+2r+4);

rr=Solve[{D[L,x]==0,D[L,y]==0,D[L,z]==0,D[L,s]==0,

D[L,t]==0,D[L,r]==0,D[L,k1]==0,D[L,k2]==0,

D[L,m1]==0,D[L,m2]==0},{x,y,z,s,t,r,k1,k2,m1,m2}]

d=Sqrt[(x-s)^2+(y-t)^2+(z-r)^2]/.rr[[1]]

Print[p1={x,y,z}/.rr[[1]],",",p2={s,t,r}/.rr[[1]],",",p2-p1]

例 3 已知两条直线的方程分别为:

求这两条直线间的最短距离 .

0422

022:

022

01: 21 zyx

zyxl

zyx

zyxl 和

Page 137: 数学分析实验 -  Mathematica 软件的应用

二元函数在区域二元函数在区域 DD内的最大值和最小值内的最大值和最小值

例 4 求函数 z=x2+y2-4x-2y+7 在上半圆域 x2+y216, y0

上的最大值和最小值 .

(1) 画出函数的等高线和区域 D 的边界线 .

Clear[x,y,z,r,g]

g[x_,y_]:=x^2+y^2-4x-2y+7

pts=Table[N[{4Cos[t],4Sin[t]}],{t,0,Pi,Pi/20}];

ContourPlot[g[x,y],{x,-5,5},{y,-5,5},Epilog->{RGBColor[1,1,0],

Thickness[0.003],Line[pts],Line[{{-4,0},{4,0}}]}];

(2)求函数在区域 D内的驻点,计算相应的函数值 .

r=Solve[{D[g[x,y],x]==0,D[g[x,y],y]==0},{x,y}]

g[x,y]/.r[[1]]

Page 138: 数学分析实验 -  Mathematica 软件的应用

(3)求函数在直线边界 y=0, -4x4 上的最值 .

Plot[g[x,0],{x,-4,4},PlotRange->All];

r=Solve[D[g[x,0],x]==0,x]

Print[g[x,0]/.r[[1]], " , ",g[-4,0], " , ",g[4,0]]

(4)求函数在圆弧边界 x2+y2=16, y0 上的最值 .

Plot[g[4Cos[t],4Sin[t]],{t,0,Pi}];

eqt=D[g[4Cos[t],4Sin[t]],t]==0; rt=FindRoot[eqt,{t,0.5}]

{4Cos[t],4Sin[t]}/.rt

g[4Cos[t],4Sin[t]]/.rt

根据上述计算可知:函数在区域 D 上的点 (2,1)处取得最小值 2 ;在边界点 (-4,0)处取得最大值 39.

Page 139: 数学分析实验 -  Mathematica 软件的应用

3.1 平面上的几何变换函数图形的平移变换函数图形的平移变换

f[x_]:=Exp[-x^2/2]

Plot[{f[x],f[x+1],f[x-2]},{x,-5,5},PlotStyle->{RGBColor[1,0,0],

RGBColor[0,1,0], RGBColor[0,0,1]}]

例 1 设 ,在同一坐标系中作出 y=f(x), y=f(x+1)

和 y=f(x-2) 的图象 .

2

2

)(x

exf

ParametricPlot[{{Cos[t],Sin[t]}, {Cos[t]+3,Sin[t]-2}},{t,0,2Pi},

PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]},AspectRatio

->Automatic]

Plot[{f[x],f[x]+2,f[x-2]-3},{x,-5,5},PlotStyle-

>{RGBColor[1,0,0], RGBColor[0,1,0], RGBColor[0,0,1]}]

Page 140: 数学分析实验 -  Mathematica 软件的应用

函数图形的伸缩变换函数图形的伸缩变换

f[x_]:=Exp[-x^2/2]

Plot[{f[x],f[2x],f[x/2]},{x,-5,5},PlotStyle->{RGBColor[1,0,0],

RGBColor[0,1,0], RGBColor[0,0,1]}]

例 2 设 ,在同一坐标系中作出 y=f(x), y=f(2x)

和 y=f(x/2) 的图象 .

2

2

)(x

exf

通过动画观察图象的变化情况:Do[Plot[f[s x],{x,-5,5},PlotStyle->RGBColor[0,0,1], PlotRang

e->{0,1},PlotLabel->"s="<>ToString[s]],{s,0.2,5,0.2}]

进一步观察 t f(s x),f(-x),-f(x)及参数方程图象的变化情况 .

Page 141: 数学分析实验 -  Mathematica 软件的应用

函数图形的旋转变换函数图形的旋转变换

z[t_]:=(t+t^2 I)Exp[Pi/6 I]

ParametricPlot[{Re[z[t]],Im[z[t]]},{t,-2,2},AspectRatio->

Automatic,PlotRange->{{-5,5},{-1,5}},PlotStyle->

RGBColor[0,0,1]]

例 3 将抛物线 绕原点旋转 30 度 .2xy

动画观察图象旋转的效果 :

z1[t_,s_]:= (t+t^2 I)Exp[s I]

Do[ParametricPlot[{Re[z1[t,s]],Im[z1[t,s]]},{t,-2,2}, AspectRat

io-> Automatic,PlotRange->{{-5,5},{-5,5}}, PlotStyle-> RGBC

olor[0,0,1]],{s,0,2Pi,Pi/12}]

Page 142: 数学分析实验 -  Mathematica 软件的应用

函数图形的对称变换函数图形的对称变换

(1) 偶延拓f=.;f[x_]:=Sqrt[2x-x^2]/;x>=0

f[x_]:=f[-x]/;x<0

Plot[f[x],{x,-2,2},AspectRatio->Automatic]

例 4 已知 ,试扩展 f(x) 的定义域,使 f(x) 分别成为奇函数和偶函数,作出延拓后的函数图象 .

20,2)( 2 xxxxf

(2) 奇延拓f1[x_]:=Sqrt[2x-x^2]/;x>=0

f1[x_]:=-f1[-x]/;x<0

Plot[f1[x],{x,-2,2},AspectRatio->Automatic]

Page 143: 数学分析实验 -  Mathematica 软件的应用

周期延拓Clear[f];

f[x_]:=Which[0<=x<=2,Sqrt[2x-x^2],x>2,f[x-2],x<0,f[x+2]]

Plot[f[x],{x,-6,6},AspectRatio->Automatic]

例 5 将例 4 中的函数 f(x)延拓为以 2 为周期的周期函数,作出延拓后的函数图象 .

Page 144: 数学分析实验 -  Mathematica 软件的应用

ang[x_]:=ArcTan[x];a=1/2;

zf[t_]:=(t+Sqrt[2t-t^2] I);

zf1[t_,u_]:=Conjugate[zf[t] Exp[-ang[u]I]]Exp[ang[u]I];

ParametricPlot[{{Re[zf1[t,a]],Im[zf1[t,a]]},{t,t/2},{Re[zf[t]],

Im[zf[t]]}},{t,0,2},AspectRatio->Automatic,PlotStyle->

{RGBColor[1,0,0], RGBColor[0,1,0], RGBColor[0,0,1]}]

例 6 作出例 4 中的函数 y=f(x)关于直线 y=ax 的镜像 .

动画观察图象镜像的效果 :

Do[ParametricPlot[{{Re[zf1[t,b]],Im[zf1[t,b]]},{t,b t},

{Re[zf[t]],Im[zf[t]]}},{t,0,2},PlotRange->{{-1,2.01},{-1.01,2}},

AspectRatio->Automatic, PlotStyle->{RGBColor[1,0,0], RGB

Color[0,1,0], RGBColor[0,0,1]}],{b,0,2,1/12}]

Page 145: 数学分析实验 -  Mathematica 软件的应用

a=3;b=5I;

zf2[t_,u_]:=Conjugate[(zf[t]-b)Exp[-ang[u]I]]Exp[ang[u]I]+b;

ParametricPlot[{{Re[zf2[t,a]],Im[zf2[t,a]]},{t-2,3(t-2)+5},

{Re[zf[t]],Im[zf[t]]}},{t,0,2}, AspectRatio->Automatic,

PlotStyle->{RGBColor[1,0,0], RGBColor[0,1,0],

RGBColor[0,0,1]}]

例 7 作出例 4 中的函数 y=f(x)关于直线 y=3x+5 的镜像 .

Page 146: 数学分析实验 -  Mathematica 软件的应用

几个练习

z=.;x=.;y=.;point={x->1,y->1,z->1};

eqns={2x-3y+5z-4==0,x^2+y^2+z^2-3x==0};

jie=Solve[Dt[eqns,x],{Dt[y,x],Dt[z,x]}]

dzx=Dt[z,x]/.jie[[1]]/.point

dyx=Dt[y,x]/.jie[[1]]/.point

v0={1,dyx,dzx}

(x-1)/1==(y-1)/dyx==(z-1)/dzx

Expand[(x-1)+(y-1)dyx+(z-1)dzx]==0

例 1 P143 ,练习五

Page 147: 数学分析实验 -  Mathematica 软件的应用

Module[{a,b,b0,m,u,x,y,z},

m[v_]:=Sqrt[v.v];

u=x^2+y^2+z^2;z[t_]:={t,t^2,t^2};

b=D[z[t],t]/.{t->1};b0=b/m[b];

grad={D[u,x],D[u,y],D[u,z]}/.{x->1,y->1,z->1} ;

db0=grad.b0;

Print[db0," , ",grad]]

例 2 P143 ,练习六

Page 148: 数学分析实验 -  Mathematica 软件的应用

fff[x_,y_]:=Evaluate[Normal[Series[x^y,{x,1,5},{y,1,5}]]];

N[fff[1101/1000,1021/1000],10]

例 3 P143 ,练习七 (2)

Page 149: 数学分析实验 -  Mathematica 软件的应用

Module[{a,s,data,xydata,T1,T2,TT,g1,i},

a=Pi/30;s=Sin[a]+Cos[a];

data={{-1,-1,1},{1,-1,1},{1,1,1},{-1,1,1}};

T1={{Cos[a],Sin[a],0},{-Sin[a],Cos[a],0},{0,0,1}};

T2={{s,0,0},{0,s,0},{0,0,1}};TT=N[T1.T2]; g1={};

For[i=0,i<21,i++,

xydata=Transpose[Drop[Transpose[data],-1]];

xydata=Append[xydata,xydata[[1]]];

g1=Append[g1,Graphics[Line[xydata]]];

Show[g1,AspectRatio->1,PlotRange->{{-10,10},{-

10,10}}];

data=data.TT]]

例 4 P163 ,练习四

Page 150: 数学分析实验 -  Mathematica 软件的应用

Module[{a,s,data,xydata,g1,i},

a=Pi/30;s=Sin[a]+Cos[a];

data={-1-I,1-I,1+I,-1+I,-1-I};

g1={};

For[i=0,i<21,i++,

xydata=Transpose[{Re[data],Im[data]}];

g1=Append[g1,

Graphics[{RGBColor[1,0,1],Line[xydata]}]];

Show[g1,AspectRatio->1,PlotRange->{{-10,10},{-

10,10}}];

data=N[data Exp[a I] s]]

]

复数法

Page 151: 数学分析实验 -  Mathematica 软件的应用

3.3 机翼轮廓线的加工问题的提出问题的提出

在飞机制造业中,机翼的加工是一项关键技术。由于机翼的尺寸很大,通常在图纸中只能标出某些关键点的数据。下表给出的是某型号飞机的机翼上缘轮廓线的部分数据。

x 0. 4.74 9.5019.0

038.0

057.00

76.00

y 0. 5.32 8.1011.9

716.1

517.10

16.34

x95.0

0114.

0133.

0152.

0171.

0190.0

y14.6

312.1

69.69 7.03 3.99 0.0

Page 152: 数学分析实验 -  Mathematica 软件的应用

t={{0.,0.},{4.74,5.32},{9.50,8.10},{19.00,11.97},{38.00,16.15},

{57.00,17.10},{76.00,16.34},{95.00,14.63},{114.00,12.16},

{133.00,9.69},{152.00,7.03},{171.00,3.99},{190.00,0.}};

TableForm[Join[{{x,y}},t]]

ListPlot[t,PlotJoined->True,AspectRatio->1/4,PlotStyle->

RGBColor[1,0,0]]

25 50 75 100 125 150 175

2.55

7.510

12.515

17.5

Page 153: 数学分析实验 -  Mathematica 软件的应用

多项式插值多项式插值

设多项式为 ,根据已知条件,对应每个节点 ,应有

所以系数 a0,a1,…,an应满足如下方程组:

nnn xaxaxaaxP ...)( 2

210

),( ii yx

nnnnnn

nn

nn

yxaxaxaa

yxaxaxaa

yxaxaxaa

...

......

...

...

2210

112

12110

002

02010

niyxP iin ,...,2,1,0,)(

当 x0,x1,…,xn互不相同时,由 n+1 个节点可确定唯一的 n次插值多项式 Pn(x).

Page 154: 数学分析实验 -  Mathematica 软件的应用

s={{0,853.},{30,921.},{60,934.}};

n=3;eqns={};vars={};

Pn[x_]:=a[0]+Sum[a[k]x^k,{k,1,n-1}]

For[i=1,i<=n,i++,eqn[i]=(s[[i,2]]==Pn[s[[i,1]]])]

For[i=1,i<=n,i++,AppendTo[eqns,eqn[i]];

AppendTo[vars,a[i-1]]]

xishu=Solve[eqns,vars]

fy=Pn[x]/.xishu[[1]]

Plot[fy,{x,0,60}]

FindMinimum[-fy,{x,30}]

例 1 ( P.172) 略 .

通过计算可以看出,当 x=52 ,即 6月 22日的白天最长,约为 935.11 分钟。

待定系数法

Page 155: 数学分析实验 -  Mathematica 软件的应用

x0=0;x1=30;x2=60;y0=853.;y1=921.;y2=934.;

l[x_,a_,b_,c_]:=(x-b)/(a-b) (x-c)/(a-c)

L0[x_]:=l[x,x0,x1,x2];L1[x_]:=l[x,x1,x0,x2];

L2[x_]:=l[x,x2,x0,x1]

p12[x_]:=L0[x] y0+L1[x]y1+L2[x]y2

FindMinimum[-p12[x],{x,30}]

线性插值线性插值 考虑过两个节点 (x0,y0),(x1,y1) 的线性插值 .

抛物线插值 抛物线插值 考虑过节点 (x0,y0),(x1,y1), (x2,y2) 的抛物线插值 .

基函数法

Page 156: 数学分析实验 -  Mathematica 软件的应用

LagrangeLagrange 插值插值InterpolatingPolynomial[data,x]

InterpolatingPolynomial[{1,4,5,8},x]//Simplify

s={{0,853.},{30,921.},{60,934.}};

InterpolatingPolynomial[s,x]//Expand

Page 157: 数学分析实验 -  Mathematica 软件的应用

三次样条插值三次样条插值

三次样条函数 满足以下: (a) 在每一区间段 [xi-1,xi] 上都是三次多项式,记为 Si(x).

(b) S(x) 在区间 [a,b] 上有二阶连续导数 .

(c) 在插值节点处满足插值条件 S(xi)=yi, i=0,1,2,…,n.

bxaxS ),(

使用方法<<NumericalMath`SplineFit`

SplineFit[Data,Cubic]

sindata=Table[{t,Sin[t]},{t,0,6Pi,0.3Pi}];

splinesin=SplineFit[sindata,Cubic]

ParametricPlot[splinesin[t],{t,0,20},Compiled->False]

fff=SplineFit[t,Cubic];

ParametricPlot[fff[t],{t,0,12}, AspectRatio->1/3]

Page 158: 数学分析实验 -  Mathematica 软件的应用

3.4 数控机床的刀具补偿实际问题:刀具补偿的估计实际问题:刀具补偿的估计

在数控机床加工零件时,由于刀具磨损会影响加工精度,要对刀具的磨损进行补偿 . 为测定刀具的磨损速度,实验室每隔一小时测量一次刀具的厚度(单位 : mm ),得到实验数据如下:

时间 0 1 2 3 4 5 6 7

厚度 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8

Page 159: 数学分析实验 -  Mathematica 软件的应用

t={0,1,2,3,4,5,6,7}; y={27.0,26.8,26.5,26.3,26.1,25.7,25.3,24.8};

data=Transpose[{t,y}]

ph0=ListPlot[data,PlotStyle->

{RGBColor[1,0,0],PointSize[0.02]]

1 2 3 4 5 6 7

25.5

26

26.5

27

Page 160: 数学分析实验 -  Mathematica 软件的应用

最小二乘法最小二乘法

从数据图可以看出:这些点大致位于一条直线的附近。因此设 y 与 t 近似满足线性关系,设 y=a+b t.

可以使用最小二乘法来确定 a,b.

M[a_,b_]:=Sum[(y[[i]]-(a+b t[[i]]))^2,{i,1,8}]

eqt={D[M[a,b],a]==0,D[M[a,b],b]==0}//Simplify

r=Solve[eqt,{a,b}]

a=.;b=.;

ss1=a+b t/.r[[1]]

Ph1=Plot[ss1,{x,0,7},PlotStyle->RGBColor[0,1,0]]

Page 161: 数学分析实验 -  Mathematica 软件的应用

ss1=Fit[data,{1,x},x]

ss2=Fit[data,{1,x,x^2},x]

ss3=Fit[data,{1,x,x^2,x^3},x]

ss4=Fit[data,{1,Sin[x],x^2},x]

ph2=Plot[{ss1,ss2,ss3,ss4},{x,0,7},PlotStyle->

{RGBColor[0,1,0], RGBColor[0,0,1], RGBColor[1,1,0],

RGBColor[0,1,1]}]

Show[ph0,ph1]

Mathematica 系统提供了 Fit专用函数来实现在最小二乘原则下的线性拟合运算 .

Fit[Data,funcs,var]

Page 162: 数学分析实验 -  Mathematica 软件的应用

曲线拟合曲线拟合

例 在研究某单质分子的化学反应速度时,得到如下数据:

t 3 6 9 12 15 18 21 24

y 57.6 41.9 31.0 22.7 16.6 12.2 8.9 6.5

试根据实验数据确定经验分布函数 y=f(x).

t1={3,6,9,12,15,18,21,24};

y1={57.6,41.9,31.0,22.7,16.6,12.2,8.9,6.5};

data1=Transpose[{t1,y1}];

d2=ListPlot[data1,PlotStyle->

{RGBColor[0,0,1],PointSize[.015]}]

Page 163: 数学分析实验 -  Mathematica 软件的应用

根据化学反应速度理论, y=f(t)应该是指数函数 y=keat ,其中 a, k 是待定常数。取对数得, lny=lnk+at=b+at ,即 lny

与 t满足线性关系。

logy=Log[y1];

data2=Transpose[{t1,logy}];

d3=ListPlot[data2, PlotStyle->

{RGBColor[0,0,1],PointSize[.015]}]

ly=Fit[data2,{1,x},x]

y=Exp[ly]//Factor

g=Plot[y,{x,1,25}, PlotStyle->RGBColor[1,0,0]]

Show[d2,g]

sss=Fit[data1,{1,x,x^2,x^3},x];g1=Plot[sss,{x,1,25}];

Show[d2,g1]

Page 164: 数学分析实验 -  Mathematica 软件的应用

3.6 牛顿迭代法牛顿迭代法原理牛顿迭代法原理

求方程 f(x)=0 的根的迭代格式 :

过程图解:

)('

)(1

n

nnn xf

xfxx

Page 165: 数学分析实验 -  Mathematica 软件的应用

0.2 0.4 0.6 0.8 1

0.2

0.4

0.6

0.8

1

Page 166: 数学分析实验 -  Mathematica 软件的应用

例 1 用牛顿迭代法求 x3+1.1x2+0.9x-1.4=0 的近似实根,误差不超过 0.001.

f[x_]:=x^3+1.1x^2+0.9x-1.4

g1[x_]:=x-f[x]/f'[x]

FixedPointList[g1,0.6,3]

Page 167: 数学分析实验 -  Mathematica 软件的应用

例 2 用牛顿迭代法求任意正数的算术平方根 .

sqRoot[a_,n_]:=Module[{f,g},f[x_]:=x^2-a; g[x_]:=x-f[x]/f'[x];

FixedPoint[g,a,n]]

N[sqRoot[10,10],100]

N[Sqrt[10],100]

Page 168: 数学分析实验 -  Mathematica 软件的应用

牛顿迭代法的收敛性牛顿迭代法的收敛性

定理定理 设 f(x) 在区间 [a,b] 上有二阶连续导数,且满足 (1) f(a) f(b)<0;

(2) f"(x) 在 [a, b] 上不变号 ;

(3) f'(x) 在 [a, b] 上不为 0;

(4) 令 = b-a, m=min{| f(x)|, a x b}, M=max{| f"(x)|, a

x b}, 有 < 2m/M, 则对任意 x0[a, b], 牛顿迭代格式收敛于 f(x) 在区间 [a,b] 中的唯一实根 x*.

Page 169: 数学分析实验 -  Mathematica 软件的应用

例 3 用牛顿迭代法求方程 x ex=1 的近似实根 .

Clear[a,f];

f[x_]:=x Exp[x]-1

g1[x_]:=x-f[x]/f'[x]

g1[x]//Simplify

N[FixedPointList[g1,0,5],10]

Page 170: 数学分析实验 -  Mathematica 软件的应用

利用割线法计算方程的根利用割线法计算方程的根

例 4 利用割线法求解方程 x ex-1=0.

0.2 0.4 0.6 0.8 1

-1

-0.5

0.5

1

1.5

Page 171: 数学分析实验 -  Mathematica 软件的应用

Clear[f,g1];

f[x_]:=x Exp[x]-1;a=0;b=1;

g1[x_]:=x-f[x]/(f[b]-f[x]) (b-x)

FixedPointList[g1,0.,10]

图的作法:Plot[f[x],{x,0,1},AspectRatio->1,Epilog->{{RGBColor[0,0,1], L

ine[{{a,f[a]},{b,f[b]}}],Line[{{g1[a],f[g1[a]]},{b,f[b]}}], Line[{{g

1[g1[a]],f[g1[g1[a]]]},{b,f[b]}}]}, {RGBColor[1,0,0],Dashing[{0.

02,0.01}], Line[{{g1[a],0},{g1[a],f[g1[a]]}}], Line[{{g1[g1[a]],0},

{g1[g1[a]],f[g1[g1[a]]]}}]}}]

Page 172: 数学分析实验 -  Mathematica 软件的应用

迭代过程的加速迭代过程的加速

一个简单的加速方法。 由不动点方程 x=g(x) 可以构造新的方程 gnew(x)=g(x)+(1-

)x

它与方程 x=g(x) 有相同的不动点。适当选择的值,可以使发散的迭代过程变得收敛,使收敛慢的过程加速。

例 5 求方程 x=e-x 在 0.5附近的根,精确到 10-5.

Clear[g];

g[x_]:=Exp[-x]

FixedPointList[g,0.5,SameTest->(Abs[#1-#2]<10^-5&)]

gnew[x_]:=0.625 Exp[-x]+0.375 x

FixedPointList[gnew,0.5,SameTest->(Abs[#1-#2]<10^-5&)]

Page 173: 数学分析实验 -  Mathematica 软件的应用

加速的原因加速的原因

函数 gnew(x) 在不动点 x*附近的导数对迭代的速度有较大的影响, gnew'(x) 的绝对值越小,收敛速度越快。因此,选择使 gnew'(x)=0 ,可得 :

例 6 用上述 gnew(x)构造迭代格式 ,求方程 x=e-x 在 0.5附近的根,精确到 10-5.

)('1

)(')()(,

)('1

1

xg

xxgxgxgnew

xg

gnew1[x_]:=(g[x]-x g'[x])/(1-g'[x])

FixedPointList[gnew1,0.5,SameTest->(Abs[#1-#2]<10^-5&)]

Page 174: 数学分析实验 -  Mathematica 软件的应用

牛顿迭代法是对基本迭代格式加速的结果牛顿迭代法是对基本迭代格式加速的结果

为求解方程 f(x)=0 ,可以使用不动点方程 x=x+f(x) ,相应的迭代函数为 g(x)=x+f(x). 对迭代格式进行加速,得

)('

)(

)('

)(')(

))('1(1

))('1()(

)('1

)(')()(

xf

xfx

xf

xxfxf

xf

xfxxfx

xg

xxgxgxgnew

Page 175: 数学分析实验 -  Mathematica 软件的应用

3.8 越野赛问题及其它越野赛问题越野赛问题

越野赛在湖边举行,场地如图所示 . 出发点在陆地上 A处,终点在湖心岛 B处 . A, B南北相距 5km, 东西相距 7km. 湖岸是一条东西走向的长堤,位于 A点南侧 2km. 比赛中运动员可以自由选择,但必须先从 A点出发跑步到达长堤,再由长堤下水游泳达到终点 B处 . 已知某运动员的跑步速度 v1=1

8km/h, 游泳速度 v2=6km/h, 问他应该在长堤的何处下水才能最快到达终点?

Page 176: 数学分析实验 -  Mathematica 软件的应用

x

y

O

A(0,2)

R(x,0)

B(7,-3)

Page 177: 数学分析实验 -  Mathematica 软件的应用

跑步所耗时间 t1=|AR|/v1

游泳所耗时间 t2=|RB|/v2

全部用时 t=t1+t2

下面求 t 的最小值 .

T[x_]:=Sqrt[x^2+4]/18+Sqrt[(7-x)^2+9]/6;

eqt=D[T[x],x]==0;

r=Solve[eqt,x]

T[x]/.r[[1]]//N

sin1=x/Sqrt[x^2+4]/.r[[1]];sin2=(7-x)/Sqrt[(7-x)^2+9]/.r[[1]];

sin1/sin2

Page 178: 数学分析实验 -  Mathematica 软件的应用

光线的折射与反射光线的折射与反射

根据费马定理,光线总是沿着耗时最少的路径传播 . 当光线从空气中 A点出发到达水中 B点时,由于传播速度的不同,光线在水面会发生折射现象 . 设光线在空气中的传播速度为 ca,

在水中的传播速度为 cw, 我们来确定光线的传播路线,并确定入射角与折射角之间的关系 .

x

y

A(0,p)

R(x,0)

B(d,q)

O

Page 179: 数学分析实验 -  Mathematica 软件的应用

由于两点间的直线距离最最短,光线在同一介质中的传播路线都是直线 . 光线的传播时间:

Clear[T,a,b,c,d,p,q,r,x];p=3;d=8;q=-5;C2=2;C1=3;

T[x_]:=Sqrt[x^2+p^2]/C1+Sqrt[(d-x)^2+q^2]/C2

eqx=D[T[x],x]==0; r=Solve[eqx,x];

T[x]/.r[[1]]//N

sin1=x/Sqrt[x^2+p^2];

sin2=(d-x)/Sqrt[(d-x)^2+q^2];

(N[sin1/sin2/.r[[1]]])==C1/C2

wa c

qxd

c

pxxT

2222 )()(

Page 180: 数学分析实验 -  Mathematica 软件的应用

光线的折射定律与反射定律光线的折射定律与反射定律

折射定律折射定律 光线从一种介质射入另介质时会发生折射现象 .

若光线在介质 1 中的速度为 c1, 在介质 2 中的速度为 c2, 则入射角与折射角必满足:

.sin

sin

2

1

c

c

反射定律反射定律 光线在发生反射时,入射角等于反射角 .

Page 181: 数学分析实验 -  Mathematica 软件的应用

4.1 计算机模拟盐水浓度问题盐水浓度问题

在水池中有 2000 m3水,其中含盐 2 kg ,现以每分钟 6m3

的速度向池中注入含盐率为 0.5 kg/m3 的盐水,同时又以每分钟 4 m3 的速度从水池流出搅拌均匀的盐水 . 每隔 10min 计算一次水池中水的体积、含盐量和含盐率 .

请模拟实际过程,并将模拟数据进行列表 . 从表中查出含盐率达到 0.2kg/m3 时所用的时间 .

Page 182: 数学分析实验 -  Mathematica 软件的应用

由于盐水的注入与流出,池中水的体积、含盐量与含盐率都随着时间不断变化 . 初始时刻的含盐率为 0.001kg/m3 ,以后每分钟注入含盐率为 0.5kg/m3 的水 6m3 ,并流出混合均匀后的盐水 4m3 ,直至水中的含盐率达到 0.2kg/m3 后,过程停止 . time=0;tt=0;volume=2000;total=2; rate=N[total/volume,7];

outtab={{ 时间 , 水的体积 , 含盐量 , 含盐率 }};

While[rate<0.2,

time=time+1;volume=volume+2;total=total+3-4 rate;

rate=total/volume;

If[time>=10,

AppendTo[outtab,{tt+time,volume,total,rate}];

tt=tt+time;time=0]]

TableForm[AppendTo[outtab, {tt+time,volume,total,rate}]]

Page 183: 数学分析实验 -  Mathematica 软件的应用

四人追逐问题四人追逐问题

在正方形 ABCD 的四个顶点上各有一人 . 在某一时刻 (设 t0

=0), 四个人同时出发以匀速 v按顺时针方向走向下一个人 . 在行进过程中,每个人始终对准各自的目标 . 试用计算机模拟每个人的行进轨迹 .

建立平面直角坐标系 . 取时间间隔为 t, 计算每个人在 t+ t

时刻的位置坐标 .

模拟过程中使用下列状态变量: (1) 初始化 : 终止时间 t, 采样间隔 dt, 行进速度 v, 各点起始位置 .

(2) 时间循环次数 : n=t/dt, 循环变量 j.

(3) 状态记录 : 由四个子表组成的表 robit, 每个人 (i) 的位置坐标为 robit[[i]], i=1,2,3,4.

Page 184: 数学分析实验 -  Mathematica 软件的应用

t=12.; dt=0.02;v=1;n=t/dt; (*初始化 *)

robit={{{0,10}},{{10,10}},{{10,0}},{{0,0}}}; (*初始状态 *)

m[v_]:=Sqrt[v.v];

For[j=1,j<=n,j++,

For[i=1,i<=4,i++,

lsrob=If[i!=4,robit[[i+1,j]],robit[[1,j]]]-robit[[i,j]];

lsrob=robit[[i,j]]+v*dt*(lsrob/m[lsrob]);

AppendTo[robit[[i]],lsrob]]];

col1=RGBColor[1,0,0];col2=RGBColor[0,1,0];

col3=RGBColor[0,0,1];col4=RGBColor[1,1,0];

g=Graphics[{{col1,Line[robit[[1]]]},{col2,Line[robit[[2]]]},

{col3,Line[robit[[3]]]},{col4,Line[robit[[4]]]},

{Line[{{0,0},{0,10},{10,10},{10,0},{0,0}}]}}];

Show[g,AspectRatio->Automatic]

Page 185: 数学分析实验 -  Mathematica 软件的应用

随机游动随机游动

观察一个墨水分子在水中的运动轨迹 . 由于受到水分子的碰撞,墨水分子随时都可能改变运动的方向,墨水分子的行进轨迹是一条处处不光滑的曲线,称这种运动方式为随机游动 . 作为数学上一个著名的例子,随机游动的行进轨迹是一条处处连续但处处不可导的曲线,请模拟随机游动的过程 .

Page 186: 数学分析实验 -  Mathematica 软件的应用

gotonext[x_]:=x+{Random[Real,{-1,1}],Random[Real,{-

1,1}]};

rdmmove[n_]:=Module[{location},

location=NestList[gotonext,{0,0},n];

Show[Graphics[{RGBColor[0,0,1],Line[location]},

AspectRatio->Automatic,PlotRange->All]]]

rdmmove[50]

rdmmove[1000]

Page 187: 数学分析实验 -  Mathematica 软件的应用

蒙特卡罗方法蒙特卡罗方法

随机投点模拟随机投点模拟 向平面上的矩形区域 D=[0,1][0,1]内随机地投掷一粒石块,模拟石块落点的位置 . 设落点的坐标为 (x,y), x 和 y 都是在 [0,

1]内均匀分布的随机数 . 下面的程序模拟向 D内随机投掷 10

00块石块的落点散布情况 .

pts[n_]:=Table[{Random[],Random[]},{k,1,n}]

ListPlot[pts[1000],PlotStyle->PointSize[0.003],

AspectRatio->Automatic]

Page 188: 数学分析实验 -  Mathematica 软件的应用

蒙特卡罗方法蒙特卡罗方法 设 g(x) 是区间 [0,1] 上的连续函数 , 且 0g(x)1. 研究使用随机模拟方法计算定积分 A= .

1

0)( dxxg

0.2 0.4 0.6 0.8 1

0.2

0.4

0.6

0.8

1

根据定积分的几何意义,A 是曲线 y=g(x) 下文的曲边梯形的面积 . 根据随机点的均布性,向矩形 D内投掷随机点,落在 A内的点数 k 与落在 D内的总点数 n之比恰为 A 与 D 的面积之比 . 故 A=

k/n.

这种利用随机模拟进行近似计算的方法称为蒙特卡罗方法 .

Page 189: 数学分析实验 -  Mathematica 软件的应用

例 1 已知定积分 ,使用蒙特卡罗方法计算该积分的近似值,并求的近似值 .

1

0

2

41

dxx

rdmIntegrate[n_]:=Module[{k,p=0.0},

Do[If[Random[]<=Sqrt[1-Random[]^2],k=1,k=0];

p=p+k,{x,n}];

return[p/n]]

4*rdmIntegrate[1000]