logo资料库

上海电力大学-数值计算方法上机习题.pdf

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
上海电力大学 数值计算方法 上机实习报告 学 院: 自动化工程学院 专 业: 电气系统检测与控制 课程名称: 数值计算方法 学生姓名: 尹申 学号: 18104049 指导老师: 黄建雄 20 19 年 5 月 25 日
上海电力大学自动化工程学院 实验一 1. 设 , (1) 由递推公式 ,从 , 出发,计算 ; (2) , , 用 ,计算 ; (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 解答过程: (1)创建一个名为 shangji_01_1 的 m 脚本,输入代码如下: clc clear; I=0.1822; for n=1:20 I=-5*I+1/n; fprintf('%12.8f\n',I) end fprintf('\n 当I0=0.1822时,I20的 值为:%12.8f\n\n',I) 显示结果为: I=0.1823; for n=1:20 I=-5*I+1/n; fprintf('%12.8f\n',I) end fprintf('\n 当I0=0.1823时,I20的 值为:%12.8f\n',I) 即当 即当 时,实验结果约为-1.1593e+10; 时,实验结果约为-2.0558e+09。· 1 +=105dxxxInnnIInn151+−=−0=0.1822I0=0.1823I20I20=0I20=10000InIInn515111+−=−−0I0=0.1822I0=0.1823I
上海电力大学自动化工程学院 (2)创建名为 shangji_01_2 的 m 脚本文件,输入代码如下: clear all; clc; I=0; for n=20:-1:1; I=(1/5)*(-I+1/n); fprintf('%12.8f\n',I) end fprintf('\n 当I20=0时,I0的值 为:%12.8f\n\n',I) 显示结果如下: I=10000; for n=20:-1:1; I=(1/5)*(-I+1/n); fprintf('%12.8f\n',I) end fprintf('\n 当I20=10000时,I0的值 为:%12.8f\n',I) (3)分析结果的可靠性及产生此现象的原因(重点分析原因)。 在(1)中计算值与真值之间的误差为: 即每迭代一步,误差都会被放大为原来的五倍,随着迭代次数的增多,误差增大得越来越快。 在(2)中计算值与真值之间的误差为: 每迭代一步,误差缩小为原来的 5 倍,随着迭代次数的逐渐增多,迭代结果越来越接近精确 值。 2 ()*002211*1*11*5...5551515IIeeIInInIIIennnnnnnnnn−====−=+−−+−=−=−−−−−−()****111515151515151nnnnnnnnnIIIInInIIIe−=−=+−−+−=−=−−−nneeee5151512210====
上海电力大学自动化工程学院 实验二 2. 求方程 的近似根,要求 ,并比较计算量。 (1) 在[0,1]上用二分法; (2) 取初值 ,并用迭代 ; (3) 加速迭代的结果; (4) 取初值 ,并用牛顿迭代法; (5) 分析绝对误差。 解答过程:(1)用二分法: clc clear close all %二分法 a=0;b=1;i=1; f=@(x)( exp(x)+10*x-2);%@是定义函 数句柄的运算符,相当于建立了一个 函数文件 c=(a+b)/2;%取区间中点 while abs(c-a)>0.0005 if f(a)*f(c)<0 b=c; 运行结果如下图所示: c=(a+b)/2; elseif f(c)*f(b)<0 a=c; c=(b+a)/2; end i=i+1; end fprintf('二分法运算次数 为%d\n',i) fprintf('二分法计算结果 为%.15f\n',c) (2)用不动点迭代法:将方程 写成等价方程 的形式,再用 进行迭代,当迭代误差 时停止迭代,得到近似解。 3 0210=−+xex41105−+−kkxx00=x1021xkex−=+00=x0210=−+xex102xex−=1021kxkex−=+41105−+−kkxx
上海电力大学自动化工程学院 clc clear close all %不动点迭代 x=0;%x的初值为0 for k=1:1:50 %规定迭代次数的上限 g1=x; %g1=x(n-1) x=(2-exp(x))/10; 运行结果如下图所示: g2=x; %g2=x(n) if abs(g2-g1)<0.0005; fprintf('迭代次数为%i\n',k) fprintf('迭代结果为%.15f\n',g2) break; end end (3)用加速迭代法:设有不动点迭代 ,则 Aitken 加速的迭代方程为 当迭代误差 时停止迭代,得到近似解。 clc clear close all %加速迭代 k=0; x=0; while 1 k=k+1; y=(2-exp(x))/10; z=(2-exp(y))/10; 运行结果如下图所示: g1=x; x=x-(y-x)^2/(z-2*y+x);% 加速 g2=x; if(abs(g2-g1) <0.0005) % 如果满足精度要求跳出while循环 fprintf('迭代次数%d\n',k); fprintf('迭代结果%.15f\n',x); break; end end (4)用牛顿迭代算法:记要求解的非线性方程为 ,则牛顿迭代法的迭 4 1021kxkex−=+2+1(),(),1,2,3...(),2kkkkkkkkkkkyxzykyxxxxyx===−=−−+()41105−+−kkxx0210)(=−+=xexfx
代方程为: 上海电力大学自动化工程学院 当迭代误差 时停止迭代,得到近似解。 代码如下所示: clc clear close all %牛顿迭代算法 f=@(x)( exp(x)+10*x-2); f_diff= @(x)(exp(x)+10); n=0; x=0; while 1 n=n+1; 运行结果如下图所示: g1=x; x=x-f(x)/f_diff(x); g2=x; if(abs(g2-g1) < 0.0005) fprintf('迭代次数为:%d\n',n); fprintf('迭代结果为:%.15f\n',x); break; end end (5)分析绝对误差: 在命令行窗口中利用如下代码求出方程的精确解: 迭代方式 二分法迭代 不动点迭代 atiken 加速迭代 牛顿迭代 各方法绝对误差分析: 迭代结果 迭代次数 绝对误差 11 4 2 2 0.090332031250000 1.930700573e-4 0.090512616674365 1.248463289e-5 0.090483753435776 4.134787148e-5 0.090525108583390 7.276135e-9 二分法仅仅是根据端点函数值符号性质来判断根的大致位置(压缩常数 L=0.5), 因此收敛速度慢而且误差也相对较大;不动点迭代法是线性阶收敛,由迭代方程 可知,其压缩常数 ,且压缩常数较小,因 5 )(')(1kkkkxfxfxx−=+41105−+−kkxx1021xkex−=+12718.010)('max]1,0[==exLx
上海电力大学自动化工程学院 此收敛速度较快;Atiken 加速迭代法为平方阶收敛,且艾特肯迭代加速法用到了相邻三 项 , 和 用于迭代,迭代函数二阶连续可导,自然收敛速度比不动点迭代要 快得多;采用牛顿迭代法需运算 2 次,其迭代序列收敛速度是不低于二阶的(对于求单 根是二阶收敛,即本题所出现的情况;而对于求重根的问题就只有线性收敛),所以对 于本题中的牛顿法,收敛速度也是非常快的。 6 1kx+kx1−kx
上海电力大学自动化工程学院 实验三 3.钢水包使用次数多以后,钢包的容积增大,数据如下: 2 3 4 5 6 7 8 9 6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 x y 10 11 12 13 14 15 16 10.49 10.59 10.60 10.8 10.6 10.9 10.76 试从中找出使用次数和容积之间的关系,计算均方差。(用 拟合) 解答过程: (1)将拟合曲线进行简单变换 ; (2)令 ,若要拟合曲线,则要求 最小,也 即满足以下等式: 由 由上式可得法方程组: (3)根据法方程组编写程序计算 a,b,c 的值: ①创建名为 shangji_03 的 m 脚本文件,代码如下: clc clear close all x=[2 3 4 5 6 7 8 9 10 11 12 13 14 15 16];%表中x的值 y=[6.42 8.2 9.58 9.5 9.7 10 9.93 9.99 10.49 ... 10.59 10.6 10.8 10.6 10.9 10.76];%表中y的值 C=zeros(3); D=zeros(3,1); for k=1:15 C(1,1)=C(1,1)-x(k)*x(k); C(1,2)=C(1,2)-x(k); 7 axbycx+=+()yxcaxb+=+()1521,,[y(xc)(axb)]kkkkabc==+−+()cba,,000abc===()()()()()()()()()=+−+=+−+−=+−+−===020202151151151iiiiiiiiiiiiiibaxcxyybaxcxybaxcxyx()()()()()()()()()()()()−−−=−−−−−−============15121511512151215115115115115115115115121kkkkkkkkkkkkkkkkkkkkkkkkkkkkyxyxyxcbayyyxyxyxxx
分享到:
收藏