数值计算程序.docx
《数值计算程序.docx》由会员分享,可在线阅读,更多相关《数值计算程序.docx(8页珍藏版)》请在冰点文库上搜索。
数值计算程序
数值分析(最下面为今日的程序)
1.二分法,算例(课后习题):
用二分法求方程
-x-1=0在[1,2]内的近似根,要求误差不超过
。
a=1;b=2;
n=10;
fa=a^3-a-1;
fork=1:
n
x=(a+b)/2;
fx=x^3-x-1;
if(fa*fx<0)b=x;end
if(fa*fx>0)a=x;end
end
x
运行结果:
x=
1.3252
2.秦九韶算法,算例(课后习题):
利用秦九韶算法求多项式
在x=3时的值。
a=[1,-1,4,0,-3,1];
p=a
(1);
fork=1:
5
p=a(6-k)+p*3;
end
p
运行结果:
p=
34
3.拉格朗日插值,算例:
已知点(0,0),(1,1),(2,4),利用拉格朗日插值函数求p(x=1.5)。
x=[0,1,2];
y=[0,1,4];
x0=1.5;
l
(1)=(x0-x
(2))*(x0-x(3))/(x
(1)-x
(2))*(x
(1)-x(3));
l
(2)=(x0-x
(1))*(x0-x(3))/(x
(2)-x
(1))*(x
(2)-x(3));
l(3)=(x0-x
(1))*(x0-x
(2))/(x(3)-x
(1))*(x(3)-x
(2));
p=l
(1)*y
(1)+l
(2)*y
(2)+l(3)*y(3);
p
运行结果:
p=
2.2500
4.一次分段插值,算例(例题):
已知sin0.32=0.314567sin0.34=0.333487用线性插值计算sin0.3367的近似值。
x=[0.32,0.34];
y=[0.314567,0.333487];
t=0.3367;
p=((t-x
(2))/(x
(1)-x
(2)))*y
(1)+((t-x
(1))/(x
(2)-x
(1)))*y
(2)
运行结果:
p=
0.3304
5.计算积分
(分别用
)
1)复化梯形
n=8;p=0;i=1;j=1.5;
fork=1:
n
p=p+(0.5/2)*(1/i+1/j);
i=i+0.5;j=j+0.5;
end
p
运行结果:
p=
1.6290
2)复化辛普森:
n=8;p=0;i=1;j=1.5;
fork=1:
n
p=p+(0.5/6)*(1/i+4*(1/(i+0.25))+1/j);
i=i+0.5;j=j+0.5;
end
p
运行结果:
p=
1.6096
6.一步,二步欧拉公式,算例:
用一步,二步欧拉法求y(0.2),其中
,y(0)=1,h=0.1。
1)运用一步欧拉法:
i=0;p=1;
n=2;
fork=1:
n
p=p+0.1*(2+i*p^2);
i=i+0.1;
end
p
运行结果:
p=
1.4144
2)运用二步欧拉法:
i=0;j=0.1;p=1;a=1;
n=2;
fork=1:
n
p=a+j*(2+i*p^2);
i=i+0.1;j=j*2;
end
p
运行结果:
p=
1.4288
7.牛顿迭代法,算例:
1)若
用牛顿迭代法求
,迭代2次。
x=2;n=2;
fork=1:
2
x=x-(2.7^(-x)-0.1)/(-2.7^(-x));
end
x
运行结果:
x=
2.3182
2)求
值,并使其精度为
x=10;m=0.001;
fork=(1:
10)
ifabs((x^2-112)/(2*x))end
x=x-(x^2-112)/(2*x);
end
x
运行结果:
x=
10.7238
8迭代法:
例求方程
-x-1=0在[1,2]内的根。
x=1.5,n=10;
fork=1:
n
x=(x+1)^(1/3);
end
root=x
运行结果
root=
1.3247
9高斯-塞德尔公式,算例:
求解方程
X1=0,X2=0,X3=0,N=10;
fork=1:
N
X1=0.25*(1-X2+X3);
X2=0.2*(X1+X3-3);
X3=(2-2*X1-X2)/6;
end
X1
X2
X3
运行结果:
X1=
0.4317
X2=
-0.4604
X3=
0.2662
今日程序
10追赶法(算列)
程序:
a=[0,4,1];
b=[1,-5,1];
c=[1,6,0];
d=[1,3,2];
u1=c
(1)/b
(1);
y1=d
(1)/b
(1);
u2=c
(2)/(b
(2)-u1*a
(2));
y2=(d
(2)-y1*a
(2))/(b
(2)-u1*a
(2));
u3=c(3)/(b(3)-u2*a(3));
y3=(d(3)-y2*a(3))/(b(3)-u2*a(3));
x3=y3;
x2=y2-u2*x3;
x1=y1-u1*x2;
x1
x2
x3
运行结果:
x1=
0.1333
x2=
0.8667
x3=
1.1333