插值法求解非线性方程

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]内取值,误差都是比较小的

相关推荐
Ayanami_Reii10 小时前
基础数学算法-开关问题
数学·算法·高斯消元
canonical_entropy5 天前
模型驱动架构的数学内核:统一生成与演化的 Y = F(X) ⊕ Delta 不变式
数学·设计模式·架构
程序员大雄学编程14 天前
定积分的几何应用(一):平面图形面积计算详解
开发语言·python·数学·平面·微积分
金銀銅鐵15 天前
[Java] 用 Swing 生成一个最大公约数计算器(展示计算过程)
java·后端·数学
jz_ddk15 天前
[数学基础] 瑞利分布:数学原理、物理意义及Python实验
开发语言·python·数学·概率论·信号分析
kyle~17 天前
数学基础---四元数
人工智能·数学·机器人·旋转
程序员大雄学编程19 天前
用Python来学微积分34-定积分的基本性质及其应用
开发语言·python·数学·微积分
程序员大雄学编程22 天前
用Python来学微积分30-微分方程初步
开发语言·python·线性代数·数学·微积分
Zevalin爱灰灰22 天前
复变函数与积分变换 第一章——复数与复变函数
数学
RE-190125 天前
《深入浅出统计学》学习笔记(二)
大数据·数学·概率论·统计学·数理统计·知识笔记·深入浅出