1.89k likes | 2.08k Views
数学分析实验 - 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 变化的数据表
E N D
自然数的倒数组成的数列 称为调和数列。它的前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变化的数据表 t=Table[{n,N[H[n],6]},{n,1,100}]
Step3 根据数据表画出H(n)的图形 ph1=ListPlot[t]
通过对所得图象的观察和分析,我们发现它很接近对数函数的图象。我们把它与对数函数 y=lnx的图象一起比较一下。 Step4 与对数函数 y=lnx 作比较 ph2=Plot[Log[x],{x,1,100}] Show[ph1,ph2]
根据图象比较的结果可以看出,当n很大时,H(n)的图象与ln(n)的图象非常相似,但它们大致相差一个常数。这个常数约为根据图象比较的结果可以看出,当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]
猜测1 调和数列的前n项和H(n)是发散数列,它的数值与ln(n)+C 很接近。 猜测2 数列H(n)- ln(n)可能是收敛的。
Step5 用计算数据作印证 对充分大的n,计算H(n)-ln(n)的值: t2=Table[N[{n,H[n],Log[n],H[n]-Log[n]},10], {n,1000,10000,1000}] 可以得到如下的数据表:
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]]
Step3 比较C(n)和c(n),在同一坐标系中作出它们的图象。 Show[ph4,ph5]
通过观察可知如下事实: 1、C(n)是单调递减数列; 2、c(n)是单调递增数列; 3、c(n) ≤ C(n); 4、c(n),C(n)都是收敛数列,而且它们有相同的极限。
结论: 极限 存在。 4、结论与证明 把这个极限值记为C,C ≈0.5772,称为欧拉(Euler)常数。
数学实验工具 常见的数学工具软件: 1、Mathematica; 2、Matlab; 3、Maple; 4、MathCad. 我们主要使用Mathematica这一数学工具软件。
Mathematica介绍 Mathematica是一个功能强大的数学工具软件,具有数值计算、符号演算、图象制作、公式编辑和编程等各项功能。 1、运行和退出Mathematica系统。 2、界面介绍。 3、输入和计算表达式。 4、保存和打开文件。 5、使用帮助系统。
变量与函数 一、Mathematica中的数据类型 Mathematica系统中,数值分成四种类型:整数、有理数、实数和复数。 整数型数据可以表示任意长度的精确整数,不受计算机字长的限制。 如:264; 最大素数 21257787-1等。
有理型数据可以精确表示任意的既约分数,当两个整数相除而又不能整除时,就用有理数型表示。有理型数据可以精确表示任意的既约分数,当两个整数相除而又不能整除时,就用有理数型表示。 如:3/39. 实数型数据可以表示任意精度的近似实数。 如:Pi. 复数型数据可以表示复数,其实部和虚部可以是整数型、有理型或实数型。 如:I2;Arg[1+I].
三、函数与变量的命名规则 在Mathematica系统中,变量名和函数名遵从如下命名规则: (1) 以字母开头的任意长度的字符或数字串; (2) 区分大小写; (3) 为与系统函数相区别,通常以小写字母开头; (4) 函数的形式为f[x].
四、变量赋值与变量替换 举例如下: x=5; ( 赋值) x=. (取消赋值) /. x ->3 (变量替换,计算时用3暂时替换x的值) Clear[x] (清除x的定义及其赋值)
五、四则运算 优先级:乘方>乘除>加减;同级运算从左到右;乘方运算从右到左。
例1 完成下列初等函数运算 1、 2、求 在x=3处的值,保留20位有效数字。 相应的命令如下: 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]
七、自定义函数 (1) 出现在 f[x_]中的x是一类实体,用来表示函数定义中的变量。x_可以用任何形式的参数来替代,右端定义式中的x将会随之变化。看下面的例子:
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] 从这些例子中可以看出两者之间的差别。
(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]
例2 设 ,其中a, k是参数. 当 时, (1) 作出 f(x) 在x=0, 0.5, 1, 1.5, 2, 2.5, 3 处的数据表. (2) 画出函数 f(x) 的图形. 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}]
数学常数e的探讨 编制一个对数表,使任意给出的N都能简便地求出其对数值log a N . 借助于乘方运算容易得到如下对数表: 当 a =10时,得到下表:
问题1 怎样选择 a的值才能使 N 的取值间隔很小? 由于N=ab,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中得出。
由于对给定的 N, b*实际上是以 为底的对数。当r→0时,a→e. 从而得到以e为底的对数 ln N。 问题2 如何解决 b 过大的问题? 由于r 是一个已知的非常小的正数,取 b*=r b, b*的值就比较合适。
一位顾客在银行开设了一个1000元的存款帐户,银行每年支付10%的利息。用 an 表示 n 年后帐户中的存款总额。于是 其中a0=1000表示开户时的存款。 若银行改为每月结算一次利息,每月利率为r/12,n年后的本息之和为: 若每天结算一次利息,n年后的本息之和为: 连续利率与e
一般地,设银行每年结算m次利息,则n年之后的本息之和为一般地,设银行每年结算m次利息,则n年之后的本息之和为 设r为年利率,银行每年结算m次利息,每个结算周期的利率为r/m,n年后的存款总额为: 用Mathematica作如下的计算: 数学探讨
每年结算一次: a0=1;r=0.10;n=10; b[m_,n_,r_]:=a0(1+r/m)^(m n) b[1,n,r] 2.59374 每月结算一次: b[12,n,r] 2.70704 每天结算一次: b[365,n,r] 2.71791 每秒钟结算一次: b[365*24*3600,n,r] 2.71828
从计算结果可以看出,随着结算次数的增加,1元存款10年后的存款总额越来越接近e. 事实上,这是因为: 对一般情况,有: 结论: 连续结算方式下n年后的存款额计算公式为:
1.3 分段函数 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}]
用递归方法定义函数 Mathematica中可以利用递归方式定义函数。 例如,定义求阶乘的函数: fac[0]=1 fac[n_]:=n fac[n-1] 求前n个自然数的和: he[1]=1 he[n_]:=n+he[n-1] 注意:n应该是整数,否则出现无限循环。 系统默认的循环次数为256次。可设置系统 变量$RecursionLimit 的值修改这个缺省值。
例3 定义分段函数 定义分段函数 1、使用约束条件控制定义范围 y1[x_]:=3-Sqrt[-x]/;x<0 y1[x_]:=x^2
2、使用If 条件语句定义分段函数 y2[x_]:=If[x<0,3-Sqrt[-x],x^2,100]
3、使用Which条件语句定义分段函数 如: Which[x==2,1,x>3,3,True,0]
例3 定义分段函数 y[x_]:=Which[x<=0,0,x<=1,x^2,x<=2,1,x<=3,3-x,True,0]
基本逻辑运算符有: Implies[p,q]等价于 !p||q.
个人所得税的纳税问题 1、实际背景 税法规定:公民的个人工资、薪金应依法纳税。所得税的计算办法为:在每个人的月收入中超过800元以上的部分应该纳税。应纳税款实行分段累积税率,按下列税率表计算:
若某人的月工资收入为x,请列出他应交纳的税款y与x之间的函数关系。若某人的月工资收入为x,请列出他应交纳的税款y与x之间的函数关系。
2、数学推导 • 按税法规定,当x≤800元时,不必纳税. y=0; • 当800<x≤1300元时,纳税部分是x-800. y=5%(x-800); • 当1300<x≤2800元时, y=25+10%(x-1300); • 以此类推,可以得出如下的纳税计算公式: