logo资料库

西电计算方法与实习_第四次上机作业.docx

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
第四次上机 一、用欧拉法求习题 7.2 y`=10*(1-y) y(0)=0 1. 程序 function [y_]=fun(x,y) y_=10.*x.*(1-y); end %y(0)=0 初始值 %习题 7.2 %函数 y_=10.*x.*(1-y),精确函数 y=1-exp(-5*x^2) y=0; h=0.1; fprintf('欧拉法:\n'); tic for i=1:1/h x=i*h; accuracy=1-exp(-5*x^2); fprintf('计算值 x=%.5f\ty=%.5f\t 精确值%.5f\t 误差%.5f\n',x,y,accuracy,abs(y-accuracy)); k=fun(x,y); y=y+h*k; %一阶导,求的是斜率 %横坐标值 %计算值 end toc %与 tic 成对出现,计算程序运行时间 fprintf('改进欧拉法:\n'); tic %求第一个点(x,y)的斜率 k1 和第二个点(x+h,y+K1*h)的斜率 k2 y=0; h=0.1; for i=1:1/h x=i*h; accuracy=1-exp(-5*x^2); fprintf('计算值 x=%.5f\ty=%.5f\t 精确值%.5f\t 误差%.5f\n',x,y,accuracy,abs(y-accuracy)); k1=fun(x,y); k2=fun(x+h,y+k1*h); y=y+h*(k1+k2)/2; %第一点斜率 %第二点斜率 end toc fprintf('龙格库塔方法:\n'); tic %与改进欧拉法相似,只是需要四个 K h=0.1; y=0;
for i=1:1/h x=i*h; accuracy=1-exp(-5*x^2); fprintf('计算值 x=%.5f\ty=%.5f\t 精确值%.5f\t 误差%.5f\n',x,y,accuracy,abs(y-accuracy)); k1=fun(x,y); k2=fun(x+h/2,y+k1*(h/2)); k3=fun(x+h/2,y+k2*(h/2)); k4=fun(x+h,y+k1*h); y=y+h*(k1+k2+k3+k4)/4; end toc 2. 结果 欧拉法: 计算值 x=0.10000 y=0.00000 精确值 0.04877 误差 0.04877 计算值 x=0.20000 y=0.10000 精确值 0.18127 误差 0.08127 计算值 x=0.30000 y=0.28000 精确值 0.36237 误差 0.08237 计算值 x=0.40000 y=0.49600 精确值 0.55067 误差 0.05467 计算值 x=0.50000 y=0.69760 精确值 0.71350 误差 0.01590 计算值 x=0.60000 y=0.84880 精确值 0.83470 误差 0.01410 计算值 x=0.70000 y=0.93952 精确值 0.91371 误差 0.02581 计算值 x=0.80000 y=0.98186 精确值 0.95924 误差 0.02262 计算值 x=0.90000 y=0.99637 精确值 0.98258 误差 0.01379 计算值 x=1.00000 y=0.99964 精确值 0.99326 误差 0.00638 时间已过 0.011510 秒。 改进欧拉法: 计算值 x=0.10000 y=0.00000 精确值 0.04877 误差 0.04877 计算值 x=0.20000 y=0.14000 精确值 0.18127 误差 0.04127 计算值 x=0.30000 y=0.32920 精确值 0.36237 误差 0.03317 计算值 x=0.40000 y=0.52373 精确值 0.55067 误差 0.02694 计算值 x=0.50000 y=0.69043 精确值 0.71350 误差 0.02307 计算值 x=0.60000 y=0.81426 精确值 0.83470 误差 0.02045 计算值 x=0.70000 y=0.89598 精确值 0.91371 误差 0.01772 计算值 x=0.80000 y=0.94487 精确值 0.95924 误差 0.01437 计算值 x=0.90000 y=0.97188 精确值 0.98258 误差 0.01069 计算值 x=1.00000 y=0.98594 精确值 0.99326 误差 0.00732 时间已过 0.005725 秒。 龙格库塔方法: 计算值 x=0.10000 y=0.00000 精确值 0.04877 误差 0.04877 计算值 x=0.20000 y=0.14045 精确值 0.18127 误差 0.04082 计算值 x=0.30000 y=0.33103 精确值 0.36237 误差 0.03134 计算值 x=0.40000 y=0.52761 精确值 0.55067 误差 0.02306 计算值 x=0.50000 y=0.69637 精确值 0.71350 误差 0.01712
计算值 x=0.60000 y=0.82155 精确值 0.83470 误差 0.01315 计算值 x=0.70000 y=0.90351 精确值 0.91371 误差 0.01020 计算值 x=0.80000 y=0.95163 精确值 0.95924 误差 0.00761 计算值 x=0.90000 y=0.97730 精确值 0.98258 误差 0.00527 计算值 x=1.00000 y=0.98992 精确值 0.99326 误差 0.00334 时间已过 0.008043 秒。 比较结果,可以看出,R-K 方法精度最高,但是改进欧拉法速度最快 二、用改进欧拉法求习题 7.3 y`=-y y(0)=1 1. 程序 fprintf('改进欧拉法:\n'); %求第一个点(x,y)的斜率k1和第二个点(x+h,y+K1*h)的斜率k2 y=1; h=0.2; for i=1:1/h x=i*h; accuracy=exp(-x); y=0.82*y; fprintf('计算值x=%.5f\ty=%.5f\t精确值%.5f\t误 差%.5f\n',x,y,accuracy,abs(y-accuracy)); end 2. 结果 改进欧拉法: 计算值 x=0.20000 y=0.82000 精确值 0.81873 误差 0.00127 计算值 x=0.40000 y=0.67240 精确值 0.67032 误差 0.00208 计算值 x=0.60000 y=0.55137 精确值 0.54881 误差 0.00256 计算值 x=0.80000 y=0.45212 精确值 0.44933 误差 0.00279 计算值 x=1.00000 y=0.37074 精确值 0.36788 误差 0.00286 三、用 R-K 求习题 7.6 y`=-y y(0)=1 1. 程序 %7_6 精确函数 y=exp(-x) h=0.2; y=1;
for i=1:1/h x=i*h; accuracy=exp(-x); y=(1-h+(h^2/2)-(h^3)/6+(h^4)/24)*y; fprintf(' 计 算 值 x=%.5f\ty=%.10f\t 精 确 值 %.10f\t 误 差%.10f\n',x,y,accuracy,abs(y-accuracy)); end 2. 结果 计算值 x=0.20000 y=0.8187333333 精确值 0.8187307531 误差 0.0000025803 计算值 x=0.40000 y=0.6703242711 精确值 0.6703200460 误差 0.0000042251 计算值 x=0.60000 y=0.5488168249 精确值 0.5488116361 误差 0.0000051888 计算值 x=0.80000 y=0.4493346284 精确值 0.4493289641 误差 0.0000056643 计算值 x=1.00000 y=0.3678852381 精确值 0.3678794412 误差 0.0000057970 四、用 R-K 求实习题 7:1(1) y`=x^2+y^2 y(0)=0 1. 程序 y(0)=0 y`=x^2+y^2 %实习题 7_1(1) fprintf('龙格库塔方法:\n'); h=0.1; y=0; for i=1:1/h x=i*h; fprintf('计算值 x=%.5f\ty=%.5f\n',x,y); k1=fun1(x,y); k2=fun1(x+h/2,y+k1*(h/2)); k3=fun1(x+h/2,y+k2*(h/2)); k4=fun1(x+h,y+k1*h); y=y+h*(k1+k2+k3+k4)/4; end 2. 结果 龙格库塔方法: 计算值 x=0.10000 y=0.00000 计算值 x=0.20000 y=0.00238 计算值 x=0.30000 y=0.00875 计算值 x=0.40000 y=0.02115 计算值 x=0.50000 y=0.04161 计算值 x=0.60000 y=0.07230 计算值 x=0.70000 y=0.11552 计算值 x=0.80000 y=0.17394 计算值 x=0.90000 y=0.25072 计算值 x=1.00000 y=0.34995
五、总结 刚开始没想好怎么下手,去网上查找了资料,发现程序很简单
分享到:
收藏