《数学实验》报告
学 院: **************
专业班级: ************ 学 号: ************* 姓 名: **********
实验名称: 怎样计算平面图形的面积
实验日期: ********
实验四 怎样计算平面图形的面积
1. 目的:
探索曲线拟合的不同方式,使学生了解泰勒公式的意义,并且对运用定积分计算任意平面图形的面积有更深入的认识。能初步运用所学数学知识及数学软件工具matlab解决实际问题。
2. 任务
1.在同一坐标系内作出区间x1,1上对数函数yln1x及多项式函数
x2x2x3x2x3x4yx,yx,yx,yx
223234的图像,观察这些多项式函数逼近指数函数的情况。
2.在同一坐标系内作出区间x,上正弦函数ysinx及多项式函数
x3x3x5x3x5x7x3x5x7x9yx,yx,yx,yx
3!3!5!3!5!7!3!5!7!9!
3.假定某天的天气变化,试找出这一天的气温变化规律(求气温关于时间的函数)。 时刻t(x) 温度o0 1 2 3 4 5 6 7 8 9 10 11 12 15 14 14 14 14 15 16 18 20 22 23 25 28 C(y) 13 14 15 16 17 18 19 20 21 22 23 24 时刻t(x) 温度o31 32 31 29 27 25 24 22 20 18 17 16 C(y)
4.比较这两种方法各自的优点和缺点。对于给定的数据,运用Matlab及以上两种不同的方法找出相应的多项式,并作出其图像。你认为哪种方法要好些。你能不能找到其他的办法解决这个问题。
5.在平面上任意画一条简单光滑闭曲线,求此闭曲线围成的平面图形的面积。并观察当曲线上取的点逐渐增加时,所求多项式及所求面积值的变化情况。
3. 实验过程
1.
在同一坐标系内作出区间x1,1上对数函数yln1x及多项式函数
x2x2x3x2x3x4yx,yx,yx,yx
223234的图像,观察这些多项式函数逼近指数函数的情况。
(1)
编制程序绘制出它的图形;
【思路】
使用plot函数在同一坐标中绘出全部曲线,使用legend函数对全部曲线做出注释
【程序】
x=(-1:0.001:1); y1=log(1+x) ; y2=x ; y3=x-x.^2/2 ; y4=x-x.^2/2+x.^3/3; y5=x-x.^2/2+x.^3/3-x.^4/4;
plot (x , y1 , 'k' , x , y2 , 'm' , x , y3 , 'g' , x , y4 ,
'c',x,y5,'r');
legend('ln(1+x)','x','x-x^2/2','x-x^2/2+x^3/3','x-x^2/2+x^3/3','x-x^2/2+x^3/3-x^4/4');
【运行结果】
10-1-2-3-4-5-6-7 -1 ln(1+x)xx-x2/2x-x2/2+x3/3x-x2/2+x3/3-0.8-0.6-0.4-0.200.20.40.60.81 【分析】
随着多项式级数的增加,多项式逼近拟合的效果越佳
2.在同一坐标系内作出区间x,上正弦函数ysinx及多项式函数
x3x3x5x3x5x7x3x5x7x9yx,yx,yx,yx
3!3!5!3!5!7!3!5!7!9!
【思路】
使用plot函数在同一坐标中绘出全部曲线,使用legend函数对全部曲线做出注释
【程序】
x=(-pi:0.001:pi); y1=sin(x) ;
y2=x-x.^3/factorial(3) ;
y3=x-x.^3/factorial(3)+x.^5/factorial(5) ;
y4=x-x.^3/factorial(3)+x.^5/factorial(5)-x.^7/factorial(7); y5=x-x.^3/factorial(3)+x.^5/factorial(5)-x.^7/factorial(7)+x.^9/factorial(9);
plot (x , y1 , 'k' , x , y2 , 'm' , x , y3 , 'g' , x , y4 , 'c',x,y5,'r');
legend('sin(x)','x-x^3/3!','x-x^3/3!+x^5/5! ','x-x^3/3!+x^5/5!-x^7/7!','x-x^3/3!+x^5/5!-x^7/7!+x^9/9!');
【运行结果】
sin(x)2.521.510.50-0.5-1-1.5-2-2.5 -4-3-2-101234x-x3/3!x-x3/3!+x5/5!x-x3/3!+x5/5!-x7/7!x-x3/3!+x5/5!-x7/7!+x9/9! 【分析】
随着多项式级数的增加,多项式逼近拟合的效果越佳
3.假定某天的天气变化,试找出这一天的气温变化规律(求气温关于时间的函数)。 时刻t(x) 温度o0 1 2 3 4 5 6 7 8 9 10 11 12 15 14 14 14 14 15 16 18 20 22 23 25 28 C(y)
时刻t(x) 温度o13 14 15 16 17 18 19 20 21 22 23 24 31 32 31 29 27 25 24 22 20 18 17 16 C(y)
(方法一)拉格朗日插值法
【程序】
%原始数据-下边界曲线
X1=[ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 ; 15 ,14 ,14 ,14,14 ,15,16,18,20,22,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16 ] ;
t1=X1(1, : ) ; %横坐标 y1=X1(2 , : ) ; %竖坐标
for i=1:length(X1) %计算范德蒙矩阵 b( i , 1 ) = 1 ; for j=2:length(X1)
b( i , j ) = X1 ( 1 , i ) .^ ( j - 1 ) ; end ; end
a1=inv( b ) * X1( 2 ,:)'; %解方程组 for i=1 : 25%调整
h1( i ) = a1 ( 26 - i ) ; end
s=0 :0.1 :24; %绘图-横坐标
k1=polyval( h1 , s ) ; %绘图-竖坐标
plot( s , k1 , ' b.' ) %绘图-拉格朗日插值曲线 hold on
hold on
plot( t1 , y1 , 'r.' , 'MarkerSize' , 18 )
【运行结果】
120001000080006000400020000-2000-40000510152025
(方法二)ployfit[ ]
有专门处理这类问题的函数ployfit[ ],下面就是用这个函数处理给定数据的结果:
【程序】
X=
[ 0,1,2,3,4 ,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 ;15,14,14,14,14,15,16,18,20,22,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16 ] ; n=18;
f = polyfit ( X ( 1 , : ) , X ( 2 , : ) , n ) ; s = X ( 1 , 1 ) : 0.01 : X ( 1 , length ( X ) ) ; k = polyval ( f , s ) ; plot( s , k , 'b - ' ) hold on
plot( X ( 1 , : ) , X ( 2 , : ) , 'r . ' , 'MarkerSize' , 18 ) hold off
【运行结果】
32302826242220181614120510152025
4.比较这两种方法各自的优点和缺点。对于给定的数据,运用Matlab及以上两种不同的方法找出相应的多项式,并作出其图像。你认为哪种方法要好些。你能不能找到其他的办法解决这个问题。
【分析】
1. 最小二乘法主要考虑到观测数据受随机误差的影响,
寻求整体误差最小、较好反映观测数据的近似函数,并不保证所得函数一定满足
yif(xi)2. 拉格朗日插值:要求函数在每个观测点处一定要满足 yif(xi)所以在给定的在所给点较多时选用最小二乘法较好,因为拉格朗日插值法所拟合曲线是由点的个数确定的,点越多其拟合多项式次数越高,但这样可能就越不准确。而且曲线除了中部拟合得还算可以,在两端会产生振荡。
3. 使用polyfit函数法可以比较好地解决以上问题。
5.在平面上任意画一条简单光滑闭曲线,求此闭曲线围成的平面图形的面积。并观察当曲线上取的点逐渐增加时,所求多项式及所求面积值的变化情况。
【分析】
设下边界的函数为y=(x-4)^2,
上边界的函数设为y=-(x-4)^2+32,
下边界取点
(0,16),(1,9),(2,4),(3,1),(4,0)(5,1)(6,4),(7,3,)(8,16) 上边界取点
(0,16),(1,23),(2,28),(3,31)(4,32)(5,31)(6,28)(7,23)(8,16)
【程序】
%定以拟合函数对所取的点进行拟合
function nihe(X,n)
f = polyfit ( X ( 1 , : ) , X ( 2 , : ) , n ) ; s = X ( 1 , 1 ) : 0.01 : X ( 1 , length ( X ) ) ; k = polyval ( f , s ) ; plot( s , k , 'b - ' ) hold on
plot( X ( 1 , : ) , X ( 2 , : ) , 'r . ' , 'MarkerSize' , 18 ) hold off
【拟合上下边界函数】
在命令窗口输入:
X1=[ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ; 16 , 9 , 4, 1 , 0 , 1 , 4 , 9 , 16 ] ; X2=[ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ; 16 , 23 , 28 , 31 , 32, 31 , 28, 23 , 16 ] ; nihe( X1 , 5 )
hold on
nihe( X2 , 5 ) 得到如下图形:
35302520151050-5012345678
计算图形面积代码如下:
f1=inline('x.^2-8*x+16 ','x') q1=quadl(f1,0,8)
f2=inline('-x.^2+8*x+16','x')
q2=quadl(f2,0,8)disp(['图像面积为 ' , num2str(q2 – q1)])
运行结果为:
f1 =
Inline function: f1(x) = x.^2-8*x+16 q1 =
42.6667 f2 =
Inline function: f2(x) = -x.^2+8*x+16 q2 =
213.3333
图像面积为 170.6667
理论计算为128*(-2/3)+256=170.6667=运行结果
经观察,随着点取得越多,拟合效果越好,,计算所得的图形面积越精确。
4. 实验总结与思考
经过这次实验,我学会了运用matlab的一些功能去求图形的面积,学会用
包括拉格朗日插值法等方法去绘制曲线,也认识到各种方法存在的问题,希望以后继续努力,取得更大的进步。
因篇幅问题不能全部显示,请点此查看更多更全内容