2024年4月26日发(作者:春骞魁)
迭代法求解方程问题实验报告
姓名:殷伯旭 班级:信计0801班 学号:u200810065
一. 实验目的
运用数学知识与matlab相结合,运用数学方法,建立数学模型,用matlab软
件辅助求解模型,解决实际问题。
二. 实验任务
求方程
e
x
10x20
的一个近似解,误差不超过
10
4
,要求:
设计4种求解的迭代法,讨论其收敛性,并求出满足精度的近似解;
三. 实验分析与求解
题目要求设计四种迭代方法,我们考虑用书上的四种迭代思想:
2e
x
方法一:用Steffenson迭代法,首先构造函数:
g(x)
,
10
(g(x
k
)x
k
)
2
则迭代公式为:
x
k1
x
k
g(g(x
k
))2g(x
k
)x
k
2
e
方法二:一般的迭代法,
x
k1
10
x
k
f(a)
(ba)
,
f(b)f(a)
方法三:单点弦截法法,固定
x
0
0.25,
x
1
a
其中端点
a0,b
f(x
k
)
1
(xx)
,
则迭代公式为:
x
k1
x
k
2
f(x
k
)f(x
0
)
k
0
f(x
k
)
(x
k
x
k1
)
f(x
k
)f(x
k1
)
方法四:双点弦截法法,迭代公式为:
x
k1
x
k
实验程序:
function shiyan112
%%%%%方法一: stefften迭代
x0=0.25;
g0=(2-exp(x0))/10;
gg0=(2-exp(g0))/10;
x1=x0-(g0-x0)^2/(gg0-2*g0+x0);
n1=0;
while abs(x1-x0)>0.00001
x0=x1;
g0=(2-exp(x0))/10;
gg0=(2-exp(g0))/10;
x1=x0-(g0-x0)^2/(gg0-2*g0+x0);
n1=n1+1;
x(n1)=x1;
end
n1
x0=x1
%%%%%方法二: 一般迭代
x20=0.25;
x21=(2-exp(x20))/10;
n2=0;
while abs(x21-x20)>0.00001
x20=x21;
x21=(2-exp(x20))/10;
n2=n2+1;
end
n2
x20=x21
%%%%%方法三: 单点弦截法
x30=0.25;
a=0;b=0.5;n3=0;
fa=exp(a)+10*a-2;
fb=exp(b)+10*b-2;
x31=a-fa*(b-a)/(fb-fa);
f30=exp(x30)+10*x30-2;
f31=exp(x31)+10*x31-2;
x32=x31-f31*(x31-x30)/(f31-f30);
while abs(x32-x31)>0.00001
x31=x32;
f31=exp(x31)+10*x31-2;
x32=x31-f31*(x31-x30)/(f31-f30);
n3=n3+1;
end
n3
x30=x32
%%%%%%%方法四:双点弦截法
x40=0.25;
x41=0.5;n4=0;
f40=exp(x40)+10*x40-2;
f41=exp(x41)+10*x41-2;
x42=x41-f41*(x41-x40)/(f41-f40);
while abs(x42-x41)>0.00001
x40=x41;
x41=x42;
f40=exp(x40)+10*x40-2;
f41=exp(x41)+10*x41-2;
x42=x41-f41*(x41-x40)/(f41-f40);
n4=n4+1;
end
n4
x40=x42
运行结果:
(1) 方法一: x =0.0905 ; 迭代次数: n1 = 2
(2)方法二: x =0.0905 ; 迭代次数: n2 = 5
(3) 方法三: x =0.0905 ; 迭代次数: n3 = 2
(4) 方法四: x =0.0905 ; 迭代次数: n4 =3
3) 实验总结
通过自主学习matlab,编程能力有了较大提高,并将其应用于数值代数刚学的
一种思想,在加深对该领域印象的同时对matlab有了更深一层的了解。
2024年4月26日发(作者:春骞魁)
迭代法求解方程问题实验报告
姓名:殷伯旭 班级:信计0801班 学号:u200810065
一. 实验目的
运用数学知识与matlab相结合,运用数学方法,建立数学模型,用matlab软
件辅助求解模型,解决实际问题。
二. 实验任务
求方程
e
x
10x20
的一个近似解,误差不超过
10
4
,要求:
设计4种求解的迭代法,讨论其收敛性,并求出满足精度的近似解;
三. 实验分析与求解
题目要求设计四种迭代方法,我们考虑用书上的四种迭代思想:
2e
x
方法一:用Steffenson迭代法,首先构造函数:
g(x)
,
10
(g(x
k
)x
k
)
2
则迭代公式为:
x
k1
x
k
g(g(x
k
))2g(x
k
)x
k
2
e
方法二:一般的迭代法,
x
k1
10
x
k
f(a)
(ba)
,
f(b)f(a)
方法三:单点弦截法法,固定
x
0
0.25,
x
1
a
其中端点
a0,b
f(x
k
)
1
(xx)
,
则迭代公式为:
x
k1
x
k
2
f(x
k
)f(x
0
)
k
0
f(x
k
)
(x
k
x
k1
)
f(x
k
)f(x
k1
)
方法四:双点弦截法法,迭代公式为:
x
k1
x
k
实验程序:
function shiyan112
%%%%%方法一: stefften迭代
x0=0.25;
g0=(2-exp(x0))/10;
gg0=(2-exp(g0))/10;
x1=x0-(g0-x0)^2/(gg0-2*g0+x0);
n1=0;
while abs(x1-x0)>0.00001
x0=x1;
g0=(2-exp(x0))/10;
gg0=(2-exp(g0))/10;
x1=x0-(g0-x0)^2/(gg0-2*g0+x0);
n1=n1+1;
x(n1)=x1;
end
n1
x0=x1
%%%%%方法二: 一般迭代
x20=0.25;
x21=(2-exp(x20))/10;
n2=0;
while abs(x21-x20)>0.00001
x20=x21;
x21=(2-exp(x20))/10;
n2=n2+1;
end
n2
x20=x21
%%%%%方法三: 单点弦截法
x30=0.25;
a=0;b=0.5;n3=0;
fa=exp(a)+10*a-2;
fb=exp(b)+10*b-2;
x31=a-fa*(b-a)/(fb-fa);
f30=exp(x30)+10*x30-2;
f31=exp(x31)+10*x31-2;
x32=x31-f31*(x31-x30)/(f31-f30);
while abs(x32-x31)>0.00001
x31=x32;
f31=exp(x31)+10*x31-2;
x32=x31-f31*(x31-x30)/(f31-f30);
n3=n3+1;
end
n3
x30=x32
%%%%%%%方法四:双点弦截法
x40=0.25;
x41=0.5;n4=0;
f40=exp(x40)+10*x40-2;
f41=exp(x41)+10*x41-2;
x42=x41-f41*(x41-x40)/(f41-f40);
while abs(x42-x41)>0.00001
x40=x41;
x41=x42;
f40=exp(x40)+10*x40-2;
f41=exp(x41)+10*x41-2;
x42=x41-f41*(x41-x40)/(f41-f40);
n4=n4+1;
end
n4
x40=x42
运行结果:
(1) 方法一: x =0.0905 ; 迭代次数: n1 = 2
(2)方法二: x =0.0905 ; 迭代次数: n2 = 5
(3) 方法三: x =0.0905 ; 迭代次数: n3 = 2
(4) 方法四: x =0.0905 ; 迭代次数: n4 =3
3) 实验总结
通过自主学习matlab,编程能力有了较大提高,并将其应用于数值代数刚学的
一种思想,在加深对该领域印象的同时对matlab有了更深一层的了解。