1 / 38

实验六 方程及方程组的解

实验六 方程及方程组的解. 实验 6.1 线性方程组的解. 一、求线性方程组的唯一解或特解. 二、求线性齐次方程组的通解. 三、求非齐次线性方程组的通解. 实验 6.2 非线性方程的解. 一、二分法. 二、简单迭代法. 三、牛顿迭代法. 四、应用举例. 实验 6.1 线性方程组的解. 我们将线性方程组的求解分为两类:一类是求方程组的唯一解或特解,另一类是求方程组的无穷解即通解。可通过系数矩阵的秩来判断:. 若系数矩阵的秩 r = n , 则有唯一解; 若系数矩阵的秩 r < n , 则可能有无穷解;

kenny
Download Presentation

实验六 方程及方程组的解

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实验六 方程及方程组的解 实验6.1 线性方程组的解 一、求线性方程组的唯一解或特解 二、求线性齐次方程组的通解 三、求非齐次线性方程组的通解 实验6.2 非线性方程的解 一、二分法 二、简单迭代法 三、牛顿迭代法 四、应用举例

  2. 实验6.1 线性方程组的解 我们将线性方程组的求解分为两类:一类是求方程组的唯一解或特解,另一类是求方程组的无穷解即通解。可通过系数矩阵的秩来判断: 若系数矩阵的秩 r=n, 则有唯一解; 若系数矩阵的秩 r<n, 则可能有无穷解; 线性方程组的无穷解=对应齐次方程组的通解+非齐次方 程组的一个特解

  3. 的解。 例1求方程组 一、求线性方程组的唯一解或特解 若AX=b是线性方程组的矩阵形式,可以直接用矩阵除法或初等变换法求线性方程组的唯一解或特解。 解:用矩阵除法求解如下:

  4. A=[5 6 0 0 0 1 5 6 0 0 0 1 5 6 0 0 0 1 5 6 0 0 0 1 5]; B=[1 0 0 0 1]'; R_A=rank(A) ↙%求秩 R_A = 5 X=A\B ↙%求解 X = 2.2662 -1.7218 1.0571 -0.5940 0.3188

  5. 也可以通过初等变换方法,用函数reff求解,rref是将一个矩阵化成行最简形。也可以通过初等变换方法,用函数reff求解,rref是将一个矩阵化成行最简形。 C=[A,B]; %C为方程组的增广矩阵 R=rref(C) ↙%将C化成行最简形 R = 1.0000 0 0 0 0 2.2662 0 1.0000 0 0 0 -1.7218 0 0 1.0000 0 0 1.0571 0 0 0 1.0000 0 -0.5940 0 0 0 0 1.0000 0.3188 则R的最后一列元素就是所求之解。

  6. 的一个特解。 例2求方程组 解:用矩阵除法求解如下: A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8]; B=[1 4 0]'; X=A\B ↙ Warning: Rank deficient, rank = 2, tol = 8.8373e-015. X = 0 0 -0.5333 0.6000

  7. 上述做法由于系数矩阵不满秩,可能存在误差,得到的只是一个特解近似值,若用rref求解,则比较精确:上述做法由于系数矩阵不满秩,可能存在误差,得到的只是一个特解近似值,若用rref求解,则比较精确: C=[A,B]; R=rref(C) ↙ R = 1.0000 0 -1.5000 0.7500 1.2500 0 1.0000 -1.5000 -1.7500 -0.2500 0 0 0 0 0 由此得解向量X=[1.2500 -0.2500 0 0]’(一个特解)。

  8. 的通解。 例3求方程组 二、求线性齐次方程组的通解 在MATLAB中,函数 null 用来求解零空间,即满足AX=0的解空间,实际上是求出解空间的一组基(基础解系)。 A=[1 2 2 1;2 1 -2 -2;1 -1 -4 -3]; format rat %指定有理式格式输出 B=null(A,‘r’) ↙%求解空间的有理基 B = 2 5/3 -2 -4/3 1 0 0 1

  9. 也可通过行最简形得到基: B1=rref(A) ↙ B1= 1 0 -2 -5/3 0 1 2 4/3 0 0 0 0 即可写出其基础解系,方程组的通解为: [2 k1 + 5/3 k2 ] [ ] [-2 k1 - 4/3 k2] [ ] [ k1 ] [ ] [ k2 ] syms k1 k2 X=k1*B(:,1)+k2*B(:,2);%通解 pretty(X) ↙%美化表达式

  10. 例4解方程组 三、求非齐次线性方程组的通解 Step1:判断AX=b是否有解,若有解则进行第二步; Step2:求AX=b的一个特解; Step3:求AX=0的通解; Step4:AX=b的通解为AX=0的通解+AX=b的一个特解。 解 :在MATLAB中建立M文件fangcheng1.m如下:

  11. A=[1 -2 3 -1;3 -1 5 -3;2 1 2 -2]; b=[1 2 3]'; B=[A,b]; n=4; R_A=rank(A) R_B=rank(B) format rat if R_A==R_B&R_A==n %判断有唯一解 X=A\b elseif R_A==R_B&R_A<n %判断有无穷解 X=A\b %求特解 C=null(A,‘r’) %求AX=0的基础解系 else X=‘equation no solve‘ %判断无解 end

  12. 运行后结果显示: fangcheng1 ↙ R_A = 2 R_B = 3 X = equation no solve 说明该方程组无解

  13. 实验任务 解下列方程组:

  14. 则称 是这个根的一个隔离区间. 设 在区间 上连续, 且方程 取 的中 点 计算 在 内仅有一个实根 那么 若 由 与 同号, 若 即知 且 取 实验6.2 非线性方程的解 一、二分法 1.数学原理

  15. 作为新的隔离区间, 若 与 同号, 及 时, 且 如果以 或 作为 的近似值, 重复上述做法, 可求得 且 可求得 如此重复n次, 也有 取 由此可知, 且 误差小于 总之,当 时, 可求得

  16. 的根.确定根的存在区间 (即根的隔离区间), 用二分法求方程 根的近似值,一般分为两步: 若函数 在根的隔离区间 上单调连续,且 的图形,它与 轴的交点就是方程 用fplot函数作出 使方程 在 内有唯一根. 内方程有唯一根.我们可以反复用将根的隔离区间一分 则在 为二,其中含有根的区间为新的隔离区间的方法,最终搜索到达 到要求精度的根的近似值. 2、MATLAB实现 第一步 根的隔离 第二步根的逐次逼近

  17. function y=erfen(fun,a,b,esp) if feval(fun,a).*feval(fun,b)<0 n=1; c=(a+b)/2; while abs(b-a)>esp if feval(fun,a).*feval(fun,c)<0 b=c;c=(a+b)/2; elseif feval(fun,c).*feval(fun,b)<0 a=c;c=(a+b)/2; else y=c; esp=10000; end n=n+1; end y=c; elseif feval(fun,a)==0 y=a; elseif feval(fun,b)==0 y=b; else disp('these,may not be a root in the intercal'); end n 打开M-edit窗口,编写二分法程序: erfen·m

  18. 正实根的隔离区间,并用二分法求方程在这个区间内根的近似值,使误差不超过正实根的隔离区间,并用二分法求方程在这个区间内根的近似值,使误差不超过 例1求方程 在 如图,方程 附近有一个重根,根的隔离区间为 在 附近有一单根,根的 隔离区间为 解 设 fplot('x^4-8.6*x^3-35.51*x^2+464.4*x-998.46',[0,10]), grid on ↙

  19. 经过15次搜索,得到方程的近似根为x=7.3485,误差不超过经过15次搜索,得到方程的近似根为x=7.3485,误差不超过 编写函数文件f.m function y=f(x) y=x^4-8.6*x^3-35.51*x^2+464.4*x-998.46; 在命令窗口输入: erfen('f',7,8,1.0e-4) ↙ n = 15 ans = 7.3485 由二分法的原理可知,当根的隔离区间较大时,收敛于根的速度很快;而当根的隔离区间较小时,靠近根的速度较缓慢,且难以满足高精度的要求.因此常用这种方法为迭代法提供初值.

  20. 简单迭代法的基本思想是将方程 改写为等价形式 选取适当的初值 迭代, ,按照 收敛于α,且函数 连续, 得到迭代序列 .若 的根.也称为 的不动点. 则 α 满足方程,即为 当方程的根难以求出时,可用 作为α的近似值,这种 称为迭代函数, 求根的近似值的方法称为简单迭代法, 称为迭代格式. 二、简单迭代法

  21. 用迭代法求方程的根的首要问题是迭代序列是否收敛.为此用迭代法求方程的根的首要问题是迭代序列是否收敛.为此 我们先从几何上观察由简单迭代格式 得到的迭代序列的收敛性. 迭代函数 的不动点,是由直线 和 由图可见,根据初始值 确定. 得 的交点 沿箭头方向得迭代 ,经直线 迭代函数上的点 ,依次进行下去,得到点列 函数上的点 点列逐渐逼近交点 因此迭代序列是收敛的.

  22. 通过上面的作图可见,迭代序列是否收敛与 的取值有关, 在下图中,按上述同样的方法产生的点列 的绝对值小于1时,迭代序列收敛;当 的绝对值大于1时, 逐渐远离交点 ,可见迭代序列是发散的. 迭代序列不收敛.

  23. 利用这两个迭代格式求方程的根,使误差不超过利用这两个迭代格式求方程的根,使误差不超过 附近有一个根.将此方程 例2已知方程 在 改写成如下两个等价形式: 构造如下两个迭代格式:

  24. 编写迭代法程序iterate.m : function y=iterate(x) x1=g(x); n=1; while(abs(x1-x)>=1.0e-6)&(n<=1000) x=x1; x1=g(x);n=n+1; end x1 n 编写函数文件g.m: function y=g(x) y=(0.8+x^2)^(1/3);

  25. 经过16次迭代,得到方程的近似根为x=1.4052,误差不超过经过16次迭代,得到方程的近似根为x=1.4052,误差不超过 在命令窗口输入: iterate(1.5) ↙ x1 = 1.4052 n = 16 在iterate.m文件中将g(x)改为g1(x)并编写文件g1.m: function y=g1(x) y=(x^3-0.8)^0.5;

  26. ,则 在命令窗口输入: iterate(1.5) ↙ x1 = Inf n = 20 迭代格式(2)发散. 在迭代格式(1)中,设

  27. 迭代格式 是收敛的. ,则 在迭代格式(2)中,设 ,有下面的定理 对于一般 函数 定理 设 在其不动点α的某一邻域内连续且 则在该邻域内的任意初始值 ,迭代序列 收敛于α.(证明略) 迭代格式(2)是发散的.

  28. 的不动点,它 的迭代函数为 设 是 也是 的不动点,因此也是它们的加权平均 的不动点. 根据上面的经验,只要选取 使 在 附近尽量小. 得 为此,令 加快迭代格式收敛速度的方法: 于是得修正迭代函数 修正迭代格式

  29. 在例3中,利用上述迭代格式求根的近似值如下:在例3中,利用上述迭代格式求根的近似值如下: g.m function y=g(x) y=x-[3*(0.8+x^2)-3*x*(0.8+x^2)^(2/3)]/[2*x-3*(0.8+x^2)^(2/3)] iterate(1.5) ↙ x1 = 1.4052 n = 2

  30. 令 三、 牛顿迭代法(切线法) 用曲线上一点的切线与x轴的交点来近似代替根.如图 重复这一过程得迭代格式 这种求方程近似根的方法称为牛顿迭代法.

  31. MATLAB实现 编写牛顿迭代法程序newton.m function y=newton(x0) x1=x0-f(x0)/df(x0); n=1; while (abs(x1-x0)>=1.0e-4) x0=x1; x1=x0-f(x0)/df(x0);n=n+1; end x1 n

  32. 一辆汽车售价 元,可分m个月付款,每月需交b元,计算 这种分期付款的年利率. 利用这种方式购车,我们需要每月把b元存入汽车销售商 的账户,也就相当于汽车销售商周期的收入资金.设利率按每 月收款计算为r,为使m个月后存入银行 元,则第一个月应 该交 元,第二个月应该交 元,一 元. 一次类推第m个月应该交 四、 应用举例 由公式(1)可以计算出月利率,月利率乘以12便可以得到年利率.

  33. 在公式(1)中, 例3 若买一辆汽车32000元,可分36个月付款,每月需交1200 元;也可以向银行贷款,贷款的期限为3年,年利率为6.66%,应 该选择哪一种方式购车. 于是得 解 显然r=0是上述方程的根,但这里我们要求的是最小正根. 编写函数文件fe.m function y=fe(r) y=80*r*(1+r)^36-3*(1+r)^36+3;

  34. 确定根的隔离区间 fplot(‘fe’,[0.01,0.5]),grid on ↙ 由图知根的隔离区间[0.01,0.5].

  35. 取初值 用二分法求得 确定初值 调用二分法的程序,在命令窗口输入: erfen(‘fe’,0.01,0.5,1.0e-6) ↙ n= 20 ans= 0.0172 编写导函数文件dfe.m function y=dfe(r) y=80*(1+r)^36+36*(80*r-3)*(1+r)^35

  36. 编写牛顿迭代法程序newton.m function y=newton(r0) r1=r0-fe(r0)/dfe(r0); n=1; while (abs(r1-r0)>=1.0e-4) r0=r1; r1=r0-f(r0)/df(r0);n=n+1; end r1 n

  37. 于是求得月利率 在命令窗口输入: newtone(0.0172) ↙ r1= 0.0172 n= 2 年利率为 所以分期付款买车要付的利息高达20.64%,与3年贷款的利率比较,最好选择贷款买车.

  38. 1.求方程 的实根的隔离区间。 2.分别用二分法和迭代法求方程 在[0,1] 的实根,并比较两个迭代序列的收敛速度。 实验任务 3.商场对电脑实行分期付款销售,一台售价为8000元的电脑,可分36个月付款,每月付款300元;同时也可以到银行贷款,贷款10000元以下且三年内还清的,年利率为10%,你认为选择什么方式买电脑更省钱。

More Related