石 家 庄 经 济 学 院
2015/2016学年 第1学期
数值分析实验报告
班级 学号 姓名 指导教师
(一)实验题目:二分法求非线性方程根
一、程序功能
编程实现二分法求解非线性方程组的根。
二、实验算例选择
3f(x)?x?x?1?0的根。 计算:
三、算法
步骤1 :事前执行次数估计
步骤2:计算a,b的中点,判断是否跳出 步骤3: a=m 或 b=m
四、重要标识符说明
a,b表示区间[a,b] f表示原函数
五、程序运行实例
六、源程序
f=inline('x^3-x-1'); a=1.0; b=1.5; c=(b-a)/2;
1
k=0;
err=1e-5; y0=f(a);
while c>eps a0=a;b0=b; x1=(a0+b0)/2; if f(x1)==0 x1
elseif f(x1)>0 a1=a0;b1=x1; else
a1=x1;b1=b0; end
c=(b1-a1)/2; k=k+1; a=a1;b=b1; end
x=(a+b)/2
(一)实验题目:牛顿法求非线性方程根
一、程序功能
编程实现牛顿法求解非线性方程组的根。
二、实验算例选择
计算:f(x)?x?x?1?0的根。
3三、算法
步骤1 :求出迭代公式,原函数Function1,导数Function2。 步骤2 :迭代。
步骤3 :判断X(k+1)-X(k)与e的大小,决定是否终止。
四、重要标识符说明
k代表迭代次数, x代表迭代初值
五、程序运行实例
2
六、源程序
clear all Error=1e-5; x=1;
for k=1:10 xk=x;
x=x-(x^3-x-1)/(3*x^2-1); if(abs(xk-x)<=Error) break; end end
七、个人实验总结
初步了解了matlab的用法。分别用二分法和牛顿法解非线性方程可清晰看出牛顿法求解要比二分简单的多且效率高。
(二)实验题目:高斯列主元素消去法解方程组
一、程序功能
编程实现高斯列主元素消去法解方程组。
3
二、实验算例选择
x1+2x2+x3=2
-2x1-2x2-x3=-3 2x1-3x2-2x3=-1
三、算法
步骤1: 选主元及从增广矩阵第一列中选择绝对值最大的数所在的行与第一行互换,并将新矩阵第二第三行的第一列数化0;
步骤2: 从新矩阵的第2,3行第二列中选择绝对值最大的数换到第二行,第三行二列的数化0;
步骤3: 回代,分别求出x3,x2,x1
四、重要标识符说明
A,b代表方程的系数矩阵 n b的长度 abs 求绝对值
A(k:n,k) 取矩阵A中第k列n行符合条件的数 Disp 输出
五、程序运行实例
六、源程序
A=[1 2 1; -2 -2 -1; 2 -3 -2]; b=[ 2 -3 -1];
4