实验3非线性方程求解 1、实验目的 1)掌握常用的非线性方程的求解算法,包括不动点迭代、二分法、试值法、牛 顿法和割线法: 2)并通过数值算例理求根解算法的收敛速度和健壮性。 2、实验内容 1)编程实现二分法、试值法、牛顿法和割线法的MATLAB函数。 2)设fx)=x-x3-2 (1)确定fx)=0实根的有根区间: (2)取合适的初始值或初始区间,用不动点迭代算法、二分法、试值法、 牛顿法和割线法程序分别求出∫(x)0具有10位或以上有效数字的实 根,用MATLAB自带的fzero函数求出的结果计算误差,用tic/toc命 令记录程序运行时间,对每一个求出的实根,填写下表: 方法初始值(区间)计算结果误差迭代次数运行时间误差阶 不动点 二分法 试值法 牛顿法 割线法 3)从上表中可得出什么结论? 4、实验思考 1)二分法收敛速度慢,但是适用条件简单容易判断;牛顿法收敛速度快但收敛 条件不易判断。能否设计一种混合算法,既保持计算过程的稳健性(不易失效), 又能够在条件允许的情况下采用更高阶的计算格式
实验 3 非线性方程求解 1、实验目的 1)掌握常用的非线性方程的求解算法,包括不动点迭代、二分法、试值法、牛 顿法和割线法; 2)并通过数值算例理求根解算法的收敛速度和健壮性。 2、实验内容 1)编程实现二分法、试值法、牛顿法和割线法的 MATLAB 函数。 2)设 ( ) 2 3 1 f x = x − x − . (1) 确定 f (x)=0 实根的有根区间; (2) 取合适的初始值或初始区间,用不动点迭代算法、二分法、试值法、 牛顿法和割线法程序分别求出 f (x)=0 具有 10 位或以上有效数字的实 根,用 MATLAB 自带的 fzero 函数求出的结果计算误差,用 tic/toc 命 令记录程序运行时间,对每一个求出的实根,填写下表: 方法 初始值(区间) 计算结果 误差 迭代次数 运行时间 误差阶 不动点 二分法 试值法 牛顿法 割线法 (3) 从上表中可得出什么结论? 4、实验思考 1)二分法收敛速度慢,但是适用条件简单容易判断;牛顿法收敛速度快但收敛 条件不易判断。能否设计一种混合算法,既保持计算过程的稳健性(不易失效), 又能够在条件允许的情况下采用更高阶的计算格式
2)MATLAB内置的求根函数fzero的算法逻辑是怎样的? 5、实验习题 1)结合二分法、试值法、牛顿法和割线法各自的特点,设计一种兼顾健壮性和 收敛速度的混合算法,能够自适应地判断求根函数在给定的初值附近的形态,选 择合适的方法进行求根。 2)一个实心球体浮在水面上,根据阿基米德原理,球体的浮力和球体排出水的 重量相等。令V,=(4/3)πr3为球的体积,V。为球体局部浸入水中时排出水的体积。 在静态平衡的状态下,球的重量和水的浮力相等, PgV=pgVw或sV,=Vw 其中是p球体密度,g是重力加速度,pw是水的密度,s=plp是球体材料的比 重,它决定球体沉入水面的深度。 s0.5 h 如图,球体高度为h部分的体积为V=(π/3)(3rh2-3).假设球体半径为=10cm,密 度为p=0.638,求球体浸入水中的质量为多少?
2)MATLAB 内置的求根函数 fzero 的算法逻辑是怎样的? 5、实验习题 1)结合二分法、试值法、牛顿法和割线法各自的特点,设计一种兼顾健壮性和 收敛速度的混合算法,能够自适应地判断求根函数在给定的初值附近的形态,选 择合适的方法进行求根。 2)一个实心球体浮在水面上,根据阿基米德原理,球体的浮力和球体排出水的 重量相等。令 Vs = (4/3)πr 3为球的体积,Vω为球体局部浸入水中时排出水的体积。 在静态平衡的状态下,球的重量和水的浮力相等, ρgVs = ρwgVw 或 sVs = Vw 其中是 ρ 球体密度,g 是重力加速度,ρw 是水的密度,s = ρ/ρw 是球体材料的比 重,它决定球体沉入水面的深度。 如图,球体高度为 h 部分的体积为 Vh=(π/3)(3rh2 -h 3 ).假设球体半径为 r=10cm, 密 度为 ρ=0.638,求球体浸入水中的质量为多少?