当前位置:天才代写 > 其他代写 > 代写高数留学生20道题目用Matlab实现Code代做演示第0节

代写高数留学生20道题目用Matlab实现Code代做演示第0节

2017-12-25 08:00 星期一 所属: 其他代写 浏览:573

0节 课后习题

0.1 非线性函数f(x)及其导数f¢(x)有根区间[a,b]参数编写二分法Newton法、简化Newton法和割线法的通用程序。其中Newton法和简化Newton法的迭代初值x0取为有根区间的中点,割线法x0x1分别取为ab。误差ε=10-6

编程思路

二分法

1c=(a+b)/2

2、若f(x)=0x0=c程序终止;

3f(a) f(c)>0,令a=c否则令b=c

4对新的ab重复上述三步。

通用程序:

function [x,n,eps1]=solve_x0_dichotomy(f,a,b,x0,N,eps)

% 二分法求根

% f为函数表达式,a为下限,b为上限,N为迭代次数,

% eps为计算误差,x0为迭代的初值

n=1;

eps1=2*eps;

while eps1>eps

    if n>N

        x=x0;

        break;

    end

    if f(x0)==0

        x=x0;

        break;

    end

    if f(a)*f(x0)>0

        a=x0;

        n=n+1;

    else

        b=x0;

        n=n+1;

    end

    x0=(a+b)/2;

    eps1=abs(x0-a);

    x=x0;

end

 

Newton

编程思路:

通用程序:

function [x,n,eps1]=solve_x0_Newton(f,df,x0,N,eps)

% Newton法求根

% f为函数表达式,df为函数的偏导,,x0为迭代的初值

% a为下限,b为上限,N为迭代次数,eps为计算误差

n=1;

eps1=2*eps;

while eps1>eps

    if n>N

        x=x0;

        break;

    end

    x=x0-f(x0)/df(x0);

    eps1=abs(x0-x);

    x0=x;

    n=n+1;

end

 

简化Newton法:

编程思路

通用程序:

function [x,n,eps1]=solve_x0_simple_Newton(f,df,a,b,x0,N,eps)

% 简化Newton法求根

% f为函数表达式,df为函数的偏导,

% a为下限,b为上限,N为迭代次数,eps为计算误差,x0为迭代的初值

n=1;

eps1=2*eps;

while eps1>eps

    if n>N

        x=x0;

        break;

    end

    x=x0-f(x0)/df((a+b)/2);

    eps1=abs(x0-x);

    x0=x;

    n=n+1;

end

 

割线法:

编程思路:

通用程序:

function [x,n,eps1]=solve_x0_Secant(f,a,b,x1,x0,N,eps)ac

% 割线法法求根

% f为函数表达式,a为下限,b为上限,N为迭代次数,eps为计算误差

% x0x1为迭代的两个初值

n=1;

eps1=2*eps;

while eps1>eps

    if n>N

        x=x0;

        break;

    end

    x=x0-f(x0)/((f(x0)-f(x1))/(x0-x1));

    eps1=abs(x0-x);

    x1=x0;

    x0=x;

    n=n+1;

end

 

0.2 先用作图的办法确定有根区间[a,b]然后应用上的通用程序下列方程所示的根。比较几种方法的迭代步数

1x=1+0.3 cos x根;

2cos x=0.5 + sin x最小正根;

3ex=sin x最小正根。

编程思想

0.1相同。

1x=1+0.3 cos x根;

 

a-6b10

计算程序:

clear,clc

f=@(x)x-1-0.3*cos(x);

df=@(x)1+0.3*sin(x);

N=200;

a=-6;

b=10;

eps=1e-6;

x0=(a+b)/2;

 

%二分法

disp('二分法')

[x,n,eps1]=solve_x0_dichotomy(f,a,b,x0,N,eps)

 

%Newton

disp('Newton')

[x,n,eps1]=solve_x0_Newton(f,df,x0,N,eps)

 

%简化Newton

disp('简化Newton')

[x,n,eps1]=solve_x0_simple_Newton(f,df,a,b,x0,N,eps)

 

%割线法

disp('割线法')

x0=a;

x1=b;

[x,n,eps1]=solve_x0_Secant(f,a,b,x0,x1,N,eps)

 

计算结果x=1.1284

计算方法

二分法

Newton

简化Newton

割线法

迭代步数

24

5

5

6

 

2cos x=0.5 + sin x最小正根;

 

a0b1

计算程序

clear,clc

f=@(x)cos(x)-0.5-sin(x);

df=@(x)-sin(x)-cos(x);

N=200;

a=0;

b=1;

eps=1e-6;

x0=(a+b)/2;

 

%二分法

disp('二分法')

[x,n,eps1]=solve_x0_dichotomy(f,a,b,x0,N,eps)

 

%Newton

disp('Newton')

[x,n,eps1]=solve_x0_Newton(f,df,x0,N,eps)

 

%简化Newton

disp('简化Newton')

[x,n,eps1]=solve_x0_simple_Newton(f,df,a,b,x0,N,eps)

 

%割线法

disp('割线法')

x0=a;

x1=b;

[x,n,eps1]=solve_x0_Secant(f,a,b,x0,x1,N,eps)

 

计算结果x=0.4240

计算方法

二分法

Newton

简化Newton

割线法

迭代步数

20

4

5

6

 

3ex=sin x最小正根。

 

a0b1

计算程序

clear,clc

f=@(x)exp(-x)-sin(x);

df=@(x)-exp(-x)-cos(x);

N=200;

a=0;

b=1;

eps=1e-6;

x0=(a+b)/2;

 

%二分法

disp('二分法')

[x,n,eps1]=solve_x0_dichotomy(f,a,b,x0,N,eps)

 

%Newton

disp('Newton')

[x,n,eps1]=solve_x0_Newton(f,df,x0,N,eps)

 

%简化Newton

disp('简化Newton')

[x,n,eps1]=solve_x0_simple_Newton(f,df,a,b,x0,N,eps)

 

%割线法

disp('割线法')

x0=a;

x1=b;

[x,n,eps1]=solve_x0_Secant(f,a,b,x0,x1,N,eps)

 

计算结果x=0.5885

计算方法

二分法

Newton

简化Newton

割线法

迭代步数

20

5

6

7

 

0.3 利用你教学号的后三位为小数点后三位构造区间[5,6]的数af(x)=x3a

其中

初值x0=2,误差ε=10-6,分别Newton法和迭代格式

求解比较二者的收敛速度

计算程序

clear,clc

a0=5.504;

f=@(x)x.^3-a0;

df=@(x)3*x.^2;

p=@(x)1./(3*x.^2);

q=@(x)0.5*6*x./(3*x.^2).^3;

 

N=200;

eps=1e-6;

x0=2;

[x,n,eps1]=solve_x0_Newton(f,df,x0,N,eps)

eps1=2*eps;

n=1;

while eps1>eps

    if n>N

        x=x0;

        break;

    end

    x=x0-p(x0)*f(x0)-q(x0)*f(x0)^2;

    eps1=abs(x0-x);

    x0=x;

    n=n+1;

end

x

n

eps1

 

计算结果:

=1.7656Newton法的迭代步数为5迭代的迭代步数为4.

 

0-4 含秦久韶法的Newton法计算多项式

x0=6.3附近的根。

编程思想:

利用秦久韶算法求解多项式方程Newton

b-1=c-1=0对于k=0,1,2,…,

其中a多项式的系数。

计算程序

 

函数文件

function [xk,n,eps1]=solve_x0_qin_Newton(a,xk,N,eps)

% 秦久韶Newton法求根

% xk为初值,N为迭代次数,eps为计算误差,a为次数

N1=length(a);

n=1;

eps1=2*eps;

while eps1>eps

    if n>N

        xk=xk;

        break;

    end

    b(1)=0;

    c(1)=0;

    for nn=2:N1+1

        b(nn)=a(nn-1)+xk*b(nn-1);

        c(nn)=b(nn)+xk*c(nn-1);

    end

    xk1=xk-b(end)/c(end-1);

    eps1=abs(xk1-xk);

    xk=xk1;

    n=n+1;

end

 

 

主文件

clear,clc

N=200;

a=[1,-9,26,-34,21,-5];

eps=1e-7;

x0=6.3;

[x,n,eps1]=solve_x0_qin_Newton(a,x0,N,eps)

 

f=@(x)x.^5-9*x.^4+26*x.^3-34*x.^2+21*x-5;

f(x)

 

计算结果为x=5迭代次数为n=8

 

    关键字:

天才代写-代写联系方式