数值分析上机题4,6.doc
文本预览下载声明
上机题4
3次样条插值函数:
编制求第一型3次样条插值函数的通用程序;
已知汽车门曲线型值点的数据如下:
i012345xi012345yi2.513.304.044.705.225.54i678910xi678910yi5.785.405.575.705.80端点条件为y0’=0.8,y10’=0.2,用所编程序求车门的3次样条插值函数S(x),并打印出S(i+0.5),i=0,1,2,…,9。
Matlab代码:
x=[0,1,2,3,4,5,6,7,8,9,10]; %输入x
y=[2.51,3.3,4.04,4.7,5.22,5.54,5.78,5.4,5.57,5.7,5.8]; %输入y
y0=0.8; %输入第一类端点条件
y10=0.2;
[m,n]=size(x); %读取矩阵大小
h=zeros(m,n); %初始化各矩阵
u=zeros(m,n-1);
v=zeros(m,n-1);
p=zeros(m,n-1);
f=zeros(m,n-2);
d=zeros(m,n);
M=zeros(m,n);
S=zeros(m,n);
for i=1:1:n-1 %h(i)值计算
h(i)=x(i+1)-x(i);
end
for i=1:1:n-2
u(i)=h(i)/(h(i)+h(i+1)); %u(i)、v(i)值计算
v(i)=1-u(i);
end
for i=1:1:n-1
p(i)=(y(i+1)-y(i))/(x(i+1)-x(i)); %一阶差商f[xi,xi+1]计算
end
for i=1:1:n-2 %二阶差商f[xi,xi+1,xi+2]计算
f(i)=(p(i+1)-p(i))/(x(i+2)-x(i));
end
d(1)=(p(1)-y0)/(x(2)-x(1))*6; %d(1)、d(n)值计算
d(n)=(y10-p(10))/(x(n)-x(n-1))*6;
for i=2:1:n-1 %d(i)值计算
d(i)=6*f(i-1);
end
A=zeros(n);
A(1,1)=1;A(1,2)=2;
A(n,n)=2;A(n,n-1)=1;
for i=2:1:n-1 %系数矩阵构造
A(i,i)=2;
A(i,i-1)=u(i-1);
A(i,i+1)=v(i-1);
end
N=inv(A)*d; %M(i)矩阵求解
M=N;
for i=1:1:n-1
S(i)=y(i)+(p(i)-(M(i)/3+M(i+1)/6)*h(i))*0.5+M(i)/2*0.5^2+(M(i+1)-M(i))/6/h(i)*0.5^3; %S(i)求解
j=i-1+0.5;
s=S(i);
fprintf(s[%3.1f]=%5.4f\n,j,s) %输出S(i)
end
上机题6
常微分方程初值问题数值解:
编制RK4方法通用程序;
编制AB4方法通用程序(由RK4提供初值);
编制AB4-AM4预测校正方法通用程序(由RK4提供初值)
编制带改进的AB4-AM4预测校正方法通用程序(由RK4提供初值)
对于初值问题
取步长,应用(1)~(4)中的四种方法进行计算,并将计算结果和精确解作比较;
通过本上机题,你能得到哪些结论?
Matlab代码:
x=zeros(1,16);
y=zeros(1
显示全部