数学建模
实验报告
姓名:学院: 专业班级:
学号:
数学建模实验报告(一)
——用最小二乘法进行数据拟合
一.实验目的:
1. 学会用最小二乘法进行数据拟合。
2. 熟悉掌握matlab 软件的文件操作和命令环境。 3. 掌握数据可视化的基本操作步骤。 4. 通过matlab 绘制二维图形以及三维图形。
二.实验任务:
来自课本
64页习题:
2
用最小二乘法求一形如y=a+bx 的多项式,使之与下列数据拟合:
三.实验过程:
1. 实验方法:用最小二乘法解决实际问题包含两个基本环节:先根
据所给出数据点的变化趋势与问题的实际背景确定函数类;然后按照最小二乘法原则求最小二乘解来确定系数。即要求出二次多项式: y=a+bx 的系数。
2
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 44
y=19.0000 32.3000 49.0000 73.3000
a = 0.9726
b = 0.0500 图形:
97.8000
四.心得体会
通过本次的数学模型的建立与处理,我们学习并掌握了用最小二
乘法进行数据拟合,及多项式数据拟合的方法,进一步学会了使用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))。
2. 程序设计:
function y=nd(x)
y= x-cosx
function y=nd0(x) y=1+sinx 主程序
x=0; %迭代初值 i=0; %迭代次数计数 while i
y=x-nd(x)/nd0(x); %牛顿迭代格式 if abs(y-x)>10^(-5); %收敛判断 x=y; else break end i=i+1; end
fprintf('\n%s%.4f \t%s%d','x=',x,'i=',i) %输出结果
四. 实验心得
通过这次实验我掌握了Newton 法求解方程的方法。并通过
编程进一步熟悉了Matlab 的使用方法。在实验过程中仍然遇到了不少的困难,比如说编程调试部分,需要有很大的耐心去修改,再调试。而在这一步步的改进过程中发现自己的进步。
数学建模实验报告(三)
——用Jacobi 迭代法求解线性方程组
一. 实验目的
2. 掌握Jacobi 迭代法求解线性方程组的方法 3. 学会用Matlab 编程求解方程
二. 实验任务
课本155页习题1: 性方程组:
取初始向量x=(0, 0, 0) ,用Jacobi 迭代法求解线
t
x +2x -2x =1x +x +x =3 2x +2x +x =5
11
2
3
2
3
1
2
3
三. 实验过程
1. 方法原理:迭代法就是用某种极限过程逐渐逼近线性方程组精确解的方法。迭代法的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计
算新的近似解的规则。
将方程组(4.1.3)
中系数矩阵
(7.2.1)
分解为
其中为A 的对角矩阵,
(7.2.2)
-L,-U 分别为A 的严格下三角矩阵与A 的严格上三角矩阵. 假定
(i=1,2,…,n) ,则D 非奇异. 取M=D,N=L+U,则得
1
1称为解方程组的Jacobi 迭代法,简称J 法. 计算时可写成如下分量形式:
2. 程序:
a=[1 2 -2;1 1 1;2 2 1] d=[1;3;5]
x=[0;0;0]; %初始向量
stop=1.0e-4 %迭代的精度
L=-tril(a,-1)
U=-triu(a,1)
D=inv(diag(diag(a)))
X=D*(L+U)*x+D*d; n=1;
while norm(X-x,inf)>=stop
x=X;
X=D*(L+U)*x+D*d; n=n+1; end X
% J迭代公式 % 时迭代中止否则继续
n
3.上机调试:
得实验结果:
a =
1 2 -2 1 1 2 2 d =
1 3 5
stop =
1.0000e-004 L =
0 0 -1 0 -2 -2 U =
0 -2 0 0 0 0 D =
1 0 0 1 0 0 1 1 0 0 0 2 -1 0 0 0 1
X =
1
1
1
n =
4
四. 实验体会
通过本次实验,我掌握了高斯-赛德尔迭代法,雅可比迭代法求解线性方程的实验方法。此实验报告中只列出了雅可比迭代法的求解程序。但从实验结果来看,高斯-赛德尔迭代法要比雅可比迭代公式的收敛速度快,可见雅可比迭代法并不是一种理想的求解方法,但在一些简单地线性方程中,雅可比迭代法还是比较简单方便的。关于程序的编写也是翻阅了大量资料才得出的,其中犯了不少的语法错误,可见我对matlab 软件还不是很熟练,得加强学习。
数学建模
实验报告
姓名:学院: 专业班级:
学号:
数学建模实验报告(一)
——用最小二乘法进行数据拟合
一.实验目的:
1. 学会用最小二乘法进行数据拟合。
2. 熟悉掌握matlab 软件的文件操作和命令环境。 3. 掌握数据可视化的基本操作步骤。 4. 通过matlab 绘制二维图形以及三维图形。
二.实验任务:
来自课本
64页习题:
2
用最小二乘法求一形如y=a+bx 的多项式,使之与下列数据拟合:
三.实验过程:
1. 实验方法:用最小二乘法解决实际问题包含两个基本环节:先根
据所给出数据点的变化趋势与问题的实际背景确定函数类;然后按照最小二乘法原则求最小二乘解来确定系数。即要求出二次多项式: y=a+bx 的系数。
2
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 44
y=19.0000 32.3000 49.0000 73.3000
a = 0.9726
b = 0.0500 图形:
97.8000
四.心得体会
通过本次的数学模型的建立与处理,我们学习并掌握了用最小二
乘法进行数据拟合,及多项式数据拟合的方法,进一步学会了使用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))。
2. 程序设计:
function y=nd(x)
y= x-cosx
function y=nd0(x) y=1+sinx 主程序
x=0; %迭代初值 i=0; %迭代次数计数 while i
y=x-nd(x)/nd0(x); %牛顿迭代格式 if abs(y-x)>10^(-5); %收敛判断 x=y; else break end i=i+1; end
fprintf('\n%s%.4f \t%s%d','x=',x,'i=',i) %输出结果
四. 实验心得
通过这次实验我掌握了Newton 法求解方程的方法。并通过
编程进一步熟悉了Matlab 的使用方法。在实验过程中仍然遇到了不少的困难,比如说编程调试部分,需要有很大的耐心去修改,再调试。而在这一步步的改进过程中发现自己的进步。
数学建模实验报告(三)
——用Jacobi 迭代法求解线性方程组
一. 实验目的
2. 掌握Jacobi 迭代法求解线性方程组的方法 3. 学会用Matlab 编程求解方程
二. 实验任务
课本155页习题1: 性方程组:
取初始向量x=(0, 0, 0) ,用Jacobi 迭代法求解线
t
x +2x -2x =1x +x +x =3 2x +2x +x =5
11
2
3
2
3
1
2
3
三. 实验过程
1. 方法原理:迭代法就是用某种极限过程逐渐逼近线性方程组精确解的方法。迭代法的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计
算新的近似解的规则。
将方程组(4.1.3)
中系数矩阵
(7.2.1)
分解为
其中为A 的对角矩阵,
(7.2.2)
-L,-U 分别为A 的严格下三角矩阵与A 的严格上三角矩阵. 假定
(i=1,2,…,n) ,则D 非奇异. 取M=D,N=L+U,则得
1
1称为解方程组的Jacobi 迭代法,简称J 法. 计算时可写成如下分量形式:
2. 程序:
a=[1 2 -2;1 1 1;2 2 1] d=[1;3;5]
x=[0;0;0]; %初始向量
stop=1.0e-4 %迭代的精度
L=-tril(a,-1)
U=-triu(a,1)
D=inv(diag(diag(a)))
X=D*(L+U)*x+D*d; n=1;
while norm(X-x,inf)>=stop
x=X;
X=D*(L+U)*x+D*d; n=n+1; end X
% J迭代公式 % 时迭代中止否则继续
n
3.上机调试:
得实验结果:
a =
1 2 -2 1 1 2 2 d =
1 3 5
stop =
1.0000e-004 L =
0 0 -1 0 -2 -2 U =
0 -2 0 0 0 0 D =
1 0 0 1 0 0 1 1 0 0 0 2 -1 0 0 0 1
X =
1
1
1
n =
4
四. 实验体会
通过本次实验,我掌握了高斯-赛德尔迭代法,雅可比迭代法求解线性方程的实验方法。此实验报告中只列出了雅可比迭代法的求解程序。但从实验结果来看,高斯-赛德尔迭代法要比雅可比迭代公式的收敛速度快,可见雅可比迭代法并不是一种理想的求解方法,但在一些简单地线性方程中,雅可比迭代法还是比较简单方便的。关于程序的编写也是翻阅了大量资料才得出的,其中犯了不少的语法错误,可见我对matlab 软件还不是很熟练,得加强学习。