
改:数值分析实验1.doc
4页结合牛顿迭代法和最小二乘法来近似的求隐函数的表达式一、 问题叙述 隐函数存在定理:如果f(x,y)及皆在(x0,y0)附近连续,而且f(x0,y0) = 0,则在(x0,y0)的附近,方程f(x,y) = 0恰有一个连续解y =y(x)从隐函数存在定理中我们知道其具有局部性,即是说我们求解隐函数时应在一定领域上,这就恰和牛顿迭代法的局部收敛性具有相通处在邻域d(x0,y0) =d(x0)×d(y0)={(x,y) | |x – x0| < d,|y – y0| < d }内计算隐函数的值的方法:取x1∈d(x0)={x | |x – x0| < d },存在y1∈d(y0)={y | |y – y0| < d },使得y1 =y(x1)满足f(x1,y1) = 0由此导出关于函数值y的一元非线性方程g(y) = f(x1,y) = 0由于f(x,y)及皆在d(x0,y0)连续,故,且y1≈y0应用牛顿迭代法,得迭代计算格式y (k+1)= y (k) – f(x1,y (k) )/fy(x1,y (k))迭代初值取为:y(0) = y0由牛顿迭代法的局部收敛性可知,迭代计算可求得隐函数的高精度函数值。
于是,如果在一定区间上变化(不妨让其以一定步长递增),我们就可以通过牛顿迭代得到一系列的隐函数值,利用得到的这些点,就可采用数据拟合的最小二乘法来求解隐函数的近似表示式二、 问题分析 这里我们以隐函数为例来说明我们求解在 [ 0, 2 ]上时,隐函数的表达式 首先,我们运用牛顿迭代公式求解每一个所对应得隐函数值,这里从0以步长0.05依次递增到2然后我们用最小二乘法估计隐函数的表达式为了说明得到的表达式所具有的精度在一定程度上能满足我们的需要,我们可以比较估计的隐函数的表达式和实际的函数的波形的相近程度三、 实验程序及注释1, 牛顿迭代法求隐函数值x=0:0.05:2; %设置x的步长n=1+2/0.05; %计算循环次数y(n)=0; %定义一零向量e=1;y(1)=0; %设置迭代的初值和起始误差while e>0.0001 %设置误差限 y(1)=y(1)-(-3*x(1)^7-x(1)^3+2*y(1)^2+y(1)-3)/(4*y(1)+1); %迭代公式 e=-3*x(1)^7-x(1)^3+2*y(1)^2+y(1)-3; %计算误差end %x=0时的迭代完毕for j=2:n %x从0到2开始循环 e=1;y(j)=y(j-1); %以前一次迭代所到的函数%值作为这一次迭代的初值 while e>0.0001 y(j)=y(j)-(-3*x(j)^7-x(j)^3+2*y(j)^2+y(j)-3)/(4*y(j)+1); e=-3*x(j)^7-x(j)^3+2*y(j)^2+y(j)-3; end %对每一个x求函数值end2, 采用三次多项式对数据进行拟合先运行程序段一fai=[1 x(1) x(1)^2 x(1)^3];for j=2:n fai=[fai;1 x(j) x(j)^2 x(j)^3];end %构建矩阵A=fai'*fai;b=fai'*y';a=inv(A)*b; %求解多项式的系数3, 采用四次多项式对数据进行拟合先运行程序段一fai=[1 x(1) x(1)^2 x(1)^3 x(1)^4];for j=2:n fai=[fai;1 x(j) x(j)^2 x(j)^3 x(j)^4];end %构建矩阵A=fai'*fai;b=fai'*y';a=inv(A)*b; %求解多项式的系数4, 画图比较先运行程序段一x1=(0:.001:2)'; x2=(0:.001:2)';y1=0.9202+1.2389.*x1-3.6347.*x1.^2+3.1184.*x1.^3;y2=0.9435+0.9774.*x2-3.0295.*x2.^2+2.6438.*x2.^3+0.1186.*x2.^4;figure(1)plot(x1,y1,'b',x2,y2,'m',x,y,'xk'); %三次拟合和四次拟合的图形figure(2)ezplot('-3*x^7-x^3+2*y^2+y-3',[0,2,0,14]) %原隐函数的图形四、 实验数据结果及分析。
1,程序一运行后得到的结果x00.050.100.150.200.250.300.350.400.45y1.00001.00001.00021.00071.00161.00321.00551.00891.01371.0203x0.500.550.600.650.700.750.800.850.900.95y1.02931.04171.05861.08171.11291.15491.21051.28311.37621.4932x1.001.051.101.151.201.251.301.351.401.45y1.63751.81202.01962.26262.54312.86313.22473.62964.07974.5772x1.501.551.601.651.701.751.801.851.901.95y5.12395.72216.37397.08167.84758.67419.563810.519211.542912.6375x2.00y13.80572,程序二运行后的结果= 0.9202 =1.2389 =-3.6347 = 3.1184所以得到的隐函数为3,程序三运行后的结果 =0.9435 = 0.9774 =-3.0295 =2.6438 =0.1186所以得到的隐函数为4,程序四运行后的结果图一图二图一中蓝色的为三次拟合曲线,红色的为四次拟合曲线。
从图中我们看到三次拟合和四次拟合所得到的曲线基本重合,并且都与实际的隐函数曲线基本一样,这就说明,在要求精度不是特别大得情况下,我们所得到的拟合多项式完全可以看做是隐函数的显式表达五、 实验结论从实验中我们知道,用牛顿迭代法求出的隐函数值具有极高的精度,同时,通过最小二乘法所求出的函数表达式也具有很好的适用性,遗憾的是,当选择的区间较长时,用牛顿迭代和最小二乘法所得的近似隐函数的表达式可能就没那么准确。












