非线性方程的数值解法:二分法 python

import sympy
import math
x=sympy.symbols("x")
yuan=input("请输入原函数:")
duishu=sympy.log(x)
a=float(input('请输入a的值='))
b=float(input('请输入b的值='))
k=1
yaoqiu=int(input('请输入采用第几种精度要求:'))
yibusen=float(input('精度为='))
N=(sympy.log(b-a)-sympy.log(yibusen))/sympy.log(2)
N=math.ceil(N)

while True:
    X=(a+b)/2
    h=(b-a)/2
    fx=sympy.sympify(yuan).subs(x,X)
    if yaoqiu == 1 :
        if abs(fx)<yibusen:
            print("二分次数%s\n零点x=%s\n函数值f(x)=%s\n"%(k,X,fx))
            break
    else:
        if h<yibusen:
            print("二分次数%s\n零点x=%s\n函数值f(x)=%s\n"%(k,X,fx))
            break
    fa=sympy.sympify(yuan).subs(x,a)
    if fa*fx<0:
         b=X	
    else:
         a=X
    if k>=N: 
        print("分半N0次还没有达到精度要求信息")
        break       
    k+=1

输入案例
请添加图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
非线性方程组是指方程中至少包含一个非线性项的方程组。而二分法是一种常用的数值求解非线性方程的方法之一。 在Python中使用二分法求解非线性方程组的步骤如下: 1. 定义非线性方程组:根据题目给定的非线性方程组,首先将方程组表示成函数的形式。例如,假设方程组为f(x)=0,则需要定义函数f(x)。 2. 确定求解的范围:根据函数的特性选择一个合适的求解范围。二分法要求在求解范围内存在一个根。 3. 实现二分法函数:编写一个二分法函数,根据给定的非线性方程组函数和求解范围,使用二分法迭代求解方程组。 - 使用两个指针low和high表示求解范围的左右边界。 - 根据二分法的思想,通过计算中点mid=(low+high)/2,将求解范围划分为两半。 - 计算函数f(mid)的值,并判断其与0的关系,若小于0则更新low为mid,若大于0则更新high为mid。 - 不断重复上述步骤,直到求解精度满足要求或迭代次数达到指定阈值。 4. 调用二分法函数求解:在主程序中调用定义好的二分法函数,传入非线性方程组函数和求解范围等参数。根据需要可以设置求解精度和迭代次数阈值。 5. 输出结果:根据需要输出方程组的根或最优解,并进行结果的验证和分析。 总体而言,使用Python二分法求解非线性方程组的方法相对简单直观。但需要注意的是,二分法只能求得一个根,如果存在多个根或非线性方程组无解,需要使用其他数值方法进行求解
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值