上机练习1.docx

上传人:b****1 文档编号:1810008 上传时间:2023-05-01 格式:DOCX 页数:15 大小:55.48KB
下载 相关 举报
上机练习1.docx_第1页
第1页 / 共15页
上机练习1.docx_第2页
第2页 / 共15页
上机练习1.docx_第3页
第3页 / 共15页
上机练习1.docx_第4页
第4页 / 共15页
上机练习1.docx_第5页
第5页 / 共15页
上机练习1.docx_第6页
第6页 / 共15页
上机练习1.docx_第7页
第7页 / 共15页
上机练习1.docx_第8页
第8页 / 共15页
上机练习1.docx_第9页
第9页 / 共15页
上机练习1.docx_第10页
第10页 / 共15页
上机练习1.docx_第11页
第11页 / 共15页
上机练习1.docx_第12页
第12页 / 共15页
上机练习1.docx_第13页
第13页 / 共15页
上机练习1.docx_第14页
第14页 / 共15页
上机练习1.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

上机练习1.docx

《上机练习1.docx》由会员分享,可在线阅读,更多相关《上机练习1.docx(15页珍藏版)》请在冰点文库上搜索。

上机练习1.docx

上机练习1

 

 

班级:

数学三班

姓名:

齐照辉

学号:

20111001316

 

练习:

1.1用差商

处导数的近似值.取

=0.000000000000001和

=0.0000000000000001分别用MATLAB软件计算,取十五位数字计算.

解:

当h=0.1时:

>>formatlongg

>>a=3;h=0.1;y=log(a+h)-log(a);yx=y/h

yx=

0.32789822822991

当h=0.0001时:

>>formatlongg

>>a=3;h=0.0001;y=log(a+h)-log(a);yx=y/h

yx=

0.333327777903847

当h=0.0000000000000001时:

>>formatlongg

>>a=3;h=0.0000000000000001;y=log(a+h)-log(a);yx=y/h

yx=

0

练习1.2设计三种算法求方程

的一个正根

的近似值,并研究每种算法的误差传播情况.

解:

第一种算法:

将已知方程化为通解方程:

x=15-2x^2.取初值x0=2,按叠代公式Xk+1=15-2xk^2.

第二种算法:

将已知方程化为同解方程:

第三种算法:

将已知方程化为通解方程:

X=

Matab主程序:

function[k,juecha,xiangcha,xk]=liti112(x0,x1,limax)

x

(1)=x0;

fori=1:

limax

x(i+1)=fl(x(i));

juecha=abs(x(i)-x1);

xiangcha=juecha/(abs(x(i))+eps);

xk=x(i);k=i-1;[(i-1),juecha,xiangcha,xk]

end

第一问:

[k,juecha,xiangcha,xk]=liti112(2,2.5,100)

Y1=15-2*x^2

第二问:

functiony1=f1(x)

y1=15/(2*x+1);

第三问:

[k,juecha,xiangcha,xk]=liti112(2,2.5,100)

Y1=x-(2*x^2+x-15)/(4*x+1)

结果:

迭代次数算法1算法2算法3

022.000000002.00000000

173.000000002.55555556

2-832.142857142.50055006

3-137632.837837842.50000000

4-3788403232.246963562.500000000

……………………………………………………………………………………….

99-inf2.500000012.500000000

分析:

由表格知,算法一不收敛,算法二的初始绝对误差和相对误差分别是0.0500000000和0.166666667,它的相对误差和绝对误差是收敛的随着迭代次数增大,误差逐步趋近于零,而叠代结果趋近于2.500000000,第三种算法,绝对误差和相对误差是稳定的,结果也很快的趋近精确解2.5

练习1.3求数

的近似值.

解:

>>formatlong

>>7^15*8^(-19)/(sqrt(1+8^(-19))+1)

得到结果:

ans=

1.647141280988404e-005

练习2.1确定方程x3-x+4=0的实根的分布情况,并用二分法求在开区间(-2,-1)内的实根的近似值,要求精度为0.001.

解:

(1)确定方程实根的分布情况:

在命令窗口输入:

>>symsx

>>y=solve('x^3-x+4=0')

>>eval(y)

得到:

ans=

-1.79632190325944

-22.93525496046493

24.73157686372437

(2)利用二分法求在开区间(-2,-1)内的实根的近似值:

在命令窗口输入:

>>funhan=@(x)x^3-x+4

a=-2;

b=-1;

eps=1.0e-3;

M=1000;

[c,n]=erfenfa(funhan,a,b,eps,M)

%c是根

得到结果:

funhan=

@(x)x^3-x+4

c=

-1.79589843750000

n=

10

练习2.2用迭代法求方程求x5-3x+1=0在0.3附近的根,精确到4位小数.

解:

1.创建名为diedail2.m的M文件:

function[k,piancha,xdpiancha,xk,yk]=diedail2(x0,tol,ddmax)

x

(1)=x0;

fori=1:

ddmax

x(i+1)=fun(x(i));piancha=abs(x(i+1)-x(i));

xdpiancha=piancha/(abs(x(i+1))+eps);i=i+1;

xk=x(i);yk=fun(x(i));[(i-1)pianchaxdpianchaxkyk]

if(piancha

k=i-1;xk=x(i);

return;

end

end

ifi>ddmax

disp('迭代次数超过给定的最大值ddmax')

k=i-1;xk=x(i);yk=fun(x(i));[(i-1)pianchaxdpianchaxkyk]

return;

end

p=[(i-1),piancha,xdpiancha,xk,yk];

2.创建M文件fun.m

functiony=fun(x)

y=(x^5+1)/3;

3.在MATLAB工作窗口输入程序

>>[k,piancha,xdpiancha,xk,yk]=diedail2(0.3,1.0e-4,500)

4.运行后输出的结果

[k,piancha,xdpiancha,xk,yk]=diedail2(0.3,1.0e-4,500)

ans=

1.00000.03410.10220.33410.3347

 

ans=

2.00000.00060.00170.33470.3347

 

ans=

3.00000.00000.00000.33470.3347

 

k=

3

 

piancha=

1.2061e-005

 

xdpiancha=

3.6031e-005

 

xk=

0.3347

 

yk=

0.3347

 

练习2.3用艾特肯加速方法求2e

在0.85附近的一个近似根,要求精度

..

解:

1.创建M文件Aitken.m:

function[k,xk,yk,p]=Aitken(x0,tol,ddmax)

x

(1)=x0;

fori=1:

ddmax

x1(i+1)=fun(x(i));

x2(i+1)=fun(x1(i+1));

x(i+1)=x2(i+1)-(x2(i+1)-x1(i+1))^2/(x2(i+1)-2*x1(i+1)+x(i));

piancha=abs(x(i+1)-x(i));

xdpiancha=piancha/(abs(x(i+1)+eps));

i=i+1;xk=x(i);yk=fun(x(i));

if(piancha

k=i-1;xk=x(i);yk=fun(x(i));m=[0,1:

i-1];

p=[m',x1',x2',x'];

return;

end

end

ifi>ddmax

disp('迭代次数超过给定的最大值ddmax')

k=i-1;xk=x(i);yk=fun(x(i));m=[0,1:

i-1];p=[m',x1',x2',x']

return;

end

m=[0,1:

i-1];p=[m',x1',x2',x'];

2.创建M文件fun.m

functiony=fun(x)

x1=exp

(1);y=2*x1^(-x);

3.

3.在MATLAB工作窗口输入程序

>>[k,xk,yk,p]=Aitken(0.85,1e-6,100)

4.运行后得到结果

k=

3

 

xk=

0.8526

 

yk=

0.8526

 

p=

0000.8500

1.00000.85480.85070.8526

2.00000.85260.85260.8526

3.00000.85260.85260.8526

练习2.4分别用牛顿法、割线法求方程

的近似根,要求精度

.

解:

牛顿法:

1.创建牛顿法的MATLAB程序为M文件newtonqx.m

function[k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax)

x

(1)=x0;

fori=1:

gxmax

x(i+1)=x(i)-fnq(x(i))/(dfnq(x(i))+eps);piancha=abs(x(i+1)-x(i));

xdpiancha=piancha/abs(x(i+1)+eps);i=i+1;

xk=x(i);

yk=fnq(x(i));[(i-1)xkykpianchaxdpiancha]

if(abs(yk)

k=i-1;xk=x(i);[(i-1)xkykpianchaxdpiancha];

return;

end

end

ifi>gxmax

disp('请注意:

迭代次数超过给定的最大值gxmax.')

return;

end

[(i-1),xk,yk,pianchaxdpiancha]';

2.创建fnq.m的M文件

functiony=fnq(x)

y=2*x^3-3*x^2+1;

3.创建dfnq.m文件

functiony=dfnq(x)

y=6*x^2-6*x;

4.在工作窗口输入程序:

>>[k,xk,piancha,xdpiancha]=newtonqx(-0.4,0.001,0.001,100)

得到结果:

ans=

1.0000-0.5167-0.07670.11670.2258

 

ans=

2.0000-0.5004-0.00160.01630.0326

 

ans=

3.0000-0.5000-0.00000.00040.0007

 

k=

3

 

xk=

-0.5000

 

piancha=

-7.7025e-007

 

xdpiancha=

3.5825e-004

5.在工作窗口输入程序:

>>[k,xk,piancha,xdpiancha]=newtonqx(0.9,0.001,0.001,100)

6.得到结果:

ans=

1.00000.95190.00670.05190.0545

 

ans=

2.00000.97630.00170.02450.0251

 

ans=

3.00000.98830.00040.01190.0121

 

ans=

4.00000.99420.00010.00590.0059

 

ans=

5.00000.99710.00000.00290.0029

 

ans=

6.00000.99850.00000.00150.0015

 

ans=

7.00000.99930.00000.00070.0007

 

k=

7

 

xk=

0.9993

 

piancha=

1.5903e-006

 

xdpiancha=

7.2896e-004

割线法

1.编写名为gexian.m的M文件:

function[k,piancha,xdpiancha,xk,yk]=gexian(x01,x02,tol,ftol,gxmax)

x

(1)=x01;x

(2)=x02;

fori=2:

gxmax

u(i)=fnq(x(i))*(x(i)-x(i-1));v(i)=fnq(x(i))-fnq(x(i-1));

x(i+1)=x(i)-u(i)/(v(i));piancha=abs(x(i+1)-x(i));

xdpiancha=piancha/(abs(x(i+1)+eps));i=i+1;xk=x(i);

yk=fnq(x(i));[(i-2)pianchaxdpianchaxkyk]

if(abs(yk)

k=i-2;xk=x(i);yk=fnq(x(i));[(i-2)pianchaxdpianchaxkyk];

return;

end

end

ifi>gxmax

disp('请注意:

迭代次数超过给定的最大值gxmax.')

k=i-2;xk=x(i);yk=fnq(x(i));[(i-2)pianchaxdpianchaxkyk];

return;

end

2.在命令窗口输入程序:

>>[k,piancha,xdpiancha,xk,yk]=gexian(-0.5,-0.3,1e-3,0.001,100)

3.得到结果:

ans=

1.00000.20000.4000-0.50000

 

ans=

2.000000-0.50000

 

k=

2

 

piancha=

0

 

xdpiancha=

0

 

xk=

-0.5000

 

yk=

0

4.在命令窗口输入程序:

>>[k,piancha,xdpiancha,xk,yk]=gexian(0.8,1.0,0.001,0.001,100)

5.得到结果:

ans=

10010

 

k=

1

 

piancha=

0

 

xdpiancha=

0

 

xk=

1

 

yk=

0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2