计算方法第四次上机报告。
2.用欧拉方法解初值。
y’=10x(1-y) 0<=x<=1
y(0)=0
取步长h=0.1,保留5位有效数字,并与准确解相比较。
分析:该题目考察欧拉方法解初值问题。
程序如下:function heun(a,b,y0,n)
h=(b-a)/n;x=a:h:b;
y=y0*ones(1,n+1);
for j=2:n+1
yp=y(j-1)+h*f(x(j-1),y(j-1));
yc=y(j-1)+h*f(x(j),yp);
y(j)=1/2*(yp+yc);
endfor k=1:n+1
fprintf('x[%d]=%f\ty[%d]=%f',k-1,x(k),k-1,y(k));
endfunction z=f(xx,yy)
z=10*xx*(1-yy);
运行结果:> heun(0,1,0,10)
x[0]=0.000000 y[0]=0.000000
x[1]=0.100000 y[1]=0.050000
x[2]=0.200000 y[2]=0.183000
x[3]=0.300000 y[3]=0.362740
x[4]=0.400000 y[4]=0.547545
x[5]=0.500000 y[5]=0.705905
x[6]=0.600000 y[6]=0.823543
x[7]=0.700000 y[7]=0.901184
x[8]=0.800000 y[8]=0.947627
x[9]=0.900000 y[9]=0.973290
x[10]=1.000000 y[10]=0.986645
分析:该结果与准确结果相比比较接近,但是有一定的误差。
6.用四阶龙格—库塔公式解第三题中的初值问题,取步长h=0.2,保留五位有效数字。
题目目的分析:
该题考查四阶龙格-库塔方法和改进欧拉方法求解精确度问题。
程序:改进欧拉法:
function heun(a,b,y0,n)
h=(b-a)/n;x=a:h:b;
y=y0*ones(1,n+1);
for j=2:n+1
yp=y(j-1)+h*f(x(j-1),y(j-1));
yc=y(j-1)+h*f(x(j),yp);
y(j)=1/2*(yp+yc);
endfor k=1:n+1
fprintf('x[%d]=%f\ty[%d]=%f',k-1,x(k),k-1,y(k));
end四阶龙格-库塔方法:
function oderk4(a,b,y0,n)
h=(b-a)/n;x=a:h:b;
y=y0*ones(1,n+1);
for j=2:n+1
k1=f(x(j-1),y(j-1));
k2=f(x(j-1)+h/2,y(j-1)+h/2*k1);
k3=f(x(j-1)+h/2,y(j-1)+h/2*k2);
k4=f(x(j-1)+h,y(j-1)+h*k3);
y(j)=y(j-1)+h/6*(k1+k4)+h/3*(k2+k3);
endfor k=1:n+1
fprintf('x[%d]=%f\ty[%d]=%f',k-1,x(k),k-1,y(k));
endfunction z=f(xx,yy)
z=-yy;
结果:> heun(0,1.0,1,10)
x[0]=0.000000 y[0]=1.000000
x[1]=0.100000 y[1]=0.905000
x[2]=0.200000 y[2]=0.819025
x[3]=0.300000 y[3]=0.741218
x[4]=0.400000 y[4]=0.670802
x[5]=0.500000 y[5]=0.607076
x[6]=0.600000 y[6]=0.549404
x[7]=0.700000 y[7]=0.497210
x[8]=0.800000 y[8]=0.449975
x[9]=0.900000 y[9]=0.407228
x[10]=1.000000 y[10]=0.368541
> oderk4(0,1.0,1,5)
x[0]=0.000000 y[0]=1.000000
x[1]=0.200000 y[1]=0.818733
x[2]=0.400000 y[2]=0.670324
x[3]=0.600000 y[3]=0.548817
x[4]=0.800000 y[4]=0.449335
x[5]=1.000000 y[5]=0.367885
结果分析:由程序结果得改进欧拉法和四阶龙格-库塔法运行结果上在小数第二位后才开始有所不同,但结果相差不大,精确度都是挺高的。
12.将二阶方程。
化为一阶方程组,取h=0.1,用四阶龙格-库塔法求有y(0.2)的近似值,保留5位有效数字。
解:目的分析:
该题目是要将二阶方程化为一解方程组,并用四阶龙格-库塔法求近似值。
程序如下:公式部分:
function z=f1(xx,yy)
z=5*xx-6*yy;
四阶龙格-库塔法:
function oderk4_1(a,b,y0,n)
h=(b-a)/n;x=a:h:b;
y=y0*ones(1,n+1);
z=-ones(1,n+1);
for j=2:n+1
k1=z(j-1);
l1=f1(z(j-1),y(j-1));
k2=z(j-1)+h/2*l1;
l2=f1(z(j-1)+h/2*l1,y(j-1)+h/2*k1);
k3=z(j-1)+h/2*l2;
l3=f1(z(j-1)+h*l2/2,y(j-1)+h/2*k2);
k4=z(j-1)+h*l3;
l4=f1(z(j-1)+h*l3,y(j-1)+h*k3);
y(j)=y(j-1)+h*(k1+2*k2+2*k3+k4)/6;
z(j)=z(j-1)+h*(l1+2*l2+2*l3+l4)/6;
endfor k=1:n+1
fprintf('x[%d]=%f\ty[%d]=%f',k-1,x(k),k-1,y(k));
endend
结果图:结果分析:
由程序结果得四阶龙格-库塔法所得y(0.2)=0.501088
所给初值问题精确解为,y(0.2)=0.5009424.两结果在数值上相差不大,精确度高。
计算方法上机作业
计算方法上机报告。姓名 学号 班级 上课班级 1 算法思想。2 算法结构。3 matlab源程序。clear 清除工作空间变量。clc 清除命令窗口命令。m input 请输入有效数字的位数m输入有效数字的位数。s 0for n 0 50 t 1 16 n 4 8 n 1 2 8 n 4 1 8 n...
计算方法上机作业
表2 新算法迭代结果1 初值 0,精度ep 初始选择因子p 修正因子 0.1,最大迭代次数n 0,局部修正次数m分别取1,2,3次,f 49881192646492934000000000000.000000 表3 新算法迭代法结果2 初值 0,精度ep 初始选择因子p 修正因子 0.05,最大迭代...
数值计算方法上机作业
地球科学与技术学院地球探测与信息技术研11 6班孙殿强s1 实验2.1迭代法 初始值与收敛性。实验目的 初步认识非线性问题的迭代法与线性问题的迭代法的差别,迭代法及初始值与迭代收敛性的关系。问题提出 迭代法是求解非线性方程 组 的基本方法,与线性方程的情况一样,其构造方法多种多样,但关键是怎样才能使...