最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

二分法、简单迭代法的matlab代码实现

来源:动视网 责编:小OO 时间:2025-09-26 11:04:09
文档

二分法、简单迭代法的matlab代码实现

实验一非线性方程的数值解法(一)信息与计算科学金融崔振威201002034031一、实验目的:熟悉二分法和简单迭代法的算法实现。二、实验内容:教材P402.1.5三、实验要求1根据实验内容编写二分法和简单迭代法的算法实现2简单比较分析两种算法的误差3试构造不同的迭代格式,分析比较其收敛性(一)、二分法程序:functionef=bisect(fx,xa,xb,n,delta)%fx是由方程转化的关于x的函数,有fx=0。%xa解区间上限%xb解区间下限%n最多循环步数,防止死循环。%delta
推荐度:
导读实验一非线性方程的数值解法(一)信息与计算科学金融崔振威201002034031一、实验目的:熟悉二分法和简单迭代法的算法实现。二、实验内容:教材P402.1.5三、实验要求1根据实验内容编写二分法和简单迭代法的算法实现2简单比较分析两种算法的误差3试构造不同的迭代格式,分析比较其收敛性(一)、二分法程序:functionef=bisect(fx,xa,xb,n,delta)%fx是由方程转化的关于x的函数,有fx=0。%xa解区间上限%xb解区间下限%n最多循环步数,防止死循环。%delta
实验一 非线性方程的数值解法(一)

信息与计算科学金融 崔振威 201002034031

一、实验目的:

熟悉二分法和简单迭代法的算法实现。

二、实验内容:

教材P40 2.1.5

三、实验要求

1 根据实验内容编写二分法和简单迭代法的算法实现

2 简单比较分析两种算法的误差

3 试构造不同的迭代格式,分析比较其收敛性

(一)、二分法程序:

function ef=bisect(fx,xa,xb,n,delta)

% fx是由方程转化的关于x的函数,有fx=0。

% xa 解区间上限

% xb 解区间下限

% n 最多循环步数,防止死循环。

%delta 为允许误差

x=xa;fa=eval(fx);

x=xb;fb=eval(fx);

disp('   [   n        xa          xb          xc        fc  ]');

for i=1:n

end

(二)、简单迭代法程序:

function [x0,k]=iterate (f,x0,eps,N)

if nargin<4

N=500;

end

if nargin<3

ep=1e-12;

end

x=x0;

x0=x+2*eps;

k=0;

while abs(x-x0)>eps & kx0=x;

x=feval(f,x0);

k=k+1;

end

x0=x;

if k==N

end

解:a、g(x)=x5-3x3-2x2+2

二分法求方程:

  (1)、 在matlab的命令窗口中输入命令:

 得下图:

 

由上图可得知:方程在[-3,3]区间有根。

(2)、二分法输出结果

>> f='x^5-3*x^3-2*x^2+2'

f =

x^5-3*x^3-2*x^2+2

>> bisect(f,-3,3,20,10^(-12))

    2.0000   -3.0000         0   -1.5000    0.0313

    3.0000   -3.0000   -1.5000   -2.2500  -31.6182

    4.0000   -2.2500   -1.5000   -1.8750   -8.4301

    5.0000   -1.8750   -1.5000   -1.6875   -2.9632

    6.0000   -1.6875   -1.5000   -1.5938   -1.2181

    7.0000   -1.5938   -1.5000   -1.5469   -0.5382

    8.0000   -1.5469   -1.5000   -1.5234   -0.2405

    9.0000   -1.5234   -1.5000   -1.5117   -0.1015

   10.0000   -1.5117   -1.5000   -1.5059   -0.0343

   11.0000   -1.5059   -1.5000   -1.5029   -0.0014

   12.0000   -1.5029   -1.5000   -1.5015    0.0150

   13.0000   -1.5029   -1.5015   -1.5022    0.0068

   14.0000   -1.5029   -1.5022   -1.5026    0.0027

   15.0000   -1.5029   -1.5026   -1.5027    0.0007

   16.0000   -1.5029   -1.5027   -1.5028   -0.0003

   17.0000   -1.5028   -1.5027   -1.5028    0.0002

   18.0000   -1.5028   -1.5028   -1.5028   -0.0001

   19.0000   -1.5028   -1.5028   -1.5028    0.0001

   20.0000   -1.5028   -1.5028   -1.5028   -0.0000

2、迭代法求方程:

迭代法输出结果:

>> f=inline('x^5-3*x^3-2*x^2+2');

>> [x0,k]=iterate(fun1,2)

x0 =

k =

>> [x0,k]=iterate(fun1,1.5)

x0 =

k =

>> [x0,k]=iterate(fun1,2.5)

x0 =

k =

(3)、误差分析:由二分法和迭代法输出结果可知,通过定点迭代法得出方程的解误差比二分法大,而利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。

b、g(x)=cos(sin(x))

二分法求方程:

  (1)、 在matlab的命令窗口中输入命令:

 得下图:

 

由上图可得知:方程在[-4,4]区间无根。

(2)、二分法输出结果

>>f='cos(sin(x))'

f =

cos(sin(x))

>> bisect(f,-4,4,20,10^(-12))

    2.0000         0    4.0000    2.0000    0.6143

    3.0000    2.0000    4.0000    3.0000    0.9901

    4.0000    3.0000    4.0000    3.5000    0.9391

    5.0000    3.5000    4.0000    3.7500    0.8411

    6.0000    3.7500    4.0000    3.8750    0.7842

    7.0000    3.8750    4.0000    3.9375    0.7554

    8.0000    3.9375    4.0000    3.9688    0.7412

    9.0000    3.9688    4.0000    3.9844    0.7341

   10.0000    3.9844    4.0000    3.9922    0.7305

   11.0000    3.9922    4.0000    3.9961    0.7288

   12.0000    3.9961    4.0000    3.9980    0.7279

   13.0000    3.9980    4.0000    3.9990    0.7275

   14.0000    3.9990    4.0000    3.9995    0.7273

   15.0000    3.9995    4.0000    3.9998    0.7271

   16.0000    3.9998    4.0000    3.9999    0.7271

   17.0000    3.9999    4.0000    3.9999    0.7271

   18.0000    3.9999    4.0000    4.0000    0.7270

   19.0000    4.0000    4.0000    4.0000    0.7270

   20.0000    4.0000    4.0000    4.0000    0.7270

2、迭代法求方程:

迭代法输出结果:

>> f=inline('cos(sin(x))');

>> [x0,k]=iterate(f,0.5)

x0 =

k =

>> [x0,k]=iterate(f,1)

x0 =

k =

>> [x0,k]=iterate(f,1.5)

x0 =

k =

>> [x0,k]=iterate(f,2)

x0 =

k =

>> [x0,k]=iterate(f,2.5)

x0 =

k =

14

(3)、由于该方程无解,所以无法比较误差。

c、g(x)=x2-sin(x+0.15)

二分法求方程:

  (1)、 在matlab的命令窗口中输入命令:

 得下图:

 

由上图可得知:方程在[-3,3]区间有根。

(2)、二分法输出结果

>> f='x^2-sin(x+0.15)'

f =

x^2-sin(x+0.15)

>> bisect(f,-3,3,30,10^(-12))

    1.0000   -3.0000    3.0000         0   -0.1494

    2.0000   -3.0000         0   -1.5000    3.2257

    3.0000   -1.5000         0   -0.7500    1.1271

    4.0000   -0.7500         0   -0.3750    0.3637

    5.0000   -0.3750         0   -0.1875    0.0726

    6.0000   -0.1875         0   -0.0938   -0.0474

    7.0000   -0.1875   -0.0938   -0.1406    0.0104

    8.0000   -0.1406   -0.0938   -0.1172   -0.0191

    9.0000   -0.1406   -0.1172   -0.12   -0.0045

   10.0000   -0.1406   -0.12   -0.1348    0.0029

   11.0000   -0.1348   -0.12   -0.1318   -0.0008

   12.0000   -0.1348   -0.1318   -0.1333    0.0011

   13.0000   -0.1333   -0.1318   -0.1326    0.0001

   14.0000   -0.1326   -0.1318   -0.1322   -0.0003

   15.0000   -0.1326   -0.1322   -0.1324   -0.0001

   16.0000   -0.1326   -0.1324   -0.1325    0.0000

   17.0000   -0.1325   -0.1324   -0.1324   -0.0000

   18.0000   -0.1325   -0.1324   -0.1325   -0.0000

   19.0000   -0.1325   -0.1325   -0.1325    0.0000

   20.0000   -0.1325   -0.1325   -0.1325    0.0000

   21.0000   -0.1325   -0.1325   -0.1325    0.0000

   22.0000   -0.1325   -0.1325   -0.1325    0.0000

   23.0000   -0.1325   -0.1325   -0.1325   -0.0000

   24.0000   -0.1325   -0.1325   -0.1325    0.0000

   25.0000   -0.1325   -0.1325   -0.1325   -0.0000

   26.0000   -0.1325   -0.1325   -0.1325    0.0000

   27.0000   -0.1325   -0.1325   -0.1325    0.0000

   28.0000   -0.1325   -0.1325   -0.1325    0.0000

   29.0000   -0.1325   -0.1325   -0.1325    0.0000

   30.0000   -0.1325   -0.1325   -0.1325   -0.0000

2、迭代法求方程:

迭代法输出结果:

>> f=inline('x^2-sin(x+0.15)');

>> [x0,k]=iterate(f,1.96)

x0 =

k =

>> [x0,k]=iterate(f,0,2)

x0 =

k =

>> [x0,k]=iterate(f,0.2)

x0 =

k =

>> [x0,k]=iterate(f,0.3)

x0 =

k =

>> [x0,k]=iterate(f,0.001)

x0 =

k =

(3)、误差分析:由二分法和迭代法输出结果可知,利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。

d、g(x)=xx-cos(x)

二分法求方程:

  (1)、 在matlab的命令窗口中输入命令:

 得下图:

 

由上图可得知:方程在[-1,1]区间有根。

(2)、二分法输出结果

>> f='x^(x-cos(x))'

f =

x^(x-cos(x))

>> bisect(f,-0.1,0.1,20,10^(-12))

    1.0000   -0.1000    0.1000         0       Inf

   2.0000            -0.1000                  0            -0.0500           -22.8740 + 3.5309i

   3.0000            -0.0500                  0            -0.0250           -43.6821 + 3.3947i

   4.0000            -0.0250                  0            -0.0125           -84.4110 + 3.2958i

  1.0e+002 *

   0.0500            -0.0001                  0            -0.0001            -1.6511 + 0.0323i

  1.0e+002 *

   0.0600            -0.0001                  0            -0.0000            -3.2580 + 0.0319i

  1.0e+002 *

   0.0700            -0.0000                  0            -0.0000            -6.48 + 0.0317i

  1.0e+003 *

   0.0080            -0.0000                  0            -0.0000            -1.2872 + 0.0032i

  1.0e+003 *

   0.0090            -0.0000                  0            -0.0000            -2.5679 + 0.0032i

  1.0e+003 *

   0.0100            -0.0000                  0            -0.0000            -5.1285 + 0.0031i

  1.0e+004 *

   0.0011            -0.0000                  0            -0.0000            -1.0249 + 0.0003i

  1.0e+004 *

   0.0012            -0.0000                  0            -0.0000            -2.0490 + 0.0003i

  1.0e+004 *

   0.0013            -0.0000                  0            -0.0000            -4.0971 + 0.0003i

  1.0e+004 *

   0.0014            -0.0000                  0            -0.0000            -8.1931 + 0.0003i

  1.0e+005 *

   0.0001            -0.0000                  0            -0.0000            -1.6385 + 0.0000i

  1.0e+005 *

   0.0002            -0.0000                  0            -0.0000            -3.2769 + 0.0000i

  1.0e+005 *

   0.0002            -0.0000                  0            -0.0000            -6.5537 + 0.0000i

  1.0e+006 *

   0.0000            -0.0000                  0            -0.0000            -1.3107 + 0.0000i

  1.0e+006 *

   0.0000            -0.0000                  0            -0.0000            -2.6215 + 0.0000i

  1.0e+006 *

   0.0000            -0.0000                  0            -0.0000            -5.2429 + 0.0000i

2、迭代法求方程:

迭代法输出结果:

>> f=inline('x^2-sin(x+0.15)');

x0 =

k =

>> [x0,k]=iterate(f,0.01)

x0 =

k =

>> [x0,k]=iterate(f,0.81)

x0 =

k =

>> [x0,k]=iterate(f,0.61)

x0 =

k =

(3)、误差分析:由二分法和迭代法输出结果可知,利用二分法求出的结果中,可以清楚看出方程等于零时的解,其误差比迭代法小。

文档

二分法、简单迭代法的matlab代码实现

实验一非线性方程的数值解法(一)信息与计算科学金融崔振威201002034031一、实验目的:熟悉二分法和简单迭代法的算法实现。二、实验内容:教材P402.1.5三、实验要求1根据实验内容编写二分法和简单迭代法的算法实现2简单比较分析两种算法的误差3试构造不同的迭代格式,分析比较其收敛性(一)、二分法程序:functionef=bisect(fx,xa,xb,n,delta)%fx是由方程转化的关于x的函数,有fx=0。%xa解区间上限%xb解区间下限%n最多循环步数,防止死循环。%delta
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top