数学实验第三版(主编:李继成 赵小艳)课后练习答案(十一)(1)(2)(3)

文章介绍了使用MATLAB编程语言解决非线性方程组的方法,包括莱昂纳多方程求解、二分法找交点、牛顿切线迭代法等,并展示了如何构造和验证迭代序列的收敛性。
摘要由CSDN通过智能技术生成

目录

实验十一:非线性方程(组)求解

练习一

练习二

练习三


实验十一:非线性方程(组)求解

练习一

1.求莱昂纳多方程 的解

clc;clear;
p=[1,2,10,-20];
roots(p)

ans =

  -1.6844 + 3.4313i

  -1.6844 - 3.4313i

   1.3688 + 0.0000i

2.求方程 的解.

clc;clear;
f=@(x)exp(x)+10*x-2;
ezplot(f);
grid on
fzero(f,[-2,2])

ans =

    0.0905

练习二

用“二分法”求解下列问题(要求精度达到 )

1.求圆 与曲线 的两个交点坐标

clc;clear;
ezplot('exp(-x)');
hold on
ezplot('x^2+y^2-2');
axis([-5,5,-5,5]);
%精度为10^-5,由图像知有两个交点,我们分别在[-0.5,0.5]和[1,1.5]两个区间二分
f=@(x)sqrt(2-x^2)-exp(-x);
a1=-0.5;a2=0.5;
while abs(a2-a1)>10^-4
    c1=(a1+a2)/2;
    if f(c1)==0
        break;
    end
    if f(c1)<0
        a1=c1;
    end
    if f(c1)>0
        a2=c1;
    end
end
c1
a1=1;a2=1.5;
while abs(a2-a1)>10^-4
    c1=(a1+a2)/2;
    if f(c1)==0
        break;
    end
    if f(c1)>0
        a1=c1;
    end
    if f(c1)<0
        a2=c1;
    end
end
c1

c1 =

   -0.3203

c1 =

    1.3922

注:函数的单调性不同时,传递值时的判断条件不同。

2.求方程 的最大正数解和最小负数解,并分别确定二分区间的次数

clc;clear;
ezplot('3*x^2-exp(x)');grid;
%精度为10^-4,该方程有两个解,两个正数解,一个负数解
f=@(x)-(3*x^2-exp(x));
a1=-1;a2=0;%在这里修改数据,第二次a1=4,a2=5
while abs(a2-a1)>10^-4
    c1=(a1+a2)/2;
    if f(c1)==0
k=k+1;
        break;
    end
    if f(c1)<0
        a1=c1;
    end
    if f(c1)>0
        a2=c1;
    end
k=k+1;
end
c1 ,k

3.求方程 ​​​​​​的正数解

clc;clear;
ezplot('1-x-sin(x)');grid;
%精度为10^-4
f=@(x)-(1-x-sin(x));
a1=0;a2=1;k=0;
while abs(a2-a1)>10^-4
    c1=(a1+a2)/2;
    if f(c1)==0
        k=k+1;
        break;
    end
    if f(c1)<0
        a1=c1;
    end
    if f(c1)>0
        a2=c1;
    end
    k=k+1;
end
c1,k

c1 =0.5109

k =14

练习三

1.方程 在(0,4)内有唯一的实数解,现构造以下三种迭代函数:

(1),迭代初值;

(2) 迭代初值 ;

(3) ,迭代初值

分别用给出的3种迭代函数构造迭代序列观察这些迭代序列是否收敛,若收敛能否收敛到方程的解?除此之外,你还能构造出其他收敛的选代序列吗?

先画出图像:

clc;clear; 
ezplot('x^2+x-4');grid;

(1)

clc;clear; 
a0=4;a1=0;x0=[4];k=0;
while abs(a0-a1)>1.0e-3
    a1=a0;
    a0=4-a0^2;
    x0=[x0,a0];
    k=k+1;
end
x0

x0 =

  1.0e+274 *

  列 1 至 10

    0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -4.9971

  列 11 至 12

      -Inf      -Inf

显然,该迭代函数不收敛。

(2)

clc;clear; 
format long
a0=4;a1=0;x0=[4];k=0;
while abs(a0-a1)>1.0e-5
    a1=a0;
    a0=4/(1+a0);
    x0=[x0,a0];
    k=k+1;
end
x0,k

x0 =

  列 1 至 5

   4.000000000000000   0.800000000000000   2.222222222222222   1.241379310344828   1.784615384615385

  列 6 至 10

   1.436464088397790   1.641723356009070   1.514163090128755   1.590986684875384   1.543813414152062

  列 11 至 15

   1.572442372442373   1.554942510219287   1.565592957180350   1.559093771599724   1.563053313790665

  列 16 至 20

   1.560638625220067   1.562110311311980   1.561213029095425   1.561759976448632   1.561426533622873

  列 21 至 25

   1.561629797885483   1.561505883208351   1.561581422171047   1.561535372398912   1.561563444760846

  列 26 至 28

   1.561546331472360   1.561556763917999   1.561550404169786

k=27

由以上数列知,该迭代函数收敛,且收敛于1.56155.

(3)

clc;clear; 
format long
a0=4;a1=0;x0=[4];k=0;
while abs(a0-a1)>1.0e-5
    a1=a0;
    a0=a0-(a0^2+a0-4)/(2*a0+1);
    x0=[x0,a0];
    k=k+1;
end
x0,k

x0 =

  列 1 至 5

   4.000000000000000   2.222222222222222   1.641723356009070   1.563053313790665   1.561553358481398

  列 6

   1.561552812808902

k =5

其他方法:

clc;clear; 
format long
a0=4;a1=0;x0=[4];k=0;
while abs(a0-a1)>1.0e-5
    a1=a0;
    a0=sqrt(4-a0);%构造x=sqrt(4-x)
    x0=[x0,a0];
    k=k+1;
end
x0,k

x0 =

  列 1 至 5

   4.000000000000000                   0   2.000000000000000   1.414213562373095   1.608038070950718

  列 6 至 10

   1.546596886408764   1.566334291775302   1.560021060186271   1.562043193965432   1.561395787759967

  列 11 至 14

   1.561603090493879   1.561536714107651   1.561557967509483   1.561551162303213

k =13

2.用单点弦截法求示例3中方程解的近似值(误差< ).

注:示例三中方程为:

显然,该二次方程由两个解:一个正解和一个负解。

我们分别选取(2,3)、(1,-1)和(-3,3)、(-2,-1)作为初始弦端点进行迭代。

clc;clear; 
format long
f=@(x)x^2+x-3;
%正解
a=1;b=2;t=a;k=0;%这里可以修改数值
while abs(t)>1.0e-5
      m=b-(b-a)/(f(b)-f(a))*f(b);
      t=m-a;
      a=m;
      k=k+1;
end
m,k

m =1.302774668159284

k =7;

负解的情况令a=-2,b=-3即可。(其他不用变)

m =-2.302774668159283

k = 7

3.用双点弦截法求方程的解(误差<).

首先画出函数图形。

clc;clear; 
f=inline('2^x-x^2-1');
ezplot(f);grid;

由图形知该函数有三个零点。

clc;clear; 
format long;
x0=-0.5;x1=0.5;k=0;%在这里更改x0和x1值
while abs(x0-x1)>1.0e-5
    x2=x1-f(x1)/(f(x1)-f(x0))*(x1-x0);
    x0=x1;
    x1=x2;
    k=k+1;
end
     x2

x2 = 2.597847652721268e-13

x2 =0.999999996956345

x2 =4.257461915372301

注:这里我们要注意刚开始时,谁做为x0,谁做为x1.经过我的观察,x0点一定符合

同号这个条件,而x1即为另一个点。

4.用牛顿切线迭代法求方程 的解,你能否构造出其他形式的选代序列,使其收敛到该方程的一个解?

首先我们要判断该方程的解在哪个区间内,画出该函数的图像;其次,再该区间内该函数的凸凹性是怎么样的。

clc;clear; 
syms x
f=x^2-2*x*exp(x)+exp(-x);
figure(1)
ezplot(f);grid;
f2=diff(f,x,2);
figure(2)
ezplot(f2);grid;

 由上图分析知,区间[0,1]包含零点,且该范围内的函数为凸函数。

clc;clear; 
f=inline('x^2-2*x*exp(x)+exp(-x)');
f1=inline('2*x-2*exp(x)-2*x*exp(x)-exp(-x)');
m=min(abs(f1(0)),abs(f1(1)));a=0;b=1;k=0;x0=1;
while abs(f(x0))>m*1.0e-5
       x1=x0-f(x0)/f1(x0);
          k=k+1;
          x0=x1;
end
x0,k

x0 =0.305710729721677

k =4

其他迭代:不妨使用一下双点弦截法

clc;clear; 
format long
f=inline('x^2-2*x*exp(x)+exp(-x)');
x0=1;x1=0;
while abs(x0-x1)>1.0e-5
    x2=x1-f(x1)/(f(x1)-f(x0))*(x1-x0);
    x0=x1;
    x1=x2;
end
x0

x0 =0.305707037220051

推荐下一篇文章:

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十一)(4)(5)icon-default.png?t=N7T8https://blog.csdn.net/2301_80199493/article/details/136132716?spm=1001.2014.3001.5501本文由作者自创,由于时间原因,难免出现些许错误,还请大家多多指正。创作不易,请大家多多支持。

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C.L.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值