数值分析大作业利用MATLAB软件.docx
《数值分析大作业利用MATLAB软件.docx》由会员分享,可在线阅读,更多相关《数值分析大作业利用MATLAB软件.docx(14页珍藏版)》请在冰点文库上搜索。
数值分析大作业利用MATLAB软件
实验报告
课程名称:
数值分析
实验项目:
曲线拟合/数值积分
专业班级:
姓名:
学号:
实验室号:
实验组号:
实验时间:
20.10.24批阅时间:
指导教师:
成绩:
工业大学实验报告
(适用计算机程序设计类)
专业班级:
学号:
姓名:
实验名称:
曲线拟合与函数插值
1.实验目的:
(1)消化吸收课堂上学到的关于迭代法的知识。
(2)熟练掌握MATLAB软件关于对拟合方法的基本操作
(3)会使用MATLAB软件计算各种拟合法。
2.实验内容:
已知某天在各个整点时刻的温度如下表所示,使用最小二乘法,确定这一天的气温变化规律。
分别采用下列函数进行拟合,分析误差,并作图比较效果。
(1)二次多项式;
(2)三次多项式;
(3)四次多项式;
(4)形如
的函数,其中
为待定常数。
3.实验方案(程序设计说明)
(1)确定拟合变量
(2)建立拟合关系式
(3)对拟合过程进行控制
(4)对拟合过程进行修正
4.实验步骤或程序(经调试后正确的源程序)
见附件A
5.程序运行结果
二次多项式拟合结果:
(1)y=7.416+2.594t-0.094t^2
三次多项式拟合结果:
(2)y=12.251-0.102t+0.193t^2-0.008t^3
四次多项式拟合结果:
(3)y=15.604-3.526t+0.866t^2-0.052t^3+0.0009t^4
形如
拟合结果:
(4)Y=-58.6146exp-0.0003(t-3.4660)^2
6.出现的问题及解决方法
在程序设计出现一些语法错误,通过设置断点找到了语法错误,并改正了。
附件A工业大学实验报告
(适用计算机程序设计类)
专业班级:
学号:
姓名:
实验步骤或程序:
附录一:
1.利用二次,三次,四次多项式进行拟合:
1.1MATLAB代码如下:
clear;clc;closeall
t=[0123456789101112131415161718192021222324];
y=[14131313131415171921222427303130282624232119171615];%输入数据
holdon
[p2s2]=polyfit(t,y,2);%对于上面的数据进行2次多项式拟合,其中s2包括R(系数矩阵的QR分解的上三角阵),
%df(自由度),normr(拟合误差平方和的算术平方根)。
y2=polyval(p2,t);%返回多项式拟合曲线在t处的值
[p3s3]=polyfit(t,y,3);
y3=polyval(p3,t);
[p4s4]=polyfit(t,y,4);
y4=polyval(p4,t);
plot(t,y,'ro')%画图
plot(t,y2,'g-')
plot(t,y3,'m^-')
plot(t,y4,'bs-')
xlabel('t')
ylabel('y')
legend('原始数据','2次多项式拟合','3次多项式拟合','4次多项式拟合')
1.2二次,三次,四次多项式拟合的结果分别如下:
(1)总的拟合结果在工作区的显示如下:
(2)其次二次多项式拟合的结果为:
(3)其中三次多项式拟合的结果:
(4)其中四次多项式拟合的结果为:
1.3拟合的图像为:
1.4拟合的多项式为:
根据工作区得出的数据列出最后的拟合多项式为:
(1)y=7.416+2.594t-0.094t^2
(2)y=12.251-0.102t+0.193t^2-0.008t^3
(3)y=15.604-3.526t+0.866t^2-0.052t^3+0.0009t^4
2.形如
的函数,其中
为待定常数。
2.1MATLAB代码如下
clear;clc;closeall
t=[0123456789101112131415161718192021222324];
y=[14131313131415171921222427303130282624232119171615];
fun=inline('a
(1)*exp(-a
(2)*(t-a(3)).^2)','a','t');%建立内联函数
a=lsqcurvefit(fun,[0,0,0],t,y);%拟合,lsqcurvefit函数用于非线性最小二乘拟合。
t,y为要拟合的数据,fun为函数句柄,
holdon;
plot(t,y,'bo');%画原始数据点
t0=min(t):
max(t);
y0=fun(a,t0);
plot(t0,y0,'r');%画拟和曲线
holdoff;
disp(a)%显示参数的值
2.2拟合结果为
2.3拟合的图像
2.4拟合的多项式为:
3.4660-0.0003-58.6146
Y=-58.6146exp-0.0003(t-3.4660)^2
工业大学实验报告
专业班级:
学号:
姓名:
实验名称:
数值积分
1.实验目的:
(1)对MATLAB软件能够更加熟练的掌握。
(2)学会利用MATLAB求数值积分。
(3)观察哪一种方法更适合计算机计算。
2.实验内容:
分别用变步长梯形求积算法和龙贝格算法计算积分
要求误差不超过
,并比较它们的计算量。
3.实验方案(程序设计说明):
(1)先把方程组转化为矩阵输入到MATLAB中;
(2)再按照变步长梯形和龙贝格算法步骤列出表达式。
(3)按照相应的递推公式进行迭代。
并时刻检验精度是否满足要求。
(4)对关系式进行修正,程序进行调试。
4.实验步骤或程序(经调试后正确的源程序)
见附件A
5.程序运行结果:
变步长梯形求积算法:
s_2=-1.4351num_2=185
龙贝格算法:
T=-1.4265n=32
6.出现的问题及解决方法
在程序设计出现一些语法错误,通过设置断点找到了语法错误,并改正了。
附件A工业大学实验报告
(适用计算机程序设计类)
专业班级:
学号:
姓名:
实验步骤或程序:
附录如下:
1.利用变步长梯形求积算法计算
1.1MATLAB代码如下:
function[bianbuchangjifen,num]=kong_tixing(a,b,tol)
%a,b为积分区间,tol为积分精度
if(nargin==3)
eps=1e-4;
end
n=1;
h=(b-a)/2;
int_1=0;
int_2=(kong_t_f(a)+kong_t_f(b))/h;
whileabs(int_2-int_1)>tol
n=n+1;
h=(b-a)/n;
int_1=int_2;
int_2=0;
fori=0:
n-1
x=a+h*i;
x1=x+h;
int_2=int_2+(h/2)*(kong_t_f(x)+kong_t_f(x1));
end
end
bianbuchangjifen=int_2;
num=n;
functionf=kong_t_f(x)
f=(10./x).^2.*sin(10./x);
[s_2,num_2]=kong_tixing(1,3,1e-4)
x=1:
3;
y=(10./x).^2.*sin(10./x);
area(x,y)
1.2命令窗口以及工作区显示的结果如下:
1.3输出图像为:
1.4输出结果为:
s_2=
-1.4351
num_2=
185
表明划分了185次,结果为-1.4351。
收敛速度比较慢。
2.利用龙贝格算法计算结果如下:
2.1MATLAB代码如下:
function[T,n,R]=romb(f,a,b,eps)
%%其中输入项:
%f为被积函数,
%ab为积分区间的端点值,
%ep为积分精度;
%%输出项:
%T是逐次积分表值,
%n是迭代次数,
%R是最后积分值
doubleR;
ifnargin<4,eps=1e-8;
end
h=b-a;R(1,1)=(h/2)*(feval(f,a)+feval(f,b));
n=1;J=0;err=1;
while(err>eps)
J=J+1;h=h/2;S=0;
fori=1:
n
x=a+h*(2*i-1);
S=S+feval(f,x);
end
R(J+1,1)=R(J,1)/2+h*S;
fork=1:
J
R(J+1,k+1)=(4^k*R(J+1,k)-R(J,k))/(4^k-1);
end
err=abs(R(J+1,J+1)-R(J+1,J));
n=2*n;
end
R;
T=R(J+1,J+1)
end
f=inline('(10/x).^2*sin(10/x)','x');
[T,n,R]=romb(f,1,3,1e-4)
2.2命令窗口和工作区的内容为:
4.2.3最后输出结果为:
T=
-1.4265
n=
32
R=
-56.519500000
-52.2329-50.80400000
-23.8564-14.3976-11.9705000
-6.8278-1.1516-0.2685-0.082800
-2.6815-1.2994-1.3093-1.3258-1.33070
-1.7327-1.4164-1.4242-1.4260-1.4264-1.4265
结论是:
很明显的看出达到同样的精度龙贝格算法收敛速度更快。