matlab牛顿法解超越方程,超越方程的牛顿法

超越方程:

tan(x)/x+b=0,其中b是任意实数。

我需要引入n并给出这个方程的n个解。在

我的代码(Python):from math import tan, cos, pi, sqrt, sin,exp

import numpy as np

from matplotlib.figure import Figure

import matplotlib.pyplot as plt

def f(x,b):

return tan(x)/x + b

def f1(x,b):

return (x/(cos(x)*cos(x)) - tan(x))/(x**2)

e = 0.00000000001

def newtons_method(x0, f, f1, e):

x0 = float(x0)

while True:

x1 = x0 - (f(x0,b) / f1(x0,b))

if abs(x1 - x0) < e:

return x1

x0 = x1

result = []

n = int(input("Input n: "))

b = float(input("Input b: "))

for i in range(2,4*n,1):

result.append(newtons_method(i, f , f1, e))

lambda_result = sorted(list(set(result)))

print(len(lambda_result))

我在第1步中改变了初始近似。根的周期为~pi,因此第二个参数为4*n。我通过集合排除重复解。如果n是50,那么他只找到18个解。需要修复什么才能正常工作?请帮帮我。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值