数值分析实验报告1Word文档下载推荐.docx
《数值分析实验报告1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告1Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
end
s=sum(s);
I(n)=exp(-1)*s;
I
运行结果:
k=9
m=1000
I=
Columns1through6
0.31606049880.23096057990.18394013730.15356013020.13212114220.1161015912
Columns7through9
0.10363907350.09364759740.0854476226
2、利用秦九韶算法计算当
=5,
=2
+3;
n=100,x=0.5;
n=150,x=13多项式
(
)=
+…
…
+
的值。
通过调整程序以简化计算步骤,减少运算次数
秦久韶算法
n=input('
n='
x=input('
x='
a
(1)=5;
fork=1:
n;
a(k+1)=2.*a(k)+3;
s(n+1)=a(n+1);
fori=n:
-1:
1
s(i)=x.*s(i+1)+a(i);
Pnx=s
(1)
n=100
x=0.5
Pnx=
802.0000000
n=150
x=13
1.4659714820e+213
3、设
=28,按递推公式
=
-1/100
计算到
,
。
若取
27.982(五位有效数字),试问计算
、
将有多大的误差。
使用递推公式计算求数列第n项值
用递推公式迭代
)
Y0=28;
Y
(1)=Y0-sqrt(783)/100;
forn=2:
Y(n)=Y(n-1)-sqrt(783)/100;
y
(1)=Y0-27.982/100;
y(n)=y(n-1)-27.982/100;
y100=y(100)
y500=y(500)
e1=y(100)-Y(100)
e2=y(500)-Y(500)
k=500
k=
500
y100=
0.01800000000
y500=
-1.1191000000e+002
e1=
1.3715926637e-004
e2=
6.8579633158e-004
二章
掌握插值原理和不同插值方法
3、给出
的数值表,用线性插值级二次插值计算ln0.54的近似值。
x
0.4
0.5
0.6
0.7
0.8
Lnx
-0.916291
-0.693147
-0.510826
-0.357765
-0.223144
matlab线性插值函数
线性插值程序:
x1=input('
x1='
x=[0.4:
0.1:
0.8];
y=[-0.916291-0.693147-0.510826-0.357765-0.223144];
y1=interp1(x,y,x1,'
linear'
x1=0.54
y1=
-0.620218600
二次插值
二次插值程序:
x0=[0.40.50.60.70.8];
y0=[-0.916291-0.693147-0.510826-0.356675-0.223144];
x=0.54;
n=length(x0);
s=0;
forj=0:
(n-1)
t=1;
fori=0:
ifi~=j
t=t*(x-x0(i+1))/(x0(j+1)-x0(i+1));
end
s=s+t*y0(j+1);
s
s=
-0.6161427152
4、给出cosx,
的函数表,步长h=
若函数表具有五位有效数字,研究用线性插值求cosx近似值时的总误差限。
线性插值
i=1;
whilei<
5402
x=0:
pi/180/60:
pi/2;
a=cos(x);
x1=x;
x(i)=[];
a(i)=[];
b(i)=interp1(x,a,x1(i),’linear’);
i=i+1;
b;
a=cos(x);
a
(1)=[];
a(5400)=[];
b
(1)=[];
b(5400)=[];
c=b-a;
e1=max(abs(c))
4.2307972903e-008
21、求
=1/
在-5
5上取n=10,按等距节点求分段线性差值函数
,并计算各节点间终点处的
与
的值,并估计误差。
formatlong
x=-5:
5;
f=1./(1+x.^2);
10
Ihm(i)=(f(i)+f(i+1))/2;
xm(i)=(x(i)+x(i+1))/2;
fm(i)=1./(1+xm(i).^2);
e(i)=Ihm(i)-fm(i);
Ihm
fm
e
Ihm=
0.048642533940.079411764710.15000000000.35000000000.75000000000.7500000000
Columns7through10
0.35000000000.15000000000.079411764710.04864253394
fm=
.0470*******
0.30769230770.13793103450.075471698110.04705882353
e=
0.0015837104070.0039400665930.012068965520.04230769231-0.05000000000-0.05000000000
0.042307692310.012068965520.0039400665930.001583710407
23.求f(x)=x^4在[a,b]上的分段Hermite插值,并估计误差。
matlab中Hermite插值函数
a=input('
a='
b=input('
b='
x0=input('
x0='
x=linspace(a,b,n);
f=x.^4;
ifx0<
a&
x0>
b
disp('
Error'
else
y0=interp1(x,f,x0,'
pchip'
y0
a=0
b=5
n=1000
x0=2
y0=
16.000000060
24,给定数据表如下,是求出三次样条插值S(x),并满足条件
三次样条差值
x=[0.250.300.390.450.53];
y=[0.50000.54770.62450.67080.7280];
y0=interp1(x,y,x0,'
spline'
(待定)
四章
4、用simpson公式求积分
并估计误差。
simpson公式法
a=0;
b=1;
f=inline('
exp(-x)'
s=((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b))
symsx
f=exp(-x);
s0=int(f,x,a,b);
s0=eval(s0);
e=s-s0
0.6323336800
2.131211751e-004
8、用Romberg方法计算积分2/
要求误差不超过
Romberg方法
首先建立一个以Romberg.m命名的M文件:
function[q,step]=Roberg(f,a,b,eps)
if(nargin==3)
eps=1.0e-4;
end;
M=1;
tol=10;
k=0;
T=zeros(1,1);
h=b-a;
T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b));
whiletol>
eps
k=k+1;
h=h/2;
Q=0;
fori=1:
M
x=a+h*(2*i-1);
Q=Q+subs(sym(f),findsym(sym(f)),x);
end;
T(k+1,1)=T(k,1)/2+h*Q;
M=M*2;
forj=1:
k;
T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);
tol=abs(T(k+1,j+1)-T(k,j));
q=T(k+1,k+1);
step=k;
>
f=@(x)exp(-x)
f=@(x)exp(-x)
[R,k,T]=romberg(f,0,1,1e-5)
R=0.6321
k=3
T=0.6839000
0.64520.632300
0.63540.63210.63210
0.63290.63210.63210.6321
Y=2./sqrt(pi).*R
Y=0.7133
11、用下列方法计算积分
,并比较结果。
(1)Romberg方法;
(2)三点及五点Gauss公式;
(3)将积分区间分为四等分,用复化两点Gauss公式。
Romberg方法:
借用上题建立的Romberg函数,在命令窗口输入:
f=@(y)1/(y)
f=@(y)1/(y)
[R,k,T]=romberg(f,1,3,1e-5)
R=1.098612291
k=5
三点Gauss公式
由于积分区间是[1,3],故作变化,
=
,查表有,
=0.77145966692,
1/(x+2)'
x=[0.7745966692,-0.7745966692,0];
A=[0.555555556,0.555555556,0.888888889];
I1=0;
length(x)
I1=I1+feval(f,x(i))*A(i);
I1
I1=1.09803922
五点高斯公式:
=0.2369269,0.4786287,0.5688889
);
x=[-0.961799,-0.5384693,0,0.5384693,0.961799];
A=[0.2369269,0.4786287,0.5688889,0.4786287,0.2369269];
I2=0;
I2=I2+feval(f,x(i))*A(i);
I2
I2=1.108682446
复化两点高斯公式:
同理
,通过查表求积系数为1,求积节点
I=1*feval(f,-0.57735)+1*feval(f,0.57735)
I=1.090908998
五章
未完待续……