Southeast University
计算方法实验报告
学 生 院 系 : 学 生 姓 名 : 学 生 学 号 :
实验一
一、实验题目:插值法p245 二、程序设计
P245_main.m
x=[0.3 0.42 0.5 0.58 0.66 0.72];
y=[1.04403 1.08462 1.11803 1.15603 1.19817 1.23223]; P245(x,y,0.46); P245(x,y,0.55); P245(x,y,0.6);
P245.m
function newtint( x,y,xhat ) n=length(y); c=y(:); for j=2:n for i=n:-1:j
c(i)=(c(i)-c(i-1))/(x(i)-x(i-j+1)); end end
yhat=c(n); for i=n-1:-1:1
yhat=yhat*(xhat-x(i))+c(i); end
fprintf('N(%f)= %f' ,xhat,yhat) disp('/n' ) end
三、程序运行结果
N(0.460000)= 1.100724/n N(0.550000)= 1.141271/n N(0.600000)= 1.166194/n
2
实验二
一、实验题目:舍入误差与数值稳定性p217_4 二、程序设计
n=input('输入N=\\n'); y1=0; y2=0;
digits(40); format long;
y=0.5*(1.5-1/n-1/(n+1)); for j=2:n
y1=y1+1/(j*j-1); end
fprintf('%s y1=%g\\n','从小到大计算结果',y1);
if floor(log10(abs(y1-y)))-log10(abs(y1-y)) else m=-floor(log10(abs(y1-y)))+ceil(log10(y1))-1; end fprintf('%s%d','有效位数',m); for j=n:-1:2 y2=y2+1/(j*j-1); end disp('\\n') fprintf('%s y2=%g\\n','从大到小计算结果',y2); if floor(log10(abs(y2-y)))-log10(abs(y2-y)) else m=-floor(log10(abs(y2-y)))+ ceil (log10(y2))-1; end fprintf('%s%d','有效位数',m); 四、程序运行结果 3