综合实验数值计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与统计学院
数
学
综
合
实
验
报
告
班级:2013级数学三班姓名:康萍
数 值 计 算
一、实验目的
本实验通过介绍Mathmatca 的数值计算功能,它的特点是准确计算与数值计算相结合,能够通过可选参数提高计算精度,学习包括数据的拟合及插值、数值积分与方程的近似解、极值问题、最优化与数理统计方面的内容。
二、实验环境
基于Windows 环境下的Mathematica7.0软件与Mathematica9.0软件。
三、实验的基本理论和方法
1、 Mathmatica 提供了进行数据拟合的函数:
Fit[data,funs,vars] 对数据data 用最小二乘法求函数表funs 中各函数的一个线性组合作为所求的近似解析式,其中vars 是自变量或自变量的表。
Fit[data, {
}x ,1, x ] 求形如bx a y +=的近似函数式。
Fit[data, {
}2,,1x x , x ] 求形如2cx bx a y ++=的近似函数式。
Fit[data, {
}xy y x ,,,1, {}y x ,] 求形如dxy cy bx a y +++=的近似函数式。
2、 函数InterpolatingPolynomial 求一个多项式,使给定的数据是准确的函数值,其调用格式如下:
InterpolatingPolynomial[{ ,,21f f },x] 当自变量为1,2,…时的函数值为 ,,21f f 。
InterpolatingPolynomial[{ ),,(),,(2211f x f x },x] 当自变量为i x 时的函数值为i f
InterpolatingPolynomial[{}}},,,,{,{1111 ddf df f x ,x] 规定点i x 处的函数值。
3、 求定积分的数值解有两种方法:
使用N[Integrate[f,{x,a,b}],n]或使用NIntegrate[f,{x,a,b}]前者首先试图求符号然后再求近似解,后者使用数值积分的直接求近似解。
究竟选用哪一个,这需要首先了解两者各自的特点。
前者首先试图求符号解,当然花费更多的时间,但安全可靠。
后者使用数值积分的直接求近似解,节约运行时间,但可靠性就差了。
NIntegrate[f,{max min ,,x x x },{ max min ,,y y y },…]是标准形式而且允许积分区间端点是奇异点。
如果积分区间内部有奇异点,积分区间内部的奇异点不能被识别,需要明确指出:
NIntegrate[f,{max 21min ,,,,,x x x x x }],其中,,,21 x x 是奇异点。
NIntegrate 有控制计算精度的可选参数:
WorkingPrecision 内部近似计算使用的数字位数(默认值为16,等于系统变量SMachinePrecision 的值)。
AccuracyGoal 计算结果的绝对误差(默认值为Infinity )。
PrecisionGoal 计算结果的相对误差(默认值为Automatic 一般比WorkingPrecision 的值小10)。
这3个参数都可以缺省或重新设置,后两个值之一可以为Infinity ,表示使用该参数,只使用另一个,一般第一个应该大于后两个。
MaxPoints 计算时选取的被积函数的最大样本数(默认值为Automatic )。
MaxRecursion 积分区域递归子划分的最大个数(默认值为6)。
MinRecursion 积分区域递归子划分的最小个数(默认值为0)。
SingularityDepth 积分区间端点处变量变化前使用的递归子划分个数(默
认值为4)。
4、 求数值的和、积的函数
NSum[f,{i,imin,imax,di}] 求通项为f 的和的近似值。
NProduct[f, {i,imin,imax,di}] 求通项为f 的积的近似值。
5、 函数Nsolve 用于求代数方程(组)的全部近似解,其调用格式如下: Nsolve[eqns,vars,n] 其中可选参数n 表示结果有n 位的精度。
能解类型广泛的方程(组)的是FindRoot ,大多数情况下它使用牛顿迭代法,无法求出符号导数时用正割法,其调用格式如下:
FindRoot[eqn,{x, 0x }] 从0x 出发求未知量x 的方程eqn 的一个解。
FindRoot[eqn,{x, 0x ,x,min,xmax}] 如果超出区间[xmin,xmax]则停止寻找。
FindRoot[eqn,{x, {0x ,1x }}] 当方程无法求出符号导数时必须给出两个初值
0x ,1x 。
FindRoot[{eqn1,eqn2,…},{x, 0x },{0,y y }, …] 求方程组的一个解。
如果在参数中出现复数,则求复数解。
方程的标准形式为方程的右边为0,这时可以输入方程左边的表达式,等号与0都可以省略。
6、 函数FindMinimum 寻找一个函数的极小值点,其调用格式如下:
FindMinimum[},{,0x x f ] 从0x 出发求未知量x 的函数f 的一个极小值点和极小
值。
FindMinimum[}}],{,{,10x x x f ] 当函数无法自动求出符号函数时,必须给出两个初值10,x x 。
FindMinimum[ },,{},,{,00y y x x f ] 求多元函数的一个极小值点和一个极小值。
7、 ConstrainedMin[f,{ineqns},{x,y,…}] 在不等式约束的区域上求多元线性函数的最小值。
ConstrainedMax[f,{ineqns},{x,y,…}] 求最大值。
其中约定的所有自变量都非负,不等式可以使用各种不等号和等号。
如果系数都是整数或分数,则答案也是整数或分数。
8、SampleRange[data] 求表data 中数据的极差(最大值减最小值)。
Median[data] 求中值。
Mean[data] 求平均值∑=n
i i x n 1
1。
Variance[data] 求方差(无偏估计)()
2
1
11∑=--n
i i x x n 。
StandardDeviation[data] 求标准差(无偏估计)()
2
1
11∑=--n
i i x x n 。
VarianceMLE[data] 求方差()
2
1
1∑=-n
i i x x n 。
StandardDeviationMLE[data] 求标准差(无偏估计)()
2
1
1∑=-n
i i x x n 。
CentralMoment[data,k] 求k 阶中心矩()
k
n
i i x x n ∑=-1
1。
BinomialDistribution[p] Bernoulli 分布。
BinomialDistribution[n,p] 二项分布。
GeometricDistribution[p] 几何分布。
HypergeometricDistribution[n,M,N] 超几何分布。
PoissonDistribution[λ] Poisson 分布。
NormalDistribution[σμ,] 正态分布。
ChiSquareDistribution[n] 2χ分布。
UniformDistribution[min,max] 均匀分布。
ExponentialDistribution[λ] 指数分布。
StudentTDDistribution[n] t 分布。
FRatioDistribution[21,n n ] F 分布。
GammaDistibution [λ,r ] Γ分布。
9、MeanCI[data,KnowVariance →Var] 已知方差Var,由数据表data 求总体数学期望的置信区间(基于正态分布)。
MeanCI[data] 由数据表data 求总体数学期望的置信区间(方差未知,基于t 分布)。
10、MeanTest[data, μ,KnownVariance →Var ] 已知方差Var ,由数据表data 检验总体数学期望μ,求出P 值。
MeanTest[data, μ] 方差未知,由数据表检验总体数学期望μ,求出P 值。
四、实验的内容和步骤及得到的结果和结果分析
实验一 数据拟合与插值
实验1 数据拟合 1.1、实验内容:
已知一组数据{19.1,76.3}、{25,77.8}、{30.1,79.25}、{36,80.8}、{40,82.35}、{45.1,83.9}、{50,85.1},求其函数解析式,并绘制出图形。
1.2实验步骤
在Mathematica 中输入语句如下
1.3实验结果
1.4结果分析
这组数据的近似函数解析式为y=70.5723 +0.291456 x,通过使用一次函数得到了很理想的拟合。
2.1 实验内容:
{0.1,5.1234},{0.2,5.3057},{0.3,5.5687},{0.4,5.9378},{0.5,6.4337},{0.6,7. 0978},{0.7,7.9493},{0.8,9.0253},{0.9,10.3627},求其函数解析式,并绘制出图形。
2.2实验步骤
在Mathematica中输入语句如下:
2.3实验结果
2.4结果分析
这组数据的近似函数解析式为y= 5.30661 -1.83196 x+8.17149 x2,通过使用二次函数得到了很理想的拟合。
3.1实验内容:已知数据表
x 0.00 0.15 0.31 0.50 0.60 0.75
y 1.00 1.004 1.031 1.117 1.223 1.422 求4次拟合多项式,并绘图进行比较。
3.2 实验步骤:在Mathematica中输入语句如下
3.3、实验结果:
3.4、结果分析
拟合多项式为1.02587 -7.53296 x+65.6478 x2-162.547 x3+119.015 x4 4.1实验内容:二元拟合
4.2 实验步骤:在Mathematica中输入语句如下:
4.3实验结果:
4.4 结果分析
首先生成二元函数xy x -+51,10,10≤≤≤≤y x 的一个数据表,然好由这些数据反过来求二元函数。
说明Fit 函数可以求解多元问题。
使用函数Chop 去掉系数很小的项,以此消除误差。
5.1 实验内容:使用初等函数的组合进行拟合 5.2 实验步骤:在Mathematica 中输入语句如下:
5.3 实验结果:
5.4 结果分析:
在进行数据拟合时,第二个参数使用了几个初等函数,说明可以任意选用函数组成函数表。
实验2 插值法构造近似函数
1.1 实验内容:由已知条件求多项式
1.2 实验步骤:在Mathematica中输入语句如下
1.3 实验结果:
1.4 结果分析:
输出结果表明,所得答案是准确结果,而不是近似函数,ln[30]是给出当x=1时的函数值和一、二阶导数值,由3个条件得到一个二次多项式。
2.1 实验内容:生成插值函数及其多项式
2.2 实验步骤:在Mathematica中输入语句如下
2.3 实验结果:
2.4 结果分析:
其中插值函数f的定义域是[19.1,50],由图形可以看出,给定的数据点在函数曲线上。
3.1实验内容:已知x=0,2,3,5,6时的函数值为y=1,3,2,5,6.求插值多项式并绘图。
3.2 实验步骤:在Mathematica中输入语句如下:
3.3 实验结果
3.4 结果分析
插值多项式为1+(1+(-(2/3)+(3/10-11/120 (-5+x)) (-3+x)) (-2+x)) x。
4.1 实验内容:生成插值函数及其多项式。
4.2 实验步骤:在Mathematica中输入语句如下:
4.3 实验结果
4.4 结果分析:
以上生成插值函数时,因为数据太少,因此设置插值多项式的次数为2,其中f1与f2的区别是,后者的自变量取默认值。
通过实验说明了给定数据与对应关系,同时说明已知点处的近似函数值等于给定的值。
5.1 实验内容:生成插值函数及其多项式。
5.2 实验步骤:在Mathematica中输入语句如下
5.3 实验结果:
5.4 结果分析
先生成一个二元近似函数,再使用FunctionInterpolation由复合函数生成一个新的近似函数,用以简化复合函数的计算过程,同时绘制出复合函数与它的近似函数图形,图象显示两者相差不大。
实验二数值积分与方程的近似解
实验1 数值积分
1.1 实验内容:有奇异点的积分
1.2 实验步骤:在Mathematica中输入语句如下
1.3实验结果:
1.4结果分析:
被积函数在x=0时分母为0,x=0是奇异点。
如果给出的点不是奇异点,也不影响计算结果。
2.1实验内容:可选参数比较
2.2实验步骤:在Mathematica中输入语句如下
2.4结果分析:虽然ln[6]表明可以设置很高的精度参数,但显然不如使用ln[5]简便。
3.1实验内容:可选参数比较
3.2实验步骤:在Mathematica中输入语句如下
3.3 实验结果:
3.4 结果分析:
被积函数在x=0附近变化剧烈,使用MaxRecursion的默认值6不行,在ln[1]中设置它的值为10后解决。
第二种解决问题的方法是插入分点,将积分区间分成三段,如ln[2]所示。
4.1 实验内容:求数值的和与积
4.2 实验步骤:在Mathematica中输入语句如下
4.4 结果分析:
如果能求准确值,应当首先求准确值再用N求近似值,这样得到的结果精度比直接用NSum的高。
实验2 方程(组)的近似值
1.1 实验内容:有奇异点的积分
1.2 实验步骤:在Mathematica中输入语句如下
1.3 实验结果:
1.5 结果分析:
x^5−2∗x+1=0的解为x=1.00.方程组x^2+x^2=1,x^3−x=0的解为x=0.826031,y=0.563624。
2.1 实验内容:解方程组
2.2实验步骤:在Mathematica中输入语句如下
2.3 实验结果:
2.4 结果分析:
ln[9]和ln[10]说明,取不同的初值可能得到不同的解。
Ln[11]是解方程组,已经不是代数方程了。
Ln[12]求指定区间内的解失败,仍输出一个结果,但不是
解。
Ln[13]是给出两个初值的例子,此例如果仅给一个初值则失败。
实验三极值问题
实验1 极值问题
1.1 实验内容:求函数的极小值。
1.2 实验步骤:在Mathematica中输入语句如下
1.3 实验结果:
1.4 结果分析:
ln[20]是求函数的极大值点,因为没有求极大值的函数,改求-f的极小值。
Ln[21]是求多元函数的极小值。
实验2 线性规化
1.1 实验内容:多元线性规划。
1.2 实验步骤:在Mathematica中输入语句如下
1.3 实验结果:
1.4 结果分析:
ln[27]说明即使不等式使用严格不等式号,答案仍取在边界上。
在ln[28]中系数使用小数,则答案也是小数形式的。
Ln[29]说明可以使用等号,但必须键入“= =”。
2.1 实验内容:非正常的多元线性规划。
2.2 实验步骤:在Mathematica中输入语句如下
2.3 实验结果:
2.4 结果分析
Ln[1]实质上有无穷多个解,但没有警告信息。
Ln[2]无解,返回结果是原来的输入式。
Ln[3]已知区域无界,没有最大值,如果在无界区域上有最大最小值,还是能求出来的。
3.1 实验内容:自变量和约束不等式较多时的多元线性规划。
2.2 实验步骤:在Mathematica中输入语句如下
3.3 实验结果:
3.4 结果分析
Ln[2]有无穷多解,仍没有警告出现。
Ln[3]无解。
Ln[1]为正常情况,复杂的系数矩阵可以由数据文件读入。
实验四数理统计
实验1 样本的数字特征
1.1、实验内容:一元数理统计的基本计算。
1.2、实验步骤:在Mathematica中输入语句如下
1.3、实验结果:
1.4、结果分析:
所给样本的样本容量为7,其中样本的最小值为3.8,最大值为6.6,中值为6,平均值为6.,方差(无偏估计)为0.962857,标准差(无偏估计)为0.981253.
2.1、实验内容:求多元数理统计的基本计算。
2.2、实验步骤:在Mathematica中输入语句如下
2.3、实验结果
2.4、结果分析:样本容量为4,中值为{1.185,2.125,
3.245},平均值为{1.1925,2.14,3.125},方差为{0.00755833,0.0200667,0.0137667},2阶中心矩为{0.00566875,0.01505,0.010325},z的协方差为0.0093,y与z的相关系数为0.0521435,x的自相关系数为1.。
实验2 常用分布的计算
1.1、实验内容:二项分布的各种计算。
1.2、实验步骤:在Mathematica中输入语句如下
1.3实验结果
1.4、结果分析
二项分布的均值为nb,方差为n(1-p)p,特征函数为n
it p
-。
当二项
1(+
p)
e
分布中n=10,p=0.3时,点4处分布b的密度值为0.200121,点3.9处分布函数值为0.649611,点4处的分布函数值为0.849732,方差为2.1.
2.1、实验内容:离散分布的例子。
2.2、实验步骤:在Mathematica中输入语句如下
2.3、实验结果
2.4、结果分析
超几何分布(n,M,N
)的均值为
N
Mn
,方差为
(
)
N
N
N
n
N
M
Mn
)
1
(
1
+
-
+
-
⎪
⎭
⎫
⎝
⎛
-。
参数为5
的泊松分布在点2处的密度值为
5
2
25
e
,点20处的密度值为7
10
64121
.2-
⨯。
3.1、实验内容:(1)()1,0N-ξ,求()()()1
1
,
96.1
,
96.1<
<
-
-
≤
≤ξ
ξ
ξp
p
p。
(2)()5.0,8N-ξ,求()()9
7
,
10≤
<
≤ξ
ξp
p
3.2、实验步骤:在Mathematica中输入语句如下
3.3、实验结果
3.4、结果分析
(1)()()0249979.096.1,975002.096.1=-≤=≤ξξp p ,()81859.011=≤≤-ξp (2)()()9545.097,999968.010=≤<=≤ξξp p
4.1实验内容:绘制2χ分布在n 分别为1,5,15时的分布密度函数图。
4.2、实验步骤:在Mathematica 中输入语句如下
4.3、实验结果
4.4、结果分析:
当参数为1时,函数图为蓝色分支;当参数为5时,函数图为红色分支;当参数为15时,函数图为黄色分支。
可见,参数越大,图像越“矮胖”,参数越小,图像越“高瘦”。
实验3 区间估计
1.1、实验内容:已知某钢铁厂的铁水含炭量(%)服从正态分布,现测得5炉铁水的含炭量分别是:4.28,4.4,4.42,4.35,4.37.如果已知标准差108.0=σ,求铁水平均含炭量的置信区间。
1.2、实验步骤:在Mathematica中输入语句如下
1.3、实验结果
根据所做程序,实验没有给出一个的正确的置信区间。
1.4、结果分析
本机所装Mathematica程序中没有相应的外部函数。
实验4 回归分析
1.1、实验内容:某食品厂使用自动裝罐机生产罐头,每罐标准质量是500g,标准差为10g,现抽取10罐,测的质量(单位:g)分别为495,510,505,498,503,492,502,512,497,506,假定罐头的质量服从正态分布,显著性水平为0.05,问装罐机工作是否正常?
1.2、实验步骤:在Mathematica中输入语句如下
1.3、实验结果
根据所做程序,实验没有得出一个的正确的假设检验。
1.4、结果分析
本机所装Mathematica程序中没有相应的外部函数。
五、心得体会
之前在数值分析、常微分方程、以及运筹学等课程中学习了很多关于数值计算方面的问题,但是之前一直都是笔算进行的。
有时候问题特别复杂,或是题设特别多的时候,总给人一种无从下手的感觉,我们必须花费大量的时间去练习求极限、导数和积分的技能,需要死背大量的公式,这些重复劳动的技能令人厌烦,在挤占理解数学概念和理论方面所花时间的同时,还直接影响了我们的学习兴趣。
但这次通过做数值分析的实验,我了解了很多关于数值分析编程方面的知识,而且,无论题设多复杂,题目多么难,只要会调用相关的函数,并编写正确的调用格式,就会在极短的时间内得到我们所想要的结果。
这无疑节省了我们很多时间,而且通过这次实验让我对计算数学产生了一定的兴趣。
通过计算机的辅助,我们可以解决很多实际问题中笔算明显存在费时费力的问题,快速而又准确的高效率无疑是一项极有意义的工作。
在实验过程中还是存在很多问题,如常微分方程的求解上,编程存在一定的问题,导致一直运行不出来结果,但是在日后的学习中,我会继续寻找问题的根源,尽早解决它。
还有在数理统计的计算方面,由于学校机房的Mathematic7.0与我自己电脑上的Mathetivca9.0自带的程序包中缺乏实现统计计算的一些外部函数,导致在数理统计模块中,无法对总体数学期望与总体方差的区间进行估计,没能对总体数学期望与总体方差的假设进行检验。
在做回归分析模型时也未能生成回归分析报表。
虽然在做的过程中受到了很大的阻碍,最终没能达到自己预期的效果,但是单日后的学习中,我会继续思考能否在不用调用外部函数的条件下,用其他方法快速、准确的求出其结果。
虽然机械可以代替人做重复的、繁重的工作,但不如人灵活,譬如在没有相
_
关的调用函数时,问题便无从下手。
Mathematica的符号功能虽然强大,能代替人解数学教材中的绝大多数计算题,但很多时候都没有人的思维灵活。
所以,在解决一个问题时,首先应该自己思考清楚,真正把问题想清楚了,才能运用正确的方法去解决,计算机只是一个辅助工具,是为了让我们能更快速的得出答案,节约时间,并不能代替我们去思考。