实验3非线性方程求解 参考答案 1.混合算法法可结合二分法和另一个收敛更快的方法,如牛顿法或制线法。每次迭代首先 使用快速迭代法的基本步骤,若结果在起始有根区间中,就继续使用这一方法,否则就采用 二分法。这种混合法不比二分法的收敛速度慢,有些情况下还会快很多。它的优点是可以给 出粗略的猜测值而不必担心所用方法会因此发散。实际上MATLAB内置的 zcro函数就实 现了混合法,它结合了二分法、割线法和二次反插值法,并且采用了避免元余技术并将会 误差产生的影响减到最小的措施。对于通用的求根问题,最好使用z0函数,而不建议使 用上述各种迭代方法包括二分法、牛顿法和割线法等。 2.当一个球体以深度h浸入水中时,所排开水的质量M为 M=,2-x-y2)=h3r-包 而球的质量为M=4πrp3.根据阿基米德定律,可建立方程如下: πh3-3h2r+4r2p=0 将=10,p0.638代入上述方程,可得 2552-302+2=0 整理得到代数方程3.30M+2552-0.用MATLAB自带的roots函数即可求得根。 →>r0ots1-3002552 ans 26.3145706143994 11.8615015081204 -8.1760721225198 显然,第一个和第三个根不符合题意,所以h11.8615015081204cm),从而
实验 3 非线性方程求解 参考答案 1. 混合算法法可结合二分法和另一个收敛更快的方法,如牛顿法或割线法。每次迭代首先 使用快速迭代法的基本步骤,若结果在起始有根区间中,就继续使用这一方法,否则就采用 二分法。这种混合法不比二分法的收敛速度慢,有些情况下还会快很多。它的优点是可以给 出粗略的猜测值而不必担心所用方法会因此发散。实际上 MATLAB 内置的 fzero 函数就实 现了混合法,它结合了二分法、割线法和二次反插值法,并且采用了避免冗余技术并将舍入 误差产生的影响减到最小的措施。对于通用的求根问题,最好使用 fzero 函数,而不建议使 用上述各种迭代方法包括二分法、牛顿法和割线法等。 2. 当一个球体以深度 h 浸入水中时,所排开水的质量 Mw为: 𝑀𝑤 = ∫ 𝜋(𝑟 2 − (𝑥 − 𝑟) 2 )𝑑𝑥 ℎ 0 = 𝜋ℎ 2 (3𝑟 − ℎ) 3 而球的质量为 Mb=4πr 3ρ/3. 根据阿基米德定律,可建立方程如下: 𝜋(ℎ 3 − 3ℎ 2 𝑟 + 4𝑟 3𝜌) 3 = 0 将 r=10,ρ=0.638 代入上述方程,可得 𝜋(2552 − 30ℎ 2 + ℎ 3 ) 3 = 0 整理得到代数方程 h 3 -30h 2+2552=0. 用 MATLAB 自带的 roots 函数即可求得根。 >> roots([1 -30 0 2552]) ans = 26.3145706143994 11.8615015081204 -8.1760721225198 显然,第一个和第三个根不符合题意,所以 h=11.8615015081204(cm) ,从而 Mw=2672.44815065372(g)。还可以用 polyval([1 -30 0 2552], h)进行验证,得到结果为 -4.54747350886464e-13,证明求得的深度 h 是正确的