数值计算方法I实验报告

2025-11-11

1

重 庆 交 通 大 学 学 生 实 验 报 告

实验课名称 计算方法A 开课实验室 数学实验室 学 院 年级 专业 班级 学 生 姓 名 学 号 开 课 时 间 至 学年第 学期

评分细则 评分 报告表述的清晰程度和完整性(20分) 程序设计的正确性(40分) 实验结果的分析(30分) 实验方法的创新性(10分) 总成绩 教师签名

1

2

实验一 误差分析

实验目的:掌握Newton 迭代法,了解拟Newton 迭代法,培养编程能力和 用迭代法解非线性方程(组)的实践技能。 实验环境:MATLAB 实验1.1:用二分法求非线性方程 f (x) = x3 + x2 ? 3x ? 3 = 0在 1.5 附近的根。

实验代码: bisecMethod:

function bisecMethod(f_name,a,b)

fprintf('二分法求非线性方程的根\\n\\n'); tolerance=1e-6; it_limit=30; fprintf('It. a c b fa=f(a) '); fprintf(' fb=f(b) abs(fb-fa)\\n'); it=0;

Y_a=feval(f_name,a);Y_b=feval(f_name,b); if(Y_a*Y_b>0)

fprintf('\\n\\n停止,因为f(a)f(b)>0\\n'); fprintf('\\n重新给出端点a或者b.\\n'); else

while 1

it=it+1;

c=(a+b)/2;Y_c=feval(f_name,c); fprintf('%3.0f .6f .6f',it,a,c);

fprintf('.6f .6f .6f .3e\\n',b,Y_a,Y_b,abs(Y_b-Y_a)); %fprintf('.3e\\n',abs(Y_b-Y_a)) if(abs(b-a)<=tolerance)

fprintf('结果满足允许误差tolerance=1e-6.\\n');break end

if(it>it_limit)

fprintf('迭代超过限定次数.\\n');break end

if(Y_a*Y_c<=0) b=c;Y_b=Y_c; else a=c;Y_a=Y_c; end end

fprintf('最终结果:x*=.6f \\n',c); end

chap4_fun1.m

function f=chap1_fun1(x) f=x^3+x^2-3*x-3;

在命令窗口调用M文件bisecMethod(f_name’,a,b) >> bisecMethod('chap4_fun1',1,2)

2

3

二分法求非线性方程的根

It. a c b fa=f(a) fb=f(b) abs(fb-fa)

1 1.000000 1.500000 2.000000 -4.000000 3.000000 7.000e+00

2 1.500000 1.750000 2.000000 -1.875000 3.000000 4.875e+00 3 1.500000 1.625000 1.750000 -1.875000 0.171875 2.047e+00 4 1.625000 1.687500 1.750000 -0.943359 0.171875 1.115e+00 5 1.687500 1.718750 1.750000 -0.409424 0.171875 5.813e-01 6 1.718750 1.734375 1.750000 -0.124786 0.171875 7 1.718750 1.726563 1.734375 -0.124786 0.022030 8 1.726563 1.730469 1.734375 -0.051755 0.022030 9 1.730469 1.732422 1.734375 -0.014957 0.022030 10 1.730469 1.731445 1.732422 -0.014957 0.003513 11 1.731445 1.731934 1.732422 -0.005728 0.003513 12 1.731934 1.732178 1.732422 -0.001109 0.003513 13 1.731934 1.732056 1.732178 -0.001109 0.001201 14 1.731934 1.731995 1.732056 -0.001109 0.000046 15 1.731995 1.732025 1.732056 -0.000532 0.000046 16 1.732025 1.732040 1.732056 -0.000243 0.000046 17 1.732040 1.732048 1.732056 -0.000098 0.000046 18 1.732048 1.732052 1.732056 -0.000026 0.000046 19 1.732048 1.732050 1.732052 -0.000026 0.000010 20 1.732050 1.732051 1.732052 -0.000008 0.000010 21 1.732050 1.732050 1.732051 -0.000008 0.000001 结果满足允许误差tolerance=1e-6. 最终结果:x*= 1.732050

实验1.2 :公元1225 年,Lenardo 宣布他求得方

x3 + 2x2 +10x ? 20 = 0

实验代码:

function x=Newton(fname,dname,x0,e,N) if nargin<5,N=500;end if nargin<4,e=1e-4;end x=x0;x0=x+2*e;k=0;

fprintf('It.no=- x%[2d]=.9f\\n',k,k,x) while abs(x0-x)>e&k

x0=x;x=x0-feval(fname,x0)/feval(dname,x0); fprintf('It.no=- x[-]=.9f\\n',k,k,x) end

if k==N,fprintf('已达到迭代次数上限');end

在命令窗口编写内嵌函数表达式,并调用函数M文件Newton:>> fun=inline('x^3+2*x^2+10*x-20'); >> dfun=inline('3*x^2+4*x+10');

3

2.967e-01 1.468e-01 7.379e-02 3.699e-02 1.847e-02 9.241e-03 4.622e-03 2.311e-03 1.155e-03 5.776e-04 2.888e-04 1.444e-04 7.221e-05 3.610e-05 1.805e-05 9.026e-06 4

>> Newton(fun,dfun,1.5,0.5e-6);

It.no= 0 xIt.no= 1 x[ 1]= 1.373626374 It.no= 2 x[ 2]= 1.368814820 It.no= 3 x[ 3]= 1.368808108 It.no= 4 x[ 4]= 1.368808108

实验二 解线性方程组的迭代法

实验目的:掌握列主元Gauss 消去法,Jacobi 迭代法,Gauss-Seidel 迭代法和超松弛迭代法,培养编程能力和用迭代法解线性方程组的实践技能。 实验环境:MATLAB

实验2.1编写一个求解线性代数方程组的列主元Gauss 消去法的通用程序,然后用该程序解如下线性代数方程组:

?0.7290.810.9??x1??0.686?7??????11??x2???0.833?8 ?1?1.3311.211.1??x??1.000?3??????实验代码:

clear

fprintf(‘增广矩阵’)

A=[0.792,0.81,0.9,0.6867;1,1,1,0.8338;1.331,1.21,1.1,1.000] %输入增广矩阵

%第一次选主元,第三行和第一行交换 fprintf('第一次选主元后的增广矩阵')

tempo=A(3,:);A(3,:)=A(1,:);A(1,:)=tempo;A %第一次消元

fprintf('第一次消元后的增广矩阵') A(2,:)=A(2,:)-A(1,:)*A(2,1)/A(1,1); A(3,:)=A(3,:)-A(1,:)*A(3,1)/A(1,1);A %第二次选主元,第三行和第二行交换 fprintf('第二次选主元后的增广矩阵') tempo=A(3,:);A(3,:)=A(2,:);A(3,:)=tempo %第二次消元

fprintf('第二次消元后的增广矩阵') A(3,:)=A(3,:)-A(2,:)*A(3,2)/A(2,2);A %回代求值

fprintf('回代求值') x(3)=A(3,4)/A(3,3);

x(2)=(A(2,4)-A(2,3)*x(3))/A(2,2); x(1)=(A(1,4)-A(1,2:3)*x(2:3)')/A(1,1); x

保存为文件名:chap3_1

4

5

在命令窗口调用M文件chap3_1:

>> chap3_1 增广矩阵 A =

0.7920 0.8100 0.9000 0.6867 1.0000 1.0000 1.0000 0.8338 1.3310 1.2100 1.1000 1.0000

第一次选主元后的增广矩阵 A =

1.3310 1.2100 1.1000 1.0000 1.0000 1.0000 0.7920 0.8100 0.9000

第一次消元后的增广矩阵 A =

1.3310 1.2100 1.1000 0 0.0909 0.1736 0 0.0900 0.2455

第二次选主元后的增广矩阵 A =

1.3310 1.2100 1.1000 0 0.0909 0.1736 0 0.0900 0.2455

第二次消元后的增广矩阵 A =

1.3310 1.2100 1.1000 0 0.0909 0.1736 0 -0.0000 0.0736

代回求值 x =

0.0499 0.6481 0.1358 >>

实验2.2对于如下线性代数方程组:

5

1.0000 0.8338 0.6867 1.0000 0.0825 0.0917 1.0000 0.0825 0.0917 1.0000 0.0825 0.0100


数值计算方法I实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:EMC900台架操作规程及几点说明

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219