牛顿迭代法求解非线性方程

from matplotlib import pyplot as plt
import numpy as np


def fun(x):
    return x**3-2*x-5


def dfun(x):
    return 3*x*x-2


def newton(fun,dfun,a,b,eps):
    err = 1
    x = b
    k = 0
    while err > eps:
        x = x - fun(x)/dfun(x)
        err = fun(x)
        k = k + 1
    print('牛顿法的迭代次数为{:d}次'.format(k))
    return x


x = newton(fun, dfun, 0, 10, 0.0000001)
print('牛顿迭代法的求解结果为{:.7}'.format(x))
x1 = np.linspace(-10, 10, 1000)
y1 = fun(x1)
plt.plot(x1, y1)
plt.show()

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB中可以使用牛顿求解线性方程组。牛顿是一种代的数值方,通过不断逼近方程组的解来求解线性方程组。 下面是使用MATLAB实现牛顿求解线性方程组的步骤: 1. 定义方程组:首先需要定义一个函数,该函数返回一个向量,表示线性方程组的各个方程。例如,假设要求解线性方程组为: ``` f1(x, y) = 0 f2(x, y) = 0 ``` 则可以定义一个函数如下: ```matlab function F = equations(x) F(1) = f1(x(1), x(2)); F(2) = f2(x(1), x(2)); end ``` 2. 初始化代:选择一个初始点作为代的起点,例如,可以选择一个初始点`x0`。 3. 代计算:使用牛顿代公式进行代计算,直到满足停止条件。牛顿代公式如下: ``` x(k+1) = x(k) - J(x(k)) \ F(x(k)) ``` 其中,`x(k)`表示第k次代的解向量,`J(x(k))`是方程组的雅可比矩阵,`F(x(k))`是方程组的函数值向量。 在MATLAB中,可以使用`fsolve`函数来实现牛顿。`fsolve`函数会自动计算雅可比矩阵,并进行代计算,直到满足停止条件。例如,可以使用以下代码进行求解: ```matlab x0 = [x0_initial_guess, y0_initial_guess]; % 初始点 options = optimoptions('fsolve', 'Display', 'iter'); % 设置选项 [x, fval] = fsolve(@equations, x0, options); % 求解方程组 ``` 其中,`@equations`表示方程组函数的句柄,`x0`是初始点,`options`是求解选项,`x`是求解得到的解向量,`fval`是方程组的函数值向量。 需要注意的是,牛顿可能会出现收敛性问题,因此在实际应用中需要进行收敛性判断和处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leetteel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值