插值法求解非线性方程

1. 前言

今天在codeing的时候遇到了一个这样的问题,面对以下非线性方程组

若我们给出它的y值,我们应该如何去确定它对应的x呢?

2.解决

直接使用插值法来拟合目标函数,这里我直接使用线性插值来拟合目标函数。线性插值简单点来说就是在一定区间内尽可能多的点,并将这些点之间使用直线连接来拟合目标函数。

现在使用python代码来实现,先导入依赖并定义目标函数

python 复制代码
import numpy as np
from scipy.interpolate import interp1d

def equation(x):
    return x + np.cos(x) + np.sin(x)

然后在该函数上取1000个点来拟合

ini 复制代码
# 生成已知点的 x 和 y 值
x_known = np.linspace(20, 500, 1000)  # 生成 1000 个 x 值
y_known = np.array([equation(x) for x in x_known])  # 计算对应的 y 值

# 创建插值函数
f_interpolated = interp1d(y_known, x_known)

最后,取值并验证误差

ini 复制代码
x0=100

# 给定的 y 值
y0 = equation(x0)

# 使用插值函数求解对应的 x 值
x_value = f_interpolated(y0)

print(f"当 y = {y0} 时,对应的 x 值约为: {x_value},误差为:{x_value-x0}")

执行代码,得出的结果

可以看到如果在所取点的区间20,500内取值,误差都是比较小的

相关推荐
Tisfy8 小时前
LeetCode 3345.最小可整除数位乘积 I:暴力枚举(从n开始尝试)
数学·算法·leetcode·题解·枚举
闻缺陷则喜何志丹15 小时前
【高等几何 梅向明】正交变换与仿射变换
数学·仿射变换·高等几何·投影几何·正交变换
Luhui Dev4 天前
几何题配图 API 怎么选?从文本生成到可编辑源文件的接入指南
人工智能·数学·agent·luhuidev
EQUINOX15 天前
【NCE】
数学
Tisfy7 天前
LeetCode 3014.输入单词需要的最少按键次数 I:遍历 / if-else计算(比纯数学公式写起来麻烦但好想)
数学·算法·leetcode·字符串·题解·贪心
闻缺陷则喜何志丹10 天前
【计算几何第五章】正交区域查找:数据库查询
数学·计算数学·区域树·kd树·树套树·正交区域查询·二维线段树
jz_ddk12 天前
[信号处理] 数学与工程之美:相邻差分共轭乘积
数学·算法·信号处理·差分·共轭
anew___12 天前
历史性突破!两位中国数学家同摘“数学界诺奖”,改写百年难题
数学·菲尔兹奖
Tisfy12 天前
LeetCode 3536.两个数字的最大乘积:O(1)空间维护max2
数学·算法·leetcode·题解
闻缺陷则喜何志丹15 天前
【计算几何 第四章】线性规划:铸模制造
数学·计算几何·线性规划·铸造