数学建模迭代实验报告
数学建模实验报告
数学建模实验报告一、实验目的和背景本次实验旨在运用数学建模方法,解决一个与实际生活相关的问题。
通过建立数学模型,分析问题,提出解决方案,并通过实验数据验证模型的可行性和准确性。
二、实验内容本次实验的题目是“公司送货员最优路径规划”。
公司有多名送货员需要在城市中进行货物的配送工作。
公司希望通过合理的路径规划,使得送货员能够在最短的时间内完成所有的配送任务。
在实验中,需要考虑的主要因素包括送货员之间的配送范围、道路交通状况、道路长度等。
三、实验步骤1.收集相关数据:收集城市道路网络的地理数据,包括道路长度、道路交通状况等信息。
2.确定目标函数和约束条件:由于目标是使得送货员在最短的时间内完成配送任务,因此可以将送货员的路径总长度作为目标函数,并设置配送时间限制作为约束条件。
3.建立数学模型:根据收集到的数据和确定的目标函数、约束条件,建立数学模型,将问题转化为一个最优化问题。
4.进行求解:使用数学建模常见的求解方法,如遗传算法、模拟退火算法等,对数学模型进行求解,得到最优的路径规划方案。
5.实验验证:将求解得到的路径规划方案应用于实际情境中,通过实践进行验证,观察实际效果与模型预测结果的一致性。
四、实验结果与分析通过对数学模型进行求解,得到了送货员的最优路径规划方案。
将该方案应用于实际情境中,观察实际效果与模型预测结果的一致性。
通过与其他非最优路径规划方案进行对比,可以发现,最优路径规划方案能够使得送货员在最短的时间内完成配送任务,提高工作效率。
五、结论和展望本次实验成功地运用了数学建模方法,解决了公司送货员最优路径规划问题。
通过建立数学模型,可以快速地得到最优的路径规划方案,提高了送货员的工作效率。
未来可以进一步改进模型,考虑更多实际情况,如车辆限行、路况实时变化等因素,提供更加精确和实用的路径规划方案。
总结:本次实验通过对公司送货员最优路径规划问题的建模和求解,展示了数学建模的应用价值和解决问题的能力。
数学建模实验报告
数学建模实验报告1.流⽔问题问题描述:⼀如下图所⽰的容器装满⽔,上底⾯半径为r=1m,⾼度为H=5m,在下地⾯有⼀⾯积为B0.001m2的⼩圆孔,现在让⽔从⼩孔流出,问⽔什么时候能流完?解题分析:这个问题我们可以采⽤计算机模拟,⼩孔处的⽔流速度为V=sqrt[2*g*h],单位时间从⼩孔流出的⽔的体积为V*B,再根据⼏何关系,求出⽔⾯的⾼度H,时间按每秒步进,记录点(H,t)并画出过⽔⾯⾼度随时间的变化图,当⽔⾯⾼度⼩于0.001m 时,可以近似认为⽔流完了。
程序代码:Methamatic程序代码:运⾏结果:(5)结果分析:计算机仿真可以很直观的表现出所求量之间的关系,从图中我们可以很⽅便的求出要求的值。
但在实际编写程序中,由于是初次接触methamatic 语⾔,对其并不是很熟悉,加上个⼈能⼒有限,所以结果可能不太精确,还请见谅。
2.库存问题问题描述某企业对于某种材料的⽉需求量为随机变量,具有如下表概率分布:每次订货费为500元,每⽉每吨保管费为50元,每⽉每吨货物缺货费为1500元,每吨材料的购价为1000元。
该企业欲采⽤周期性盘点的),(S s 策略来控制库存量,求最佳的s ,S 值。
(注:),(S s 策略指的是若发现存货量少于s 时⽴即订货,将存货补充到S ,使得经济效益最佳。
)问题分析:⽤10000个⽉进⾏模拟,随机产⽣每个⽉需求量的概率,利⽤计算机编程,将各种S 和s 的取值都遍历⼀遍,把每种S,s的组合对应的每⽉花费保存在数组cost数组⾥,并计算出平均⽉花费average,并⽤类answer来记录,最终求出对应的S和s。
程序代码:C++程序代码:#include#include#include#include#define Monthnumber 10000int Need(float x){int ned = 0;//求每个⽉的需求量if(x < 0.05)ned = 50;else if(x < 0.15)ned = 60;else if(x < 0.30)ned = 70;else if(x < 0.55)ned = 80;else if(x < 0.75)ned = 90;else if(x < 0.85)ned = 100;else if(x < 0.95)ned = 110;else ned = 120;return ned;}class A{public:int pS;int ps;float aver;};int main(){A answer;answer.aver=10000000;//int cost[Monthnumber+1]={0}; float average=0;int i;float x;int store[Monthnumber];//srand((int)time(0));for(int n=6;n<=12;n++){// int n=11;int S=10*n;for(int k=5;k{// int k=5;int s=k*10;average=0;int cost[Monthnumber+1]={0};for(i=1;i<=Monthnumber;i++){store[i-1]=S;srand(time(0));x=(float)rand()/RAND_MAX; //产⽣随机数//cout<<" "<//cout<int need=Need(x);if(need>=store[i-1]){cost[i]= 1000*S + (need - store[i-1])*1500 + 500;store[i]=S;}else if(need>=store[i-1]-s){cost[i]=1000*(need+S-store[i-1]) + 50*(store[i-1]-need) + 500; store[i]=S;}else{cost[i]=(store[i-1]-need)*50;store[i]=store[i-1]-need;}average=cost[i]+average;}average=average/Monthnumber;cout<<"n="<cout<<"花费最少时s应该为:"<cout<<"平均每⽉最少花费为:"<}运⾏结果:结果分析:⽤计算机模拟的结果和⽤数学分析的结果有⼀定的差异,由于计算机模拟时采⽤的是随机模型⽽我⽤time函数和rand函数产⽣真随机数,所以在每次的结果上会有所差异,但对于⼀般的⽣产要求亦可以满。
数学建模基础实验报告(3篇)
第1篇一、实验目的本次实验旨在让学生掌握数学建模的基本步骤,学会运用数学知识分析和解决实际问题。
通过本次实验,培养学生主动探索、努力进取的学风,增强学生的应用意识和创新能力,为今后从事科研工作打下初步的基础。
二、实验内容本次实验选取了一道实际问题进行建模与分析,具体如下:题目:某公司想用全行业的销售额作为自变量来预测公司的销售量。
表中给出了1977—1981年公司的销售额和行业销售额的分季度数据(单位:百万元)。
1. 数据准备:将数据整理成表格形式,并输入到计算机中。
2. 数据分析:观察数据分布情况,初步判断是否适合使用线性回归模型进行拟合。
3. 模型建立:利用统计软件(如MATLAB、SPSS等)进行线性回归分析,建立公司销售额对全行业的回归模型。
4. 模型检验:对模型进行检验,包括残差分析、DW检验等,以判断模型的拟合效果。
5. 结果分析:分析模型的拟合效果,并对公司销售量的预测进行评估。
三、实验步骤1. 数据准备将数据整理成表格形式,包括年份、季度、公司销售额和行业销售额。
将数据输入到计算机中,为后续分析做准备。
2. 数据分析观察数据分布情况,绘制散点图,初步判断是否适合使用线性回归模型进行拟合。
3. 模型建立利用统计软件进行线性回归分析,建立公司销售额对全行业的回归模型。
具体步骤如下:(1)选择合适的统计软件,如MATLAB。
(2)输入数据,进行数据预处理。
(3)编写线性回归分析程序,计算回归系数。
(4)输出回归系数、截距等参数。
4. 模型检验对模型进行检验,包括残差分析、DW检验等。
(1)残差分析:计算残差,绘制残差图,观察残差的分布情况。
(2)DW检验:计算DW值,判断随机误差项是否存在自相关性。
5. 结果分析分析模型的拟合效果,并对公司销售量的预测进行评估。
四、实验结果与分析1. 数据分析通过绘制散点图,观察数据分布情况,初步判断数据适合使用线性回归模型进行拟合。
2. 模型建立利用MATLAB进行线性回归分析,得到回归模型如下:公司销售额 = 0.9656 行业销售额 + 0.01143. 模型检验(1)残差分析:绘制残差图,观察残差的分布情况,发现残差基本呈随机分布,说明模型拟合效果较好。
数学建模迭代实验报告(新)
数学建模迭代实验报告(新)⾮线性迭代实验报告⼀、实验背景与实验⽬的迭代是数学研究中的⼀个⾮常重要的⼯具,通过函数或向量函数由初始结点⽣成迭代结点列,也可通过函数或向量函数由初值(向量)⽣成迭代数列或向量列。
蛛⽹图也是⼀个有⽤的数学⼯具,可以帮助理解通过⼀元函数由初值⽣成的迭代数列的敛散性,也帮助理解平衡点(两平⾯曲线交点)的稳定性。
本实验在Mathematica 平台上⾸先利⽤蛛⽹图和迭代数列研究不动点的类型;其次通过蛛⽹图和迭代数列研究Logistic 映射,探索周期点的性质、认识混沌现象;第三通过迭代数列或向量列求解⽅程(组)⽽寻求有效的求解⽅法;最后,利⽤结点迭代探索分形的性质。
⼆、实验材料2.1迭代序列与不动点给定实数域上光滑的实值函数)(x f 以及初值0x ,定义数列)(1n n x f x =+, ,2,1,0=n (2.2.1) }{n x 称为)(x f 的⼀个迭代序列。
函数的迭代是数学研究中的⼀个⾮常重要的思想⼯具,利⽤迭代序列可以研究函数)(x f 的不动点。
对函数的迭代过程,我们可以⽤⼏何图象来直观地显⽰它——“蜘蛛⽹”。
运⾏下列Mathematica 程序:Clear[f]f[x_] := (25*x - 85)/(x + 3); (实验时需改变函数) Solve[f[x]==x , x] (求出函数的不动点)g1=Plot[f[x], {x, -10, 20}, PlotStyle -> RGBColor[1, 0, 0], DisplayFunction -> Identity];g2=Plot[x, {x, -10, 10}, PlotStyle -> RGBColor[0, 1, 0], DisplayFunction -> Identity]; x0=5.5; r = {};r0=Graphics[{RGBColor[0, 0, 1], Line[{{x0, 0}, {x0, x0}}]}]; For[i = 1, i <= 100, i++,r=Append[r, Graphics[{RGBColor[0, 0, 1], Line[{{x0, x0},{x0, f[x0]}, {f[x0], f[x0]}}] }]]; x0=f[x0] ];Show[g1, g2, r, r0, PlotRange -> {-1, 20}, (PlotRange 控制图形上下范围) DisplayFunction -> $DisplayFunction] x[0]=x0;x[i_]:=f[x[i-1]]; (定义序列) t=Table[x[i],{i,1,10}]//N ListPlot[t] (散点图)观察蜘蛛⽹通过改变初值,你能得出什么结论?如果只需迭代n 次产⽣相应的序列,⽤下列Mathematica 程序: Iterate[f_,x0_,n_Integer]:=Module[{ t={},temp= x0},AppendTo[t,temp]; For[i=1,i <= n, i++,temp= f[temp]; AppendTo[t,temp]]; t ]f[x_]:= (x+ 2/x)/2; Iterate[f,0.7,10]设()x f 是⼀个定义在实数域上的实值函数,如果存在u 使得()u u f =,则称u 为()x f 的不动点。
《数学实验》实验报告——迭代法
3.线性方程组的迭代求解
给定一个 n 元线性方程组
a11 x1 a12 x 2 a1 n xn 0 a x a x a x 0 21 1 22 2 2n n am 1 x1 am 2 x 2 amn xn 0
9
观察序列,并且判断极限。 Mathematica 程序如下:
当 x0=0.1,n=10 时,运行程序得
当 x0=0.5,n=10 时,运行程序得
当 x0=0.9,n=10 时,运行程序得
当 x0=1,n=10 时,运行程序得
实验结论:
10
由以上实验可得,函数 f(x)=x/2+1/x 的极限为 1.41421
运行程序结果如下:
实验结论:
试验中假设矩阵 A 的对角元素 aii<>0,i=1,2,3,…n.令 D=diag(a11,a12,,,….ann),则可以将 方程 Ax=b 转化成 x=(U+L)x+D-1b 其中 U 为下三角阵,L 为上三角阵。如果 U+L 的行列式 最大特征值的绝对值小于 1,则线性方程组有解且唯一。
写成 Ax=b 的形式, 再将其改写成 x=M*x=f 其中 M 是 n 阶矩阵, f=(f1,f2,f3,f4….fn)T 是 n 维列向量,给定 x0,由迭代 x(n+1)=M*x^n+f,n=0,1,2,3,4…..对给定的矩阵 M 数组 f 和 初始值 x0,由 x(n+1)=M*x^n+f,n=0,1,2,3,4…..用 mathematic 可得迭代结果。 迭代程序如下:
《数学实验》实验报告
班级 实验 内容 **** 学号 **** 姓名 实验 类别 **** 成绩 实验 时间
《数学实验》实验报告——迭代法
观察序列,并且判断极限。 Mathematica 程序如下:
当 x0=0.1,n=10 时,运行程序得
当 x0=0.5,n=10 时,运行程序得
当 x0=0.9,n=10 时,运行程序得
当 x0=1,n=10 时,运行程序得
实验结论:
10
由以上实验可得,函数 f(x)=x/2+1/x 的极限为 1.41421
《数学实验》实验报告
班级 实验 内容 **** 学号 **** 姓名 实验 类别 **** 成绩 实验 时间
迭代法
自选实验
2011.6.7
实验问题:
n 元线性方程组
a11 x1 a12 x 2 a1 n xn 0 a x a x a x 0 21 1 22 2 2n n am 1 x1 am 2 x 2 amn xn 0
其中,f[x_]:=为所求迭代函数,迭代n次产生相应是序列,并观察。
(3)线性方程组的迭代求解 对给定的矩阵 M、 数组 f 和初始向量 x0, 由 X^(n+1)=Mx^n+f,n=0,1,2,3……给定的结 果 其 Matheatica 程序如下:
2
实验过程:
1.迭代序列 ( 1 ) 给 定 的 实 数 域 上 光 滑 的 实 值 函 数 f(x) 以 及 初 值 x0, 定 义 数 列 x(n+1)=f(x0),n=0,1,2,3,……. 对函数 f(x)= (25*x - 85)/(x + 3)的迭代过程,可以形象地用蜘蛛网图像来直观地显示,运 行以下程序:
2.方程求根
用迭代序列求 g(x)=x^3-2*x+1 的根,其 matheatic 程序如下:
数学建模的实验报告
数学建模实验报告姓名:学院:专业班级:学号:数学建模实验报告(一)——用最小二乘法进行数据拟合一.实验目的:1.学会用最小二乘法进行数据拟合。
2.熟悉掌握matlab软件的文件操作和命令环境。
3.掌握数据可视化的基本操作步骤。
4.通过matlab绘制二维图形以及三维图形。
二.实验任务:来自课本64页习题:用最小二乘法求一形如y=a+b x2的多项式,使之与下列数据拟合:三.实验过程:1.实验方法:用最小二乘法解决实际问题包含两个基本环节:先根据所给出数据点的变化趋势与问题的实际背景确定函数类;然后按照最小二乘法原则求最小二乘解来确定系数。
即要求出二次多项式: y=a+b x2的系数。
2.程序:x=[19 25 31 38 44]y=[19.0 32.3 49.0 73.3 97.8]ab=y/[ones(size(x));x.^2];a=ab(1),b=ab(2)xx=19:44;plot(xx,a+b*xx.^2,x,y,'.')3.上机调试得到结果如下:x = 19 25 31 38 44y=19.0000 32.3000 49.0000 73.3000 97.8000a = 0.9726b = 0.0500图形:四.心得体会通过本次的数学模型的建立与处理,我们学习并掌握了用最小二乘法进行数据拟合,及多项式数据拟合的方法,进一步学会了使用matlab软件,加深了我们的数学知识,提高了我们解决实际问题的能力,为以后深入学习数学建模打下了坚实的基础。
数学建模实验报告(二)——用Newton法求方程的解一.实验目的1.掌握Newton法求方程的解的原理和方法。
2.利用Matlab进行编程求近似解。
二.实验任务来自课本109页习题4-2:用Newton法求f(x)=x-cosx=0的近似解三.实验过程1.实验原理:把f(x)在x0点附近展开成泰勒级数f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。
大学数学实验报告----迭代(一)——方程求解
xn1 f (xn ), n 0,1,,
(1)
xn , n 0,1,, 称为 f(x)的一个迭代序列。
实验 的基 本理 论与 方法
给 定 迭 代 函 数 f(x) 以 及 一 个 初 值 x0 利 用 ( 1 ) 迭 代 得 到 数 列
xn , n 0,1,, 如果数列 xn 收敛于一个 x* ,则有
41 True 1 1 42 False 32 2 43 True 1 1 44 False 8 2 45 False 31 1 46 False 2 2 47 True 1 1 48 False 32 2 49 False 15 1 50 False 12 2 51 False 4 1 52 False 8 2 53 True 1 1 54 False 14 2 55 False 49 1 56 False 16 2 57 False 4 1 58 False 2 2 59 True 1 1 60 False 8 2 61 True 1 1 62 False 2 2 63 False 4 1 64 False 0 2 65 False 16 1 66 False 32 2 67 True 1 1 68 False 8 2 69 False 4 1 70 False 22 2 71 True 1 1 72 False 32 2 73 True 1 1 74 False 2 2 75 False 34 1 76 False 8 2 77 False 9 1 78 False 32 2 79 True 1 1 80 False 48 2 81 False 40 1 82 False 2 2 83 True 1 1 84 False 32 2
x* f (x*) .
(2)
实验六迭代(一)——方程求解mathmatic数学实验报告王文翰实验6++
实验六迭代(一)——方程求解mathmatic数学实验报告王文翰实验62010级数学云亭班数学综合实验报告——迭代(方程求解、分形、混沌、几何形状的构造)实验一:迭代(一)——方程求解一、实验的目的函数的迭代是数学研究中的一个非常重要的思想工具,本实验将探讨迭代在方程求解中的应用。
通过编程演示利用迭代求解方程(组)的近似解,深刻了解其求解过程。
还可以通过上机来增强自己的动手能力及实践创新能力。
二、实验的环境基于window系统下的Mathematica4.0软件并使用PrintScreen截图软件、Word文档、课本。
三、实验的基本理论方法使用Mathematica4.0编写程序语言并求出结果。
四、实验的内容和步骤及得到的结果和结果分析实验1.1:给定初值,迭代n次产生相应的序列。
实验内容:给定初值,迭代10次产生的序实验步骤:在Mathematica4.0输入语句如下:实验结果:结果分析:从实验结果可以看出给定初值迭代10次产生的序列结果收敛于1.41421。
)产生的迭代序列。
实验内容:取初值实验步骤:在Mathematica4.0输入语句如下:实验结果:结果分析:从实验结果可以看出给定初值利用迭代公式(5)的形式迭代10次产生的序列结果收敛于1.25992104989487316。
我们还可以发现,使用改进的迭代公式求方程的解,它的收敛速度比其他的迭代公式要快,而且随着迭代次数的增加,迭代值趋于稳定。
实验1.3:对给定的矩阵M,数组给出的迭代结果。
实验内容:不妨取,由迭代(9)迭代20次求出的迭代结果。
实验步骤:在Mathematica4.0输入语句如下:实验结果:结果分析:从实验结果可以看出,由迭代(9)给出的迭代向量列不收敛。
实验1.4:由迭代(10)()产生的迭代向量列。
实验内容:取,利用迭代(10)迭代10次产生的迭代向量列。
实验步骤:在Mathematica4.0输入语句如下:实验结果:,利用迭代(10)迭代10次产生的迭代向量列收敛于(-3.0000000000000,3.00000000000000,1.00000000000000)实验1.5:由迭代(11)()产生的迭代向量列。
19476-数学建模-代数方程组的解法实验
实验目的实验内容MATLAB2、通过实例练习用(非)线性方程组求解实际问题.实验软件1、用Matlab 软件掌握(非)线性方程组的解法,对迭代法的收敛性和解的稳定性作初步分析.1、向量和矩阵的范数.2、解线性方程组的方法介绍.3、解非线性方程(组)的方法介绍.2)、条件数的性质:a) 1)(≥A cond ;b) 对于R ∈≠)0(α,)()(A cond A cond =α; c) 对于正交阵n n R Q ⨯∈,)()()(A cond AQ cond QA cond ==;讨论如下表示含有n 个未知数、由n 个方程构成的线性方程组:)1(22112222212111212111⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a从(4)式最后一个方程解出n x ,代入它上面的一个方程解出1-n x ,并如此进行下去,即可依次将1,,x x n 全部解出,这样在),,2,1(0)(n k a k kk =≠的假设下,由上而下的消元由下而上的回代,就构成了方程组的消元法,称高斯消元法。
高斯消元法的MATLAB程序%顺序gauss消去法,gauss函数function [A,u]=gauss(a,n)for k=1:n-1%消去过程for i=k+1:nfor j=k+1:n+1%如果a(k,k)=0,则不能消去if abs(a(k,k))>1e-6%计算第k步的增广矩阵a(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j);else%a(k,k)=0,顺序gauss消去失败disp('顺序gauss消去失败');pause;exit;endendendend%回代过程x(n)=a(n,n+1)/a(n,n);for i=n-1:-1:1s=0;for j=i+1:ns=s+a(i,j)*x(j);endx(i)=(a(i,n+1)-s)/a(i,i);end%返回gauss消去后的增广矩阵A=triu(a);%返回方程组的解u=x;例1 用高斯消元法求解方程组:⎪⎪⎪⎩⎪⎪⎪⎨⎧=+++=+++=++++=+++=++++63521967414832157425421542154321542154321x x x x x x x x x x x x x x x x x x x x x x列主元素消元法的MATLAB程序%列主元gauss消去函数function [A,u]=gauss(a,n)%消去过程for k=1:n-1%选主元c=0;for q=k:nif abs(a(q,k))>cc=a(q,k);l=q;endend%如果主元为0,则矩阵A不可逆if abs(c)<1e-10disp('error');pause;exit;end%如果l不等于k,则交换第l行和第k行if l~=kfor q=k:n+1temp=a(k,q);a(k,q)=a(l.q);a(l,q)=temp;endend%计算第k步的元素值for i=k+1:nfor j=k+1:na(i,j)=a(i,j)-a(i,k)/a(k,k)*a(k,j);endendend%回代过程x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1s=0;for j=i+1:ns=s+a(i,j)*x(j); endx(i)=(a(i,n+1)-s)/a(i,i); end%返回列主元gauss消去后的增广矩阵A=triu(a);%返回方程组的解u=x;例2 用列主元素消去法重新解例1二、迭代法1、迭代法的总体思想:1)、迭代公式的构造:对线性方程组b Ax =,可以构造一个迭代公式 f BX Xk k +=++)1()1(,给出)0(X 由迭代公式的{})(k X ,如果{})(k X 收敛于*X ,那么*X 就是原方程组的解。
迭代——方程求解(mathematica数学实验报告)
0,1称为(f、迭代法函数的迭代是数学研究中的一个非常重要的思想工具,哪怕是对一个相当简单的函数进行迭代,都可以产生异常复杂的行为,并由此而衍生了一些崭新的学科分支,如分.同时,迭代在各种数值计算算法以及其它学科领域的诸多算法中处于核心的本实验的基本理论是分形几何学程序运行如下:练习2:利用迭代公式1(),0,1,...()n n g x x x n g x +=-=' 得到()^32g x x =-的迭代序列,其中01x =,10n =,程序运行如下:练习3:对给定的矩阵M ,数组f 和初始向量0x ,由迭代公式1n n x Mx f +=+得到的迭代序列如下:练习4:利用迭代公式11()x L D A X D b --=-+将方程组⎪⎩⎪⎨⎧=++=++11111111.......................................b x a x a b x a x a n nn n n n 即Ax b =改成多种等价形式x Mx f =+做迭代,观察其收敛状况。
给定(){}1,2,2,(1,1,1),(2,2,1)A =-与(){}2,1,1,(1,1,1),(1,1,2)A =--,运行结果如下:练习5:同练习4,给定(){}1,2,2,(1,1,1),(2,2,1)A =-与(){}2,1,1,(1,1,1),(1,1,2)A =--,利用迭代公式111()()x I L Ux I L D b ---=-+-对方程组Ax b =做迭代。
程序运行如下:实验结果和结果分析:对于书上给出的例题程序,要实际上机亲自操作一次,从而了解不同命令的不同作用,对于相似的命令要区分明白他们的不同之处。
这一章小的命令比较多,也比较杂,需要分门别类区分开,并且分别运行一下。
书后的练习题离不开前面的例题,要在掌握好例题的情况下,多练习一些习题,加深记忆。
Mathematica 在迭代法解方程组非常方。
迭代法实验报告
迭代法实验报告 一. 实验目的:掌握迭代方法的用处 二. 实验环境:Cfree5.0 三. 实验时间:2013年6月20日 四. 实验地点:电子信息楼1201教室 五. 实验内容:运用编程实现迭代方法可以更好的解线性方程组,得到线性方程的解。
六. 实验理论依据:高斯-赛德尔(Gauss-Seidel )迭代公式我们注意到在雅可比迭代法中并没有对新算出的分量11k x +,12k x +,,11k i x +-进行充分利用.不妨设想,在迭代收敛的条件下,我们把(1)()()()11211331111(1)()()()22112332222(1)()()()1122,111()1(1(k k k k n n k k k k n n k k k k n n n n n n nn x a x a x a x b a x a x a x a x b a x a x a x a x b a +++--⎧=---+⎪⎪⎪=---+⎪⎨⎪⎪⎪=---+⎪⎩式中第一个方程算出的11k x +立即投入到第二个方程中,代替()1k x 进行计算,当12k x +算出后代替()2k x 马上投入到第三个方程中计算,依次进行下去,这样也许会得到更好的收敛效果.根据这种思路建立的一种新的迭代格式,我们称为高斯-赛德尔(Gauss-Seidel )迭代公式,高斯=赛德尔迭代法的分量形式:(1)()()()11211331111(1)(1)()()22112332222(1)(1)(1)(1)1122,111()1(1(k k k k n n k k k k n n k k k k n n n n n n nn x a x a x a x b a x a x a x a x b a x a x a x a x b a +++++++--⎧=---+⎪⎪⎪=---+⎪⎨⎪⎪⎪=---+⎪⎩高斯-赛德尔迭代法的矩阵形式:(1)(),(0,1,2,)k k x Bx f k +=+=其中1()B D L U -=-,1()f D L b -=- B 称为高斯-赛德尔迭代矩阵,f 称为高斯-赛德尔迭代常量..七. 运行代码如下:#include"stdio.h"#include"math.h"int main(){bool pan1=true;int n,n1,n2=0,k=0;doublenum[100][100],L[100][100],U[100][100],x[100],y[100],num1=0,b[100],D[100][100],x1[200][200],x2[200][200];printf("\n");printf("*******************************高斯迭代法解如下********************************");printf("输入要输入矩阵的阶数为(按Enter 输入矩阵数字):");//输入矩阵的阶数scanf("%d",&n1);for(int i=0;i<n1;i++)//输入矩阵的数{printf("输入第%d行数字为(按Enter进入下一行的输入):",i+1);for(int j=0;j<n1;j++){scanf("%lf",&num[i][j]);}}//输入矩阵的数结束for(int i=0;i<n1;i++)//求解对角线上的矩阵数{for(int j=0;j<n1;j++){if(i==j){D[i][j]=num[i][j];L[i][j]=0;U[i][j]=0;}if(i>j){L[i][j]=-num[i][j];}if(i<j){U[i][j]=-num[i][j];}}}//求解对角线上的矩阵数结束printf("=================================输出D的矩阵为==================================");for(int i=0;i<n1;i++)//输出D矩阵 {for(int j=0;j<n1;j++){printf("%10lf",D[i][j]);}printf("\n");}printf("\n");printf("=================================输出L的矩阵为==================================");for(int i=0;i<n1;i++)//输出L矩阵{for(int j=0;j<n1;j++){printf("%10lf",L[i][j]);}printf("\n");}printf("\n");printf("=================================输出U的矩阵为==================================");for(int i=0;i<n1;i++)//输出U矩阵{for(int j=0;j<n1;j++){printf("%10lf",U[i][j]);}printf("\n");}printf("输入矩阵右端常数为(以空格隔开,按回车进行下一步):");//输入b的值for(int i=0;i<n1;i++){scanf("%lf",&b[i]);}//输入b的值结束printf("输入初始化x(0)的矩阵值(以空格隔开,按回车得到结果):");//输入x的值for(int i=0;i<n1;i++){scanf("%lf",&x2[0][i]);}while(pan1)//高斯迭代法的for语句部分 {for(int i=0;i<n1;i++){for(int j=0;j<i;j++){num1+=num[i][j]*x2[k+1][j];}for(int j1=i+1;j1<n1;j1++){num1+=num[i][j1]*x2[k][j1];}x2[k+1][i]=(b[i]-num1)/num[i][i];num1=0;}for(int i=0;i<n1;i++) {if(fabsf(x2[k+1][i]-x2[k][i])<0.002) {n2++;}}if(n2==n1){pan1=false; }else{k++;pan1=true; }}//高斯迭代法的for语句部分结束printf("迭代次数k的值为:%d\n",k);//输出迭代次数printf("输出的迭代法解的结果为:\n"); for(int i=0;i<n1;i++)//输出x的解{printf("第%d个x的值为:%lf\n",i+1,x2[k][i]);}printf("\n");}八.运行结果如下:九.实验心得:高斯=赛德尔迭代法其系数矩阵是严格对角占优的,所以高斯=赛德尔迭代法有很好的收敛性。
数学建模实验报告 (2)
3
结论 (结 果)
小结 (对 本次 实验 的思 考和 建 议) 指导教师评分(包括对实验的预习、操作和结果的综合评分) :
指导教师总评:
签名:
日期:
4
2
*表示红色的散点,蓝色表示原函数的曲线
for j=1:N Y(j+1)=Y(j)+h*feval('f',T(j),Y(j)); Y1(j+1)=Y(j)+h/2*feval('f',T(j+1),Y(j+1)); end
此处是双重迭代,根据下面这个式子迭代的,可以使得到的值更加精确
y (0) yn hf ( xn , yn ) n 1 ( k 1) h (k ) y n 1 y n [ f ( x n , y n ) f ( x n 1 , y n 1 ] 2 ( k 0 ,1, 2 , )
在命令窗输入 euler('f',0,1,1,10)得到: 把这个输入到命令窗 euler('f',0,1,1,10)就可以得到结果 euler('f',0,1,1,10) z= 1 z= 0.9182 z= 0.8562 z= 0.8077
迭代法实验报告
一、课题名称Matlab解线性方程组的迭代法二、目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤(予给的迭代次数),对迭代法敛散性的意义;4、体会初始解 x(,松弛因子的选取,对计算结果的影响三、实验要求1、体会迭代法求解线性方程组,并能与消去法做以比较;2、分别对不同精度要求,如由迭代次数体会该迭代法的收敛快慢; 54310,10,10−8722 .−s23 =ε3、对方程组2,3使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。
四、问题描述给出下列几个不同类型的线性方程组,请用适当算法计算其解。
a=[4 -1 0 0 0 0 0 0 0 0 ;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0; 0 0 0 0 -1 4 -1 0 0 0; 0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0; 0 0 0 0 0 0 0 -1 4 -1; 0 0 0 0 0 0 0 0 -1 4];b=[7 5 -13 2 6 -12 14 -4 5 -5];n=10;x=[0 0 0 0 0 0 0 0 0 0];六、实验程序设计Jacobi 迭代法function z=chap8_7(a,b,n,x)for k=1:19for i=1:ns=0;for j=1:nif j~=i,s=s+a(i,j)*x(j);endendy(i)=(b(i)-s)/a(i,i);endx=y;x;endz=x计算方程组一>>a=[4,2,-3,-1,2,1,0,0,0,0;8,6,-5,-3,6,5,0,1,0,0;4,2,-2,-1,3,2,-1,0,3,1;0,-2,1, 5,-1,3,-1,1,9,4;-4,2,6,-1,6,7,-3,3,2,3;8,6,-8,5,7,17,2,6,-3,5;0,2,-1,3,-4,2,5,3 ,0,1;16,10,-11,-9,17,34,2,-1,2,2;4,6,2,-7,13,9,2,0,12,4;0,0,-1,8,-3,-24,-8,6,3, -1];>> b=[5;12;3;2;3;46;13;38;19;-21];>> n=10;>> x=[0 0 0 0 0 0 0 0 0 0]';>> z=chap8_7(a,b,n,x);z =1.0e+012 *Columns 1 through 9-0.0809 -0.1452 -0.3955 0.8764 0.5509 0.2161 0.1732 1.9353 0.2550Column 10-1.8123计算方程组二>> a=[4 2 -4 0 2 4 0 0 ; 2 2 -1 -2 1 3 2 0; -4 -1 14 1 -8 -3 5 6;0 -2 1 6 -1 -4 -3 3; 2 1 -8 -1 22 4 -10-3; 4 3 -3 -4 4 11 1 -4;0 2 5 -3 -10 1 14 2;0 0 6 3 -3 -4 2 19];>> b=[0 -6 20 23 9 -22 -15 45];>> n=8;>> x=[0 0 0 0 0 0 0 0]';>> z=chap8_7(a,b,n,x);z =1.0e+005 *-2.6705 -4.0285 1.0957 1.5976 -0.6513 -1.7472 -0.0556 0.5478计算方程组三>> a=[4 -1 0 0 0 0 0 0 0 0 ;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4-1 0 0 0 0; 0 0 0 0 -1 4 -1 0 0 0; 0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0; 0 0 0 0 0 0 0 -1 4 -1; 0 00 0 0 0 0 0 -1 4];>> b=[7 5 -13 2 6 -12 14 -4 5 -5];>> n=10;>> x=[0 0 0 0 0 0 0 0 0 0];>> z=chap8_7(a,b,n,x);z =2.0000 1.0000 -3.0000 -0.0000 1.0000 -2.0000 3.0000 -0.0000 1.0000 -1.0000Gauss-Seidol迭代法function z=chap8_8(a,b,n,x)for k=1:19for i=1:ns=0;for j=1:i-1s=s+a(i,j)*y(j);ends1=0;for j=i+1:ns1=s1+a(i,j)*x(j);endy(i)=(b(i)-s-s1)/a(i,i);endx=y;x;endz=x计算方程组一>>a=[4,2,-3,-1,2,1,0,0,0,0;8,6,-5,-3,6,5,0,1,0,0;4,2,-2,-1,3,2,-1,0,3,1;0,-2,1,5,-1,3,-1,1,9,4;-4,2,6,-1,6, 7,-3,3,2,3;8,6,-8,5,7,17,2,6,-3,5;0,2,-1,3,-4,2,5,3,0,1;16,10,-11,-9,17,34,2,-1,2,2;4,6,2,-7,13,9,2,0,1 2,4;0,0,-1,8,-3,-24,-8,6,3,-1];>> b=[5;12;3;2;3;46;13;38;19;-21];>> n=10;>> x=[0 0 0 0 0 0 0 0 0 0]';>> z=chap8_8(a,b,n,x);z =1.0e+024 *0.0088 -0.0144 0.1171 -0.2433 -0.3164 0.1669 -0.2330 1.1938 0.0220 3.9729计算方程组二>> a=[4 2 -4 0 2 4 0 0 ; 2 2 -1 -2 1 3 2 0; -4 -1 14 1 -8 -3 5 6;0 -2 1 6 -1 -4 -3 3; 2 1 -8 -1 22 4 -10 -3; 4 3 -3 -4 4 11 1 -4;0 2 5 -3 -10 1 14 2;0 0 6 3 -3 -4 2 19];>> b=[0 -6 20 23 9 -22 -15 45];>> n=8;>> x=[0 0 0 0 0 0 0 0]';>> z=chap8_8(a,b,n,x);z =12.8578 -12.8010 4.3202 -3.8776 1.9548 -3.6841 -0.1256 1.1627计算方程组三>> a=[4 -1 0 0 0 0 0 0 0 0 ;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0; 0 0 0 0 -1 4 -1 0 0 0; 0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0; 0 0 0 0 0 0 0 -1 4 -1; 0 0 0 0 0 0 0 0 -1 4];>> b=[7 5 -13 2 6 -12 14 -4 5 -5];>> n=10;>> x=[0 0 0 0 0 0 0 0 0 0];>> z=chap8_8(a,b,n,x);z =2.0000 1.0000 -3.0000 -0.0000 1.0000 -2.0000 3.0000 -0.0000 1.0000 -1.0000七、实验结果分析直接法得到的解是理论上准确的,但是我们可以看得出,它们的计算量都是n3数量级,存储量为n2量级,这在n比较小的时候还比较合适(n<1000 , 1G/s , 15秒 , 8M),但是对于现在的很多实际问题,往往要我们求解很大的n的矩阵,而且这些矩阵往往是系数矩阵就是这些矩阵含有大量的0元素。
建模实验报告结论
一、实验背景及目的本次实验旨在通过数学建模方法,对某一实际问题进行建模与分析,以期达到对该问题有更深入的理解,并寻求解决问题的有效途径。
实验过程中,我们运用了多种数学方法,如线性回归、层次分析法、面向对象建模等,结合实际数据,对问题进行了深入研究和分析。
二、实验过程及方法1. 确定问题及目标首先,我们根据实际问题,确定了实验的目标,即通过对问题的建模与分析,寻找解决问题的有效途径。
2. 收集数据在实验过程中,我们收集了与问题相关的数据,包括历史数据、现状数据等,为后续建模与分析提供了数据支持。
3. 建立模型根据问题的性质和特点,我们选取了合适的数学模型,如线性回归模型、层次分析模型等,对问题进行了建模。
4. 模型求解与分析运用数学软件,对建立的模型进行求解,分析模型结果,验证模型的有效性。
5. 结果解释与讨论根据模型结果,对问题进行解释与讨论,提出解决问题的建议。
三、实验结果与分析1. 线性回归模型通过线性回归模型,我们对某公司销售量与行业销售额之间的关系进行了分析。
结果显示,销售量与行业销售额之间存在显著的正相关关系,说明行业销售额的变化对公司的销售量有较大影响。
2. 层次分析法运用层次分析法,我们对治理雾霾的方案进行了重要性排序。
结果表明,提高汽柴油品质、淘汰排放不达标汽车、提高洗煤率等方案在治理雾霾方面具有较高的重要性。
3. 面向对象建模通过面向对象建模,我们对食堂售饭系统进行了分析。
结果表明,该系统主要包括学生、食堂管理部门和食堂工作人员三个角色,以及办理饭卡、充卡、补办、挂失饭卡、退换饭卡、扣除饭菜等用例。
四、结论与建议1. 结论(1)通过数学建模方法,我们对实际问题进行了深入研究和分析,找到了解决问题的有效途径。
(2)线性回归模型、层次分析法和面向对象建模等方法在解决实际问题中具有较好的效果。
(3)在实验过程中,我们积累了丰富的建模与分析经验,提高了自身的数学素养和实际应用能力。
2. 建议(1)在今后的建模实验中,我们要更加注重问题的实际背景和特点,选择合适的数学模型,提高建模的准确性。
初中数学建模实验报告(3篇)
第1篇一、实验背景随着科学技术的飞速发展,数学建模作为一种重要的科学研究方法,越来越受到人们的重视。
初中数学建模实验旨在培养学生运用数学知识解决实际问题的能力,提高学生的创新思维和团队协作能力。
本实验以某市居民出行方式选择为研究对象,通过建立数学模型,分析不同因素对居民出行方式的影响。
二、实验目的1. 理解数学建模的基本概念和步骤。
2. 学会运用数学知识分析实际问题。
3. 培养学生的创新思维和团队协作能力。
4. 提高学生运用数学知识解决实际问题的能力。
三、实验方法1. 收集数据:通过网络、调查问卷等方式收集某市居民出行方式选择的相关数据。
2. 数据处理:对收集到的数据进行整理、清洗和分析,为建立数学模型提供依据。
3. 建立模型:根据数据分析结果,选择合适的数学模型,如线性回归模型、多元回归模型等。
4. 模型求解:运用数学软件或编程工具求解模型,得到预测结果。
5. 模型验证:将预测结果与实际数据进行对比,验证模型的准确性。
四、实验过程1. 数据收集:通过问卷调查的方式,收集了500份某市居民的出行方式选择数据,包括出行距离、出行时间、出行目的、出行方式等。
2. 数据处理:对收集到的数据进行整理和清洗,剔除无效数据,得到有效数据490份。
3. 建立模型:根据数据分析结果,选择多元回归模型作为本次实验的数学模型。
4. 模型求解:利用SPSS软件对多元回归模型进行求解,得到以下结果:- 模型方程:Y = 0.05X1 + 0.03X2 + 0.02X3 + 0.01X4 + 0.005X5 + 0.002X6 + 0.001X7 + 0.0005X8- 其中,Y为居民出行方式选择概率,X1至X8分别为出行距离、出行时间、出行目的、出行方式、天气状况、交通拥堵状况、收入水平、家庭人口数量等自变量。
5. 模型验证:将模型预测结果与实际数据进行对比,结果显示模型具有较高的预测准确性。
五、实验结果与分析1. 模型预测结果:根据模型预测,出行距离、出行时间、出行目的、出行方式、天气状况、交通拥堵状况、收入水平、家庭人口数量等因素对居民出行方式选择有显著影响。
迭代法实验报告
迭代法实验报告迭代法实验报告引言:迭代法是一种常见的数值计算方法,通过反复迭代逼近解的过程,来解决一些复杂的数学问题。
本实验旨在通过实际操作,深入理解迭代法的原理和应用,并通过实验数据验证其有效性。
一、实验目的本实验的主要目的有以下几点:1. 掌握迭代法的基本原理和步骤;2. 熟悉迭代法在数值计算中的应用;3. 理解迭代法的收敛性和稳定性;4. 验证迭代法在实际问题中的有效性。
二、实验原理迭代法是一种通过不断逼近解的方法,其基本原理可概括为以下几步:1. 选择一个初始值作为迭代的起点;2. 根据问题的特点和要求,构造一个递推公式;3. 通过不断迭代计算,逐步逼近解;4. 判断迭代过程是否收敛,并确定最终的解。
三、实验步骤1. 选择合适的初始值。
初始值的选择对迭代的结果有重要影响,通常需要根据问题的特点进行合理选取。
2. 构造递推公式。
根据问题的数学模型,建立递推公式,将问题转化为迭代求解的形式。
3. 进行迭代计算。
根据递推公式,进行迭代计算,直到满足收敛条件或达到预定的迭代次数。
4. 判断迭代结果。
根据实际问题的要求,判断迭代结果是否满足精度要求,并进行相应的调整和优化。
四、实验结果与分析通过实验操作,我们得到了一组迭代计算的结果。
根据实验数据,我们可以进行以下分析:1. 收敛性分析。
通过观察迭代过程中的数值变化,我们可以判断迭代法的收敛性。
如果数值逐渐趋于稳定,且与理论解的误差在可接受范围内,说明迭代法收敛。
2. 稳定性分析。
迭代法的稳定性是指在初始值变化时,迭代结果是否保持稳定。
通过改变初始值,我们可以观察迭代结果的变化情况,从而评估迭代法的稳定性。
3. 精度分析。
迭代法的精度取决于迭代过程中的误差累积情况。
通过与理论解的比较,我们可以评估迭代法的精度,并对迭代过程进行优化。
五、实验结论通过本次实验,我们深入了解了迭代法的原理和应用,通过实际操作验证了迭代法在数值计算中的有效性。
实验结果表明,迭代法在解决复杂数学问题中具有较高的准确性和稳定性,能够满足实际应用的需求。
数学建模实验报告模版
数学建模实验报告模版一、实验目的数学建模是实际问题抽象为数学模型,通过数学方法求解得到问题的答案。
本实验的目的是通过一个具体问题的建模与求解,培养学生的实际问题抽象与解决能力。
二、实验内容本次实验选择了一个实际生活中的问题进行建模与求解。
该问题是市场调查机构要对地区餐馆的顾客满意度进行调查,以评估餐馆的服务质量。
但由于资源有限,调查机构只能选择一部分顾客进行调查。
在这个问题中,我们需要确定调查的样本量大小,使其能够在一定的置信水平下准确代表整个顾客群体的意见。
三、实验步骤1.问题分析:首先,我们需要对问题进行分析,了解问题的背景和要求。
2.建立模型:根据问题的要求,我们选择了一个概率模型来描述问题。
假设顾客的满意度服从一个二项分布,即每位顾客都有可能是满意或不满意。
我们通过计算满意度的均值和方差,来代表整个顾客群体的意见。
3.数学求解:根据建立的模型,我们使用统计学方法对样本量大小进行估计,以达到一定的置信水平。
4.实验验证:最后,我们通过实验验证我们得到的样本量大小,看是否满足要求。
四、实验结果经过建模和求解,我们得到了样本量大小的估计结果。
根据我们的计算,当置信水平为95%时,我们需要调查的样本量大小为110人。
五、实验总结通过这次实验,我们学会了将实际问题抽象成数学模型,以及通过数学方法去求解这个模型。
我们也进一步了解了概率分布和统计学的知识,以及如何利用它们来进行建模和求解。
这对我们今后在实际问题中的应用具有重要意义。
在实验过程中,我们也发现了一些问题和不足之处。
例如,我们的模型可能存在一定的偏差,因为我们的假设可能与实际情况有所不同。
此外,我们的模型也有一些局限性,不适用于所有情况。
因此,在今后的学习过程中,我们需要进一步加强对数学建模的理解和应用,不断提高自己的建模能力,以更好地解决实际问题。
以上是一份关于数学建模实验的报告模板,希望对你的写作有所帮助。
实验报告的内容可根据具体实验情况进行修改和补充,以符合实际情况。
迭代法求解方程问题实验报告
迭代法求解方程问题实验报告姓名:殷伯旭 班级:信计0801班 学号:u200810065一. 实验目的运用数学知识与matlab 相结合,运用数学方法,建立数学模型,用matlab 软件辅助求解模型,解决实际问题。
二. 实验任务求方程1020x e x +-=的一个近似解,误差不超过410-,要求: 设计4种求解的迭代法,讨论其收敛性,并求出满足精度的近似解;三. 实验分析与求解题目要求设计四种迭代方法,我们考虑用书上的四种迭代思想:方法一:用Steffenson 迭代法,首先构造函数:2()10xe g x -=, 则迭代公式为:21(())k k k k k k kg x x x x +-=- 方法二:一般的迭代法,1210k k x e x +-=方法三:单点弦截法法,固定01()()()()0.25,f a b a f b f a a x x --==-, 其中端点120,a b ==,则迭代公式为:010()()()()k k k k k f x x x x x f x f x +=--- 方法四:双点弦截法法,迭代公式为:111()()()()k k k k k k k f x x x x x f x f x +--=--- 实验程序:function shiyan112%%%%%方法一: stefften 迭代x0=0.25;g0=(2-exp(x0))/10;gg0=(2-exp(g0))/10;x1=x0-(g0-x0)^2/(gg0-2*g0+x0);n1=0;while abs(x1-x0)>0.00001x0=x1;g0=(2-exp(x0))/10;gg0=(2-exp(g0))/10;x1=x0-(g0-x0)^2/(gg0-2*g0+x0);n1=n1+1;x(n1)=x1;endn1x0=x1%%%%%方法二: 一般迭代x20=0.25;x21=(2-exp(x20))/10;n2=0;while abs(x21-x20)>0.00001x20=x21;x21=(2-exp(x20))/10;n2=n2+1;endn2x20=x21%%%%%方法三: 单点弦截法x30=0.25;a=0;b=0.5;n3=0;fa=exp(a)+10*a-2;fb=exp(b)+10*b-2;x31=a-fa*(b-a)/(fb-fa);f30=exp(x30)+10*x30-2;f31=exp(x31)+10*x31-2;x32=x31-f31*(x31-x30)/(f31-f30); while abs(x32-x31)>0.00001x31=x32;f31=exp(x31)+10*x31-2;x32=x31-f31*(x31-x30)/(f31-f30);n3=n3+1;endn3x30=x32%%%%%%%方法四:双点弦截法x40=0.25;x41=0.5;n4=0;f40=exp(x40)+10*x40-2;f41=exp(x41)+10*x41-2;x42=x41-f41*(x41-x40)/(f41-f40);while abs(x42-x41)>0.00001x40=x41;x41=x42;f40=exp(x40)+10*x40-2;f41=exp(x41)+10*x41-2;x42=x41-f41*(x41-x40)/(f41-f40);n4=n4+1;endn4x40=x42运行结果:(1) 方法一: x =0.0905 ; 迭代次数: n1 = 2(2)方法二: x =0.0905 ; 迭代次数: n2 = 5(3) 方法三: x =0.0905 ; 迭代次数: n3 = 2(4) 方法四: x =0.0905 ; 迭代次数: n4 =33)实验总结通过自主学习matlab,编程能力有了较大提高,并将其应用于数值代数刚学的一种思想,在加深对该领域印象的同时对matlab有了更深一层的了解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非 线 性 迭 代 实 验 报 告一、实验背景与实验目的迭代是数学研究中的一个非常重要的工具,通过函数或向量函数由初始结点生成迭代结点列,也可通过函数或向量函数由初值(向量)生成迭代数列或向量列。
蛛网图也是一个有用的数学工具,可以帮助理解通过一元函数由初值生成的迭代数列的敛散性,也帮助理解平衡点(两平面曲线交点)的稳定性。
本实验在Mathematica 平台上首先利用蛛网图和迭代数列研究不动点的类型;其次通过蛛网图和迭代数列研究Logistic 映射,探索周期点的性质、认识混沌现象;第三通过迭代数列或向量列求解方程(组)而寻求有效的求解方法;最后,利用结点迭代探索分形的性质。
二、实验材料2.1迭代序列与不动点给定实数域上光滑的实值函数)(x f 以及初值0x ,定义数列)(1n n x f x =+,Λ,2,1,0=n (2.2.1) }{n x 称为)(x f 的一个迭代序列。
函数的迭代是数学研究中的一个非常重要的思想工具,利用迭代序列可以研究函数)(x f 的不动点。
对函数的迭代过程,我们可以用几何图象来直观地显示它——“蜘蛛网”。
运行下列Mathematica 程序:Clear[f]f[x_] := (25*x - 85)/(x + 3); (实验时需改变函数) Solve[f[x]==x , x] (求出函数的不动点)g1=Plot[f[x], {x, -10, 20}, PlotStyle -> RGBColor[1, 0, 0], DisplayFunction -> Identity];g2=Plot[x, {x, -10, 10}, PlotStyle -> RGBColor[0, 1, 0], DisplayFunction -> Identity]; x0=5.5; r = {};r0=Graphics[{RGBColor[0, 0, 1], Line[{{x0, 0}, {x0, x0}}]}]; For[i = 1, i <= 100, i++,r=Append[r, Graphics[{RGBColor[0, 0, 1], Line[{{x0, x0},{x0, f[x0]}, {f[x0], f[x0]}}] }]]; x0=f[x0] ];Show[g1, g2, r, r0, PlotRange -> {-1, 20}, (PlotRange 控制图形上下范围) DisplayFunction -> $DisplayFunction] x[0]=x0;x[i_]:=f[x[i-1]]; (定义序列) t=Table[x[i],{i,1,10}]//N ListPlot[t] (散点图)观察蜘蛛网通过改变初值,你能得出什么结论?如果只需迭代n 次产生相应的序列,用下列Mathematica 程序: Iterate[f_,x0_,n_Integer]:=Module[{ t={},temp= x0},AppendTo[t,temp]; For[i=1,i <= n, i++,temp= f[temp]; AppendTo[t,temp]]; t ]f[x_]:= (x+ 2/x)/2; Iterate[f,0.7,10]设()x f 是一个定义在实数域上的实值函数,如果存在u 使得()u u f =,则称u 为()x f 的不动点。
我们用u u →表示这件事。
如果所有附近的点在选代过程中都趋向于某个不动点,则该不动点称为吸引点,有时也称该不动点是稳定的。
如果所有附近的点在选代过程中都远离它而去,则该不动点称为排斥点,有时也称该不动点是不稳定的。
如果21)(u u f =,32)(u u f =,…,1)(u u f k =且k j uu ji ,,2,1,Λ=≠,则ku u u ,,,21Λ形成一个k 循环,用121u u u u k →→→→Λ记这个事实。
1u 称为一个k 周期点,k u u u ,,,21Λ称为一个周期轨道。
显然,不动点就是周期为1的周期点。
类似于不动点,如果所有附近的点在迭代过程中都趋向于某个周期点,则该周期点称为吸引点;如果所有附近的点在迭代过程中都远离它而去,则该周期点称为排斥点。
如果点u 最终落于某个循环之中,则称它是一个预周期点。
例如,l 是1)(2-=x x f 的预周期点。
2.2 Logistic 映射与混沌从形如()()x ax x f -=1的二次函数开始做迭代()k k x f x =+1 Λ,1,0=k (2.2.2)这里,[]4,0∈a 是一个参数。
对不同的a 系统地观察迭代(2.2.2)的行为。
Mathematica 程序:IterGeo[a_, x0_] :=Module[{p1, p2, i, pointlist = {}, v= x0, fv= a*x0*(1 - x0)},p1=Plot[ {a*x*(1 - x), x}, {x, 0, 1}, DisplayFunction -> Identity]; AppendTo[pointlist, {x0, 0}];For[i = 1, i < 20, i++, AppendTo[pointlist, {v, fv}]; AppendTo[pointlist, {fv, fv}]; v= fv; fv= 4*v*(1 - v)];p2=ListPlot[pointlist, PlotJoined -> True, DisplayFunction -> Identity];Show[{p1, p2}, DisplayFunction -> $DisplayFunction] ]IterGeo[2.6, 0.3]将区间(0,4]以某个步长a ∆离散化,对每个离散的a 值做迭代(2.2.2),忽略前50个迭代值,而把点()51,x a ,()52,x a ,…,()100,x a 显示在坐标平面上,最后形成的图形称为Feigenbaum 图。
Mathematica 程序:Clear[f, a, x]; f[a_, x_] := a*x*(1 - x);x0 = 0.5; r = {}; Do[For[i = 1, i <= 300, i++, x0 = f[a, x0];If[i > 100, r = Append[r, {a, x0}]] ],{a, 3.0, 4.0, 0.01}]; ListPlot[r]从极限分支点之后,Feigenbaum 图显得很杂乱,似乎没有任何规律。
实际上,对任何初始值做迭代都会得到同样的结果。
这就是所谓的混沌现象。
迄今为止,混沌并没有确切的数学定义,但它具有一些基本的特性,如对初值的敏感性以及某种无序性,由此产生类似于随机的现象。
所谓一个迭代对初值是敏感的意思是,无论两个初值如何接近,在迭代过程中它们将渐渐分开。
这是任何一个混沌系统都具有的特性之一,这种特性使得混沌系统会产生似乎是随机的、没有规律的现象。
在Logistic 映射中,取4=a ,任取两个初值使得它们之间的差的绝对值不超过0.l ,运行下列程序,观察结果后回答问题:在迭代过程中它们逐渐分开吗?如果两个初值之间的差的绝对值不超过0.01,0.001,结果会如何?由此得出,函数()()x x x f -=14的迭代对初值是否敏感?其Mathematica 程序:Sensitivity[n_Integer, x01_, x02_] :=Module[{pilist = {}, i, temp1=x01, temp2=x02},For[i=1, i <= n, i++, temp1=4*temp1*(1-temp1); temp2=4*temp2*(1-temp2);AppendTo[pilist, {i, temp2-temp1}]; ];ListPlot[pilist, PlotJoined -> True] ]Sensitivity[50, 0.1, 0.1001]一个简单的、确定的二次选代可以产生非常复杂的、看似随机的行为。
但是,混沌不等于随机。
实际上,在混沌区域之内,蕴涵着许多有序的规律。
这正验证了哲学上的名言:有序中包含了无序,无序中包含着有序。
其Mathematica 程序:distrib[n_Integer,m_Integer,x0_]:=Module[{i,temp=x0,g1,f,k,c=Table[0,{i,m}]},For[i=1,i n,i++,temp=4*temp*(1-temp);If[temp1,c[[m]]++,c[[Floor[temp*m]+1]]++]];f[k_]:=Graphics[{GrayLevel[0.5],Rectangle[{k-0.5,0},{k+0.5,c[[k]]}]}]; g1=Table[f[k],{k,1,m}];Show[g1,AxesTrue,PlotLabel->"x0=0.4"];]n=100;m=20;x0=0.4;distrib[n,m,x0]另一个说明混沌不是随机的事实是,混沌区域有许多有序的窗口。
将这些窗口放大可以看到令人振奋的自相似现象,同时还有许多周期轨道。
在 Feigenbaum 图的右部,你应当能看到一个由三条曲线穿过的空白带,它是一个“周期为 3的窗口”。
你能找到其它窗口吗?它们的周期是什么?窗口里有什么图案?这些窗口跟上题的第二问中的k 周期轨道有什么关系?运行下列程序,听一听混沌的声音PlayChaos[n_Integer, x0_] :=Module[{t = {}, i, temp = x0},For[i = 1, i <= n, i++, temp = 4*temp*(1 - temp); AppendTo[t, Floor[temp*100]]];ListPlay[t, PlayRange -> {0, 100}, SampleRate -> 5] ]和函数()()x ax x f -=1一样有着混沌行为的函数还很多。
其中较简单的有“帐篷函数”和“锯齿函数”。
“帐篷函数”()x T 定义为()⎩⎨⎧≤<-≤≤=15.0225.002x xx xx T“锯齿函数”()x S 定义为 ()⎩⎨⎧≤<-≤≤=15.0125.002x x x x x S容易验证,帐篷函数和锯齿函数有下列关系: ()()()()10≤≤=x x S T x T T 令()2sin 2xx h π=,帐篷函数与()()x x x f -=14有下列关系:()()()()x T h x h f k k =2.3 方程求根对于代数方程g (x )=0,其根可用下列程序求得Solve[g(x)= = 0 , x]也可用下列程序求得g[x_]:=exprPlot[g[x],{x,a,b}]FindRoot[g(x)= = 0 , {x,x0}]将方程0)(=x g 改写为等价的方程)(x f x =,然后选取一初值利用(2.2.1)作迭代,迭代数列}{n x 收敛的极限就是方程0)(=x g 的解。