武汉理工大学-数值分析-(4)方程求根的数值方法

Jill ·
更新时间:2024-09-21
· 500 次阅读

文章目录实验目标编程语言与扩展库二分法求根牛顿法求根弦截法求根写在最后 实验目标

在这里插入图片描述
用编程语言编程实现以下算法:
1、用 二分法 求解方程的根;
2、用 牛顿(Newton)迭代法 求解方程的根;
3、用 弦截法 求解方程的根.

编程语言与扩展库

语言:Python
扩展模块:numpy

二分法求根 # 函数 f(x) def f(x): y = x**3 - x - 1 return y # 二分求根法 求解f(x)=0 def Dicphoni(a,b,tol): # 初始值 y0 = f(a) # 迭代直到区间小于tol while b-a > tol: x = (a+b)/2 y = f(x) # 对半区间 if y * y0>0: a = x else: b = x return x,y if __name__ == '__main__': # 求根区间与误差范围 a,b = 1,1.5 tol = 0.5e-5 x,y = Dicphoni(a,b,tol) print('x = {}'.format(x)) print('y = {}'.format(y))
牛顿法求根 # 导入模块 from math import exp # 函数f(x) def f(x): y = x * exp(x) - 1 return y # 导函数f ' (x) def f_(x): y = (1+x) * exp(x) return y # 牛顿法 求解f(x)=0 def Newton(x0,tol,N): # 初值 x_k = x0 print('x0 = {}'.format(x0)) # 迭代 for i in range(N): x_k_plus = x_k - f(x_k)/f_(x_k) print('x{} = {}'.format(i + 1, x_k_plus)) # 达到误差要求 if abs(x_k_plus - x_k)<tol: print('迭代次数: {}'.format(i+1)) break x_k = x_k_plus if __name__ == '__main__': Newton(0.5,1e-5,100)
弦截法求根 # 导入模块 from math import exp # 函数f(x) def f(x): y = x * exp(x) - 1 return y # 弦截法 求解f(x)=0 def String_Interception(x0,x1,tol,N): # 初值 x_k_sub = x0 x_k = x1 print('x0 = {}'.format(x0)) print('x1 = {}'.format(x1)) # 迭代 for i in range(N): x_k_plus = x_k - f(x_k)/(f(x_k)-f(x_k_sub))*(x_k - x_k_sub) print('x{} = {}'.format(i + 2, x_k_plus)) # 达到误差要求 if abs(x_k_plus - x_k)<tol: print('迭代次数: {}'.format(i+1)) break x_k = x_k_plus if __name__ == '__main__': String_Interception(0.5,0.6,1e-5,100)
写在最后

声明:本文内容来源于武汉理工大学2019-2020学年数值分析方法课程实验,仅供学习参考
如有不足地方,还请指出。祝愿读者能够在编程之路上不断进步!


作者:-Kingzy-



数值分析 方法 大学

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章