早教吧作业答案频道 -->其他-->
求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序!求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序.利用所编制的程序,的最小正根,要求精度 .其中二分法的有根区间取为 【4.0,4.6】,
题目详情
求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序!
求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序.
利用所编制的程序,的最小正根,要求精度 .
其中二分法的有根区间取为 【4.0,4.6】,Newton 法的初始值取为x.=4.6 .
求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序.
利用所编制的程序,的最小正根,要求精度 .
其中二分法的有根区间取为 【4.0,4.6】,Newton 法的初始值取为x.=4.6 .
▼优质解答
答案和解析
这个有例子
区间二分法:
与对分查找法相同
1 区间二分法求出的仅仅是方程的一个单根,如果方程有重根或者多个根时,在做区间二分法时就会出现分叉,这样方程有几个根,就会产生几个实数序列,每一个实数序列的极限便是方程的一个根
2 通常用区间二分法为一些迭代法提供靠近x^*的初始选代值;
3 区间二分法的缺点是不能求方程的复数根.
format long
a=5;
b=6;
x1=a;
x2=b;
f1=4*cos(x1)+4*sin(x1)+0.5*x1-2; f2=4*cos(x2)+4*sin(x2)+0.5*x2-2;
step=0.000001;
ii=0;
while abs(x1-x2)>step
ii=ii+1;
x3=(x1+x2)/2;
f3=4*cos(x3)+4*sin(x3)+0.5*x3-2;
if f3~=0
if f1*f3<0
x2=x3;
else
x1=x3;
end
end
end
x3
f=[4*cos(x3)+4*sin(x3)+0.5*x3] disp(['迭代次数:',num2str(ii),'次'])
牛顿迭代法求解:
在方程f(x)=0有实数根的情况下,若能够将方程等价地转化成x=g(x)的形式,然后取一个初始值x0代入x=g(x)的右端,算得x1=g(x0),再计算x2=g(x1),这样依次类推
x(k+1)=g(x(k))
可以得到一个序列xk,通常称g(x)为迭代函数,序列xk为由迭代函数产生得迭代序列,x0为迭代初始值.
同一个方程,不同等价形式的转换产生的迭代法可能收敛,也有可能发散.关于迭代法的敛散性判定有下面的定理(也称李普希兹(Lipschitz定理):
如果迭代函数g(x)在区间[a,b]上连续,且满足以下条件,
1 对于任意的x=[a,b],有g(x)=[a,b]
2 在区间内(a,b)内,函数g(x)满足Lipschitz条件,即存在常数L>0,使得对于任意的x,y=(a,b),都有|g(x)-g(y)|=对于任意的迭代初始值x0=[a,b]均是收敛的
这里与x和y无关的正常数L称为Lipschitz常数.
一种较为特殊得迭代法为牛顿(Newton)迭代法
xk+1=xk-f(xk)/f'(xk)
相应迭代函数为 g(x)=x-f(x)/f'(x)
Newton迭代法的几何意义:它的第k+1次迭代值就是曲线y=f(x)在点(xk,f(xk))处切线y-f(xk)=f'(xk)(x=xk)与轴的交点的横坐标,
%解方程:f=4*(cos(x1)+sin(x1)+0.5*x1-2)=0
x0=9.6;
x1=x0-(4*(cos(x0)+sin(x0))+0.5*x0-2)/(4*(cos(x0)-sin(x0))+0.5);
while abs(x1-x0)>0.000001
x0=x1;
x1=x1-(4*(cos(x0)+sin(x0))+0.5*x0-2)/(4*(cos(x0)-sin(x0))+0.5);
end
f=4*(cos(x1)+sin(x1)+0.5*x1-2)
弦截法:
单点弦截法:
连接两个端点与作弦(a,f(a)) 与(b,f(b))作弦,此弦与轴交点的横坐标设为 x1.
如果f(x1)=0,则x1即为所求根,否则选取(x1,f(x1))点和点(a,f(a))(该点的选取要满足条件f(a)与f''(x)同号,并改记为(x0,f(x0)).再做弦
此弦与轴交点的横坐标设为 x2,依次类推,其迭代格式即为
xk+1=xk-f(xk)*(xk-x0)/(f(xk)-f(x0)
双点弦截法:
无固定点
xk+1=xk-f(xk)*(xk-xk-1)/(f(xk)-f(xk-1)
format long
nx=[];
nx(1)=5;
nx(2)=nx(1)-(2^nx(1)-nx(1)^2-1)/(2^nx(1)*log(2)-2*nx(1));
k=1;
while abs(nx(k+1)-nx(k))>=10^(-6)
k=k+1;
nx(k+1)=nx(k)-(2^nx(k)-nx(k)^2-1)/(2^nx(k)*log(2)-2*nx(k));
end
nk=k+1; disp(['牛顿迭代法迭代次数:',num2str(nk),blanks(4),'方程的',num2str(nx(nk))])
dx=[];
dx(1)=5; dx(2)=dx(1)-(2^dx(1)-dx(1)^2-1)/((2^3-3^2-1)-(2^5-5^2-1))*(3-5);
k=1;
while abs(dx(k+1)-dx(k))>=10^(-6)
k=k+1;
dx(k+1)=dx(k)-(2^dx(k)-dx(k)^2-1)/((2^dx(k)-dx(k)^2-1)-(2^5-5^2-1))*( dx(k)-5);
end
disp(['单点迭代法迭代次数:',num2str(k),blanks(4),'方程的',num2str(dx(k))])
sx=[];
sx(1)=5;
sx(2)=3;
k=1;
while abs(sx(k+1)-sx(k))>=0.000001
k=k+1;
sx(k+1)=sx(k)-((2^sx(k)-sx(k)^2-1)/((2^sx(k)-sx(k)^2-1)-(2^sx(k-1)-sx(k-1)^2-1)))*(sx(k)-sx(k-1));
end
sk=k+1;
disp(['双点迭代法迭代次数:',num2str(sk),blanks(4),'方程的',num2str(sx(sk))])
x=3:0.05:5;
y=2.^x-x.^2-1;
yn=zeros(1,nk);
yd=zeros(1,sk);
subplot(1,2,1)
plot(x,y,sx,yd,'*')
title('双点弦截法')
gtext('y=2^x-x^2-1')
subplot(1,2,2)
plot(x,y,nx,yn,'*')
title('牛顿迭代法')
gtext('y=2^x-x^2-1')
区间二分法:
与对分查找法相同
1 区间二分法求出的仅仅是方程的一个单根,如果方程有重根或者多个根时,在做区间二分法时就会出现分叉,这样方程有几个根,就会产生几个实数序列,每一个实数序列的极限便是方程的一个根
2 通常用区间二分法为一些迭代法提供靠近x^*的初始选代值;
3 区间二分法的缺点是不能求方程的复数根.
format long
a=5;
b=6;
x1=a;
x2=b;
f1=4*cos(x1)+4*sin(x1)+0.5*x1-2; f2=4*cos(x2)+4*sin(x2)+0.5*x2-2;
step=0.000001;
ii=0;
while abs(x1-x2)>step
ii=ii+1;
x3=(x1+x2)/2;
f3=4*cos(x3)+4*sin(x3)+0.5*x3-2;
if f3~=0
if f1*f3<0
x2=x3;
else
x1=x3;
end
end
end
x3
f=[4*cos(x3)+4*sin(x3)+0.5*x3] disp(['迭代次数:',num2str(ii),'次'])
牛顿迭代法求解:
在方程f(x)=0有实数根的情况下,若能够将方程等价地转化成x=g(x)的形式,然后取一个初始值x0代入x=g(x)的右端,算得x1=g(x0),再计算x2=g(x1),这样依次类推
x(k+1)=g(x(k))
可以得到一个序列xk,通常称g(x)为迭代函数,序列xk为由迭代函数产生得迭代序列,x0为迭代初始值.
同一个方程,不同等价形式的转换产生的迭代法可能收敛,也有可能发散.关于迭代法的敛散性判定有下面的定理(也称李普希兹(Lipschitz定理):
如果迭代函数g(x)在区间[a,b]上连续,且满足以下条件,
1 对于任意的x=[a,b],有g(x)=[a,b]
2 在区间内(a,b)内,函数g(x)满足Lipschitz条件,即存在常数L>0,使得对于任意的x,y=(a,b),都有|g(x)-g(y)|=
这里与x和y无关的正常数L称为Lipschitz常数.
一种较为特殊得迭代法为牛顿(Newton)迭代法
xk+1=xk-f(xk)/f'(xk)
相应迭代函数为 g(x)=x-f(x)/f'(x)
Newton迭代法的几何意义:它的第k+1次迭代值就是曲线y=f(x)在点(xk,f(xk))处切线y-f(xk)=f'(xk)(x=xk)与轴的交点的横坐标,
%解方程:f=4*(cos(x1)+sin(x1)+0.5*x1-2)=0
x0=9.6;
x1=x0-(4*(cos(x0)+sin(x0))+0.5*x0-2)/(4*(cos(x0)-sin(x0))+0.5);
while abs(x1-x0)>0.000001
x0=x1;
x1=x1-(4*(cos(x0)+sin(x0))+0.5*x0-2)/(4*(cos(x0)-sin(x0))+0.5);
end
f=4*(cos(x1)+sin(x1)+0.5*x1-2)
弦截法:
单点弦截法:
连接两个端点与作弦(a,f(a)) 与(b,f(b))作弦,此弦与轴交点的横坐标设为 x1.
如果f(x1)=0,则x1即为所求根,否则选取(x1,f(x1))点和点(a,f(a))(该点的选取要满足条件f(a)与f''(x)同号,并改记为(x0,f(x0)).再做弦
此弦与轴交点的横坐标设为 x2,依次类推,其迭代格式即为
xk+1=xk-f(xk)*(xk-x0)/(f(xk)-f(x0)
双点弦截法:
无固定点
xk+1=xk-f(xk)*(xk-xk-1)/(f(xk)-f(xk-1)
format long
nx=[];
nx(1)=5;
nx(2)=nx(1)-(2^nx(1)-nx(1)^2-1)/(2^nx(1)*log(2)-2*nx(1));
k=1;
while abs(nx(k+1)-nx(k))>=10^(-6)
k=k+1;
nx(k+1)=nx(k)-(2^nx(k)-nx(k)^2-1)/(2^nx(k)*log(2)-2*nx(k));
end
nk=k+1; disp(['牛顿迭代法迭代次数:',num2str(nk),blanks(4),'方程的',num2str(nx(nk))])
dx=[];
dx(1)=5; dx(2)=dx(1)-(2^dx(1)-dx(1)^2-1)/((2^3-3^2-1)-(2^5-5^2-1))*(3-5);
k=1;
while abs(dx(k+1)-dx(k))>=10^(-6)
k=k+1;
dx(k+1)=dx(k)-(2^dx(k)-dx(k)^2-1)/((2^dx(k)-dx(k)^2-1)-(2^5-5^2-1))*( dx(k)-5);
end
disp(['单点迭代法迭代次数:',num2str(k),blanks(4),'方程的',num2str(dx(k))])
sx=[];
sx(1)=5;
sx(2)=3;
k=1;
while abs(sx(k+1)-sx(k))>=0.000001
k=k+1;
sx(k+1)=sx(k)-((2^sx(k)-sx(k)^2-1)/((2^sx(k)-sx(k)^2-1)-(2^sx(k-1)-sx(k-1)^2-1)))*(sx(k)-sx(k-1));
end
sk=k+1;
disp(['双点迭代法迭代次数:',num2str(sk),blanks(4),'方程的',num2str(sx(sk))])
x=3:0.05:5;
y=2.^x-x.^2-1;
yn=zeros(1,nk);
yd=zeros(1,sk);
subplot(1,2,1)
plot(x,y,sx,yd,'*')
title('双点弦截法')
gtext('y=2^x-x^2-1')
subplot(1,2,2)
plot(x,y,nx,yn,'*')
title('牛顿迭代法')
gtext('y=2^x-x^2-1')
看了 求用MATLAB编制方程求根...的网友还看了以下:
血糖浓度(血液中葡萄糖的含量)是人体的重要生理指标,其值常以两种计量单位表示,即mmol•L-1和 2020-05-15 …
设f(x)是定义在对称区间(-L,L)内的任何函数,证明……设f(x)是定义在对称区间(-L,L) 2020-05-16 …
如图所示,电源电压U=12V,小灯泡L的额定电压为6V,当滑动变阻器的滑片P移至中点时,小灯泡L正 2020-06-09 …
判断下列说法是否正确:(答案是全错,要写出错因)用1L水溶解40gNaOH,所得溶液的浓度为1mo 2020-06-19 …
设V是欧氏空间,L(a1,a2...am)是向量a1,a2...am的生成子空间,若(b,ai)= 2020-06-22 …
分别向等体积1mol/L盐酸和1mol/L醋酸溶液中加入等量的镁条,反应时间与溶液pH变化关系如图 2020-07-17 …
将一条直线l绕定点O旋转a角作法是否正确作法如下1.做OH垂直l于H2.作角HOH'=a,截OH'= 2020-11-06 …
(2011•宜宾一模)下列说法中,正确的是()A.直线Z平行于平面α内的无数条直线,则l∥αB.若直 2020-11-12 …
如图所示,电源电压不变,电键K闭合时,电灯L正常发光,下列说法正确的是[]A.K断开后,滑片P向a端 2020-12-20 …
灯泡L标着“6V6W”,求:(1)灯泡L正常发光时的电流和电阻(2)如图所示,把灯泡L与电压恒为6V 2021-01-13 …