迭代法求解开普列方程Word格式文档下载.docx
《迭代法求解开普列方程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《迭代法求解开普列方程Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
5程序及注释
不动点迭代法程序以及程序注释
e=0.9;
%给变量取值
formatlong%设定数据格式
n=29;
%[0pi]中取值个数
x=0:
pi/n:
pi;
%给出向量值
k=0;
%记录迭代法数
er=1e-8;
%给出误差限
ee=1;
y0=1.5;
%给出初值
fori=1:
1:
30%设定要计算的X值次数
whileee>
er
y=x(i)+e*sin(y0);
%不动点迭代格式
ee=abs(y-y0);
%确定新误差值
y0=y;
k=k+1;
%失迭代次数记录
end
m(i)=k;
%记录X值迭代次数
z(i)=y;
%记录相应Y值
%复原值,进行下一个X值计算
end
对于以上程序说明,由于题目给出值相对比较简单首先进行不动点迭代法计算,题目中要求给出30个[0,
]值,语句x=0:
pi让x值为题目中需要计算的30个x值,用循环变量i分别对于x值分别进行提取,使之嵌入到for循环中,对于迭代格式用while循环采用标准迭代格式进行,对于while循环的结果用向量m(1:
30)、z(1:
30)分别记录其迭代格式结果。
牛顿迭代法程序及程序说明
formatlong
y0=1;
y1=y0-(y0-e*sin(y0)-x(i))/(1-e*cos(y0))%牛顿迭代格式
ee=abs(y0-y1);
y0=y1;
z(i)=y1;
程序与不动点迭代格式类似,仅牛顿迭代格式不一样,通过上面两程序运行,得到不同迭代格式算法下其收敛速度关系。
6数据及图形
以下表格为不动点迭代格式数据记录
X取值
0.000000
0.108331
0.216662
0.324992
0.433323
0.541654
结果
0.660470
0.947341
1.144413
1.300692
1.433140
次数
150
48
27
18
13
9
0.649985
0.758315
0.866646
0.974977
1.083308
1.191639
1.549786
1.655118
1.751923
1.842065
1.926857
2.007264
6
7
10
16
19
1.299969
1.408300
1.516631
1.624962
1.733292
1.841623
2.084019
2.157696
2.228751
2.297558
2.364428
2.429619
23
31
36
42
49
1.949954
2.058285
2.166616
2.274946
2.383277
2.491608
2.493357
2.555834
2.617219
2.677664
2.737305
2.796264
56
65
75
86
99
113
2.599939
2.708270
2.816600
2.924931
3.033262
3.141593
2.854654
2.912582
2.970147
3.027443
3.084562
128
142
156
168
175
178
以下表格为牛顿失代法生成的数据
5
4
8
11
37
14
59
由上面结果可以看出来牛顿迭代法其收敛性远好于不动点迭代法,下面给出原函数图形,图中给x在[0,
]上取值时函数
求解结果迭代次数的变化曲线
图中红色曲线为牛顿迭代法迭代次数,蓝色线为不动点迭代法迭代次数随X值变化曲线,由图上可以看出来,在初值选定适当时,牛顿迭代法迭代次数少,算法稳定,不动点迭代法,迭代次数要多许多。
7实验总结
通过实验验证了牛顿迭代法有二阶收敛性,只要初值选取适当,其收敛速度很快,对于函数变化,相比不动点迭代其也稳定得多,占用内存较小。
在本实验中,对于编程开始忘记了对于每一次计算结果后,对于误差限、迭代次数以及初始点y0均要复原,开始没有察觉到此问题,程序没有调出。
拉格郞日插值法逼近函数
在区间[–5,5]上取11阶切比雪夫多项式的零点
k=0,1,……10
作插值结点,计算函数
在结点处yk=f(xk)处值。
构造插值多项式
其中
取自变量点分别
在点处L10(tk),f(tk)并绘出两条曲线比较。
2背景技术
实践中常有这样的问题:
由实验得到某一函数y=f(x)在一系列点x0,x1,…,xn处的值y0,yi,…,yn,其函数的解析表达式是未知的,需要构造一个简单函数P(x)作为y=f(x)的近似表达式;
或者y=f(x)虽有解析式,但计算复杂,不便于使用,需要用一个比较简单且易于计算的函数P(x)去近似代替它;
插值法是通过给定n+1个互异的插值节点,让你求一条n次代数曲线近似地表示待插值的函数曲线,而拉格郎日插值法就是通过插值结点线性逼近曲线。
3问题分析
题目中要求通过切比雪夫结点对于函数进行模拟,其插值结点可以通过切比雪夫结点公式给出,由于是一个常规等式,在Matlab中通过向量计算可以得到,针对于此结点通过forwhile循环能够构造拉格郎日多项式,对于多项式对于原函数进行逼近,可以发觉切比雪夫结点有比较好的逼近效果,只要当拉格郞日多项式给出,用Matlab中plot函数可以得到函数逼近效果。
做为问题补充对于结点做线性扩张,便于与切比雪夫结点进行比较
4程序及注释
此程序涉及到的循环语句较多,所以构造了函数文件,画图文件等,下面定义函数文件ff.m,存在matlab工作路径下面,构造切比雪夫结点多项式。
functionyy=ff(x)%声明定义函数
yy=0;
%为迭加项附初值
k=0:
10;
xc=5*cos((2*k+1)*pi/22);
%切比雪夫切点生成
fi=inline('
1/(1+x^2)'
);
%生成逼近函数的内联函数形式
n=length(xc);
%切比雪夫结点长度
n%拉格郎日多项式和循环
l(i)=1;
%乘积项初值
forj=1:
n
ifj~=i
l(i)=(x-xc(j))*l(i);
%拉格郎日多项式分子
l(i)=l(i)/(xc(i)-xc(j));
%拉格郎日多项式分母
yy=yy+l(i)*fi(xc(i));
%进行加权求和
对于以上函数为用切比雪夫构造出拉格郎日多项式,在Matlab中通过y=ff(x),可以得到相应的插值多项式函数值,在上面程序中,其算法是先定义插值向量k,通过切比雪夫等式得到相应插值节点,将其长度记录到整数n中,然后通过两个for循环得到捫格郎日多项式,外循环主要是对于n个插值节点进行加权求和,而内循环则对于多项式每项进行L(i)计算,其要经过n-1次循环才能计算出。
对于以上所定义函数在plot.m文件对于上述函数进行调用,可以得到对于原函数进行逼近的曲线拟合其Matlab程序如下:
1/(1+x.^2)'
%须进行模拟原函数
ezplot(fi);
%简单画图命令
axis([-5501]);
%坐标控制
holdon%在一个图中画出
x=-5:
0.05:
201%对于每一个x值利用ff.m计算
y(i)=ff(x(i))
plot(x,y,'
r'
)%用红色线画出
上述程序中,由于ff.m仅针对一个变量x,所以用for循环来计算需要画图的y值,若能生成向量运算,其复杂度会大大降低。
除了切比雪夫结点外,在本题中会用到均匀插值法,对它进行比较,得到相应值。
5数据及结果
1.在插值结点处函数值与拉格朗日插值多项式值比较
插值结点
4.54816
3.7787479
2.7032041
1.4086628
1.416E-15
函数值
0.0461132
0.0654496
0.1203759
0.3350835
1
多项式值
-1.408663
-2.703204
-3.778748
-4.54816
-4.949107
0.0392254
通过上面表格可以看见在插值结点捫拉格郎日多项式与原函数值完成一样,因为结点处函数值没有任何误差
2.在不同点处函数值比较
题目中要求
处值,由于数据量太大,所以下面表格给出
处点其函数值与多项式值的对比,在画图时给出
处的图形对比,由于函数对称,所以仅给出在[-5,0]上函数数据值对比
x取值
-5
-4.8
-4.6
-4.4
-4.2
-4
0.038462
0.041597
0.045126
0.049116
0.053648
0.058824
-0.005327
0.087053
0.058303
0.016231
0.002359
0.021317
-3.8
-3.6
-3.4
-3.2
-3
-2.8
0.064767
0.071633
0.079618
0.088968
0.100000
0.113122
0.060754
0.103958
0.137054
0.152308
0.148780
0.131319
-2.6
-2.4
-2.2
-2
-1.8
-1.6
0.128866
0.147929
0.171233
0.200000
0.235849
0.280899
0.108677
0.091307
0.089266
0.110486
0.159570
0.237177
-1.4
-1.2
-1
-0.8
-0.6
-0.4
0.337838
0.409836
0.500000
0.609756
0.735294
0.862069
0.339976
0.461107
0.591036
0.718685
0.832686
0.922632
3.多项式逼近与函数逼近结果
上较中蓝色线红函数结果,红色为多项式逼近结果,下较给出在取值不同点数量时其逼近结果曲线,根据原理,其取值点越多,则无误差点则多,函数模拟越精确。
从上图也可以看出来,两条曲线交点数量为11,便为无误差点数量。
4.不同插值数比较
下图给出了其插值点分别为5点,11点,16点,21点时其曲线拟合情况,可以看见其插值点越多,拟合出来曲线性能越好。
6点插值11点插值
16点插值21点插值
6等间距插值
切比雪夫是一种比较优化插值方法,对于切比雪夫插值与常规等间距插值进行比较得到下面两图,其插值点分别为11点插值与21点插值,下图为插值法,蓝色为原函数曲线,红色为切比雪夫插值,绿色为等距离插值,从中可以看出切比雪夫与原曲线拟合较好,等距离插值在中心距离有比较好的逼近,但随着曲线变化,边沿部分变得很大,与原函数差别较大,随着插值结点增多,其拟合部分长度增加,但不能拟合部分值更大。
距离与切比雪夫11点插值
距离与切比雪夫21点插值
本课题仿真了对于函数
进行多点切比雪夫结点拉格郎日模拟,发觉其插值点越多,其拟合效果越佳,原因是插值结点越多,其无误差点越少,对于其结点也进行了等间距模拟,发觉等间距拟合其中间拟合较好,边沿与实际值相差较远。
本程序由于循环较多,其难度高,采用了函数形式,使得编程简单,但程序运行时间长,占用CPU时间较多。