计算方法——插值法程序实现(一)

news2024/9/22 23:24:23

例题

给出y=e^x的函数关系表,分别利用线性插值及二次插值计算e^{0.27}的近似值。

x0.10.20.30.40.5
e^x1.1051711.2214031.3498591.4918251.648721

参考代码一:Python代码实现(自编码)

import math
"""
:parameter用于计算插值多项式的系数
"""
def Parameters(data_x,data_y,size):
    parameters=[]
    i = 0
    while i<size:
        j = 0
        temp = 1
        while j<size:
            if i!=j:
                temp*=data_x[i]-data_x[j];
            j += 1
        parameters.append(data_y[i]/temp);
        i += 1
    return parameters
"""
:Calculate用于计算拉格朗日插值公式计算后的值
"""
def Calculate(data_x,parameters,x):
    return_value = 0;
    i = 0
    while i < len(parameters):
        temp = 1
        j = 0
        while j<len(parameters):
            if i!=j:
                temp*=x-data_x[j];
            j+=1
        return_value+=temp*parameters[i]
        i+=1
    return return_value

x1 = [0.2,0.3];
y1 = [1.221403,1.349859];
p1 = Parameters(x1,y1,len(x1));
target_point = 0.27;
real_value = math.exp(target_point);
fit_value = Calculate(x1,p1,target_point)
remainder = real_value-fit_value
print("===============线性拉格朗日插值==================");
print(f"点{target_point}处的真实值为{real_value}")
print(f"点{target_point}处的拟合值为{fit_value}")
print(f'拉格朗日插值余项为{remainder}');
print("===============二次拉格朗日插值==================");
x2 = [0.2,0.3,0.4];
y2 = [1.221403,1.349859,1.491825];
p2 = Parameters(x2,y2,len(x2))
fit_value_2 = Calculate(x2,p2,target_point)
remainder2 = real_value-fit_value_2
print(f"点{target_point}处的拟合值为{fit_value_2}");
print(f'拉格朗日插值余项为{remainder2}');

Python编码计算结果

参考代码二:MATLAB代码实现(自编码)

%可运行部分代码
clc,clear
format long
x1=[0.2,0.3];
y1=[1.221403,1.349859];
p1=Parameters(x1,y1,length(x1));
point=0.27;
real = exp(point);
disp('点0.27处的真实值为');
disp(real);
fitted1 = Calculate(x1,p1,point);
Remainder1 = real-fitted1;
disp('点0.27处的线性拉格朗日插值结果为');
disp(fitted1);
disp('点0.27处的线性拉格朗日插值余项为');
disp(Remainder1);
x2 = [0.2,0.3,0.4];
y2 = [1.221403,1.349859,1.491825];
p2 = Parameters(x2,y2,length(x2));
fitted2 = Calculate(x2,p2,point);
Remainder2 = fitted2-real;
disp('点0.27处的二次拉格朗日插值结果为');
disp(fitted2);
disp('点0.27处的二次拉格朗日插值余项为');
disp(Remainder2);
format short

Parameters函数

Parameter用于计算插值多项式的系数

function parameters = Parameters(data_x,data_y,size)
parameters=[];
i=1;
while i<=size
    j=1;
    temp=1;
    while j<=size
        if i ~= j
            temp=(temp*(data_x(i)-data_x(j)));
        end
        % disp(temp);
        j=j+1;
    end
    parameters=[parameters,data_y(i)/temp];
    % disp(parameters);
    i=i+1;
end


Calculate函数

Calculate用于计算拉格朗日插值公式计算后的值

function return_value = Calculate(data_x,parametres,x)
return_value=0;
i=1;
while i<=length(parametres)
    temp=1;
    j=1;
    while j<=length(parametres)
        if i~=j
            temp = temp*(x-data_x(j));
        end
        j=j+1;
    end
    return_value = return_value+temp*parametres(i);
    i = i+1;
end

MATLAB编码计算结果

参考书目

[1] 李新栋,许文文,张绪浩,任永强. 基于Python的计算方法[M]. 北京:电子工业出版社,2023.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux-基础知识2

目录和文件的权限 修改目录和文件的拥有者 用root用户执行&#xff1a; chown -R 用户:组 目录和文件列表 -R选项表示连同各子目录一起修改 创建aa目录mkdir aa ,查看 ls -l 普通用户没有权限&#xff0c;不能删除 转移权限&#xff0c;chown -R mysal:deb /aa/aa 加上-R…

ModuleNotFoundError: No module named ‘cv2‘,python

ModuleNotFoundError: No module named cv2&#xff0c;python 报错如同&#xff1a; 解决方案&#xff1a; pip install opencv-python https://blog.csdn.net/zhangphil/category_9486298.html

陀螺仪LSM6DSV16X与AI集成(12)----SFLP获取四元数

陀螺仪LSM6DSV16X与AI集成.12--SFLP获取四元数 概述视频教学样品申请源码下载硬件准备SFLP生成STM32CUBEMX串口配置IIC配置CS和SA0设置ICASHE修改堆栈串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置量程初始化SFLP步骤初始化SFLP读取四元数数据 概述 在现代的运动跟踪…

World of Warcraft [CLASSIC][80][Grandel]Sapphire Hive Drone

Sapphire Hive Drone 蓝玉虫巢雄蜂 蓝玉虫巢巨峰 索拉查盆地 实用性不强&#xff0c;好看是好看&#xff0c;模型很大&#xff0c;无奈栏位太少

面相对象的成员介绍

2.面相对象的成员 -> 类: a.类的定义&#xff1a; 1.类是对公共特点的抽象&#xff0c;其中包含了很多成员&#xff0c;如属性&#xff08;成员变量 &#xff09;、方法、构造器等.要想很好的定义类&#xff0c;就必须要好好的了解这些类的成员 b.访问修饰符 控制属性的…

stm32开发之rt-thread使SysTick处于微妙级运行时,出现的问题记录

前言 在使用rt-thread开发时&#xff0c;想将调度的时间间隔缩短到微妙级别。根据提示需要修改对应的宏定义即可。这里在修改宏定义时&#xff0c;发现进入中断太过频繁&#xff0c;以至于主逻辑一直无法执行。这里测试的环境如下: 相关环境介绍 开发工具使用的是CLION测试开…

《编译原理:编程语言的幕后魔法师》

《编译原理&#xff1a;编程语言的幕后魔法师》 在计算机科学的宏伟殿堂中&#xff0c;编译原理犹如一位神秘而强大的魔法师&#xff0c;默默地施展着魔法&#xff0c;将人类可读的编程语言转化为计算机能够理解的机器语言。它是连接高级编程语言和计算机硬件的重要桥梁&#…

机器学习周报(8.26-9.1)

文章目录 摘要Abstractself-attetionQKV理解如何让self-attention更有效local attention/truncated attention方法stride attention方法Global Attention方法data driving方法Clusteringsinkhorn sorting network选取representative keys减少Keys数量的方法self-attentionSynth…

光电红外传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main.c文件 HW.h文件 HW.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 光电传感器对环境光线适应能力强,其具有一对红外线发射与接收管&#xff0c;发射管发射出一定频率的红外线&#xff…

企业邮箱申请步骤

一家企业如果希望建立专业形象、提高内外部沟通效率&#xff0c;申请并配置一个企业邮箱是至关重要的一步。下面详细介绍企业邮箱申请的步骤&#xff0c;以确保您的企业能够顺利拥有一个高效、安全的电子邮件系统。 第一步&#xff1a;确定需求和选择邮箱服务提供商 在开始申请…

Docker培训

基本概念 容器是一种轻量级、可移植、自包含的软件打包技术&#xff0c;由两部分组成&#xff1a;应用程序、依赖环境。通过标准格式打包应用的所有代码和依赖关系&#xff0c;确保应用能够快速、可靠地在计算环境下运行。 当容器启动时&#xff0c;一个新的可写层被加载到镜…

Day90 代码随想录打卡|贪心算法篇---合并区间

题目&#xff08;leecode T56&#xff09;&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。…

中英翻译,就看这五款工具!

大家好&#xff0c;今天咱们来聊聊翻译工具。作为一个经常需要和英文打交道的小编&#xff0c;我可是试过不少翻译软件。今天就来跟大家聊聊5款工具在翻译英文上的表现&#xff0c;看看谁才是真正的翻译高手&#xff01; 一、福昕翻译在线 网址&#xff1a;https://fanyi.pdf3…

【物理教学】不准确温度计图像代码分享

这段Python代码用于绘制温度计校准的图像。它包括以下功能&#xff1a; 用户输入&#xff1a;允许用户输入温度计在冰水混合物和沸水中的读数&#xff0c;以及一个实际温度值。 计算校准因子&#xff1a;根据用户输入的冰水混合物和沸水的读数&#xff0c;计算温度计的校准因子…

企业级使用docker实现负载均衡

利用Docker容器编排完成haproxy和nginx负载均衡架构实施 利用 Docker 编排实现 HAProxy 和 Nginx 负载均衡架构的介绍&#xff1a; 首先&#xff0c;使用 Docker Compose 进行容器编排。创建一个 haproxy.yml 文件&#xff0c;定义 HAProxy 和 Nginx 服务。HAProxy 容器作为前…

线性回归算法详解

目录 线性回归算法 线性回归方程 误差项分析 似然函数求解 线性回归求解 梯度下降算法 下山方向选择 梯度下降优化 梯度下降策略对比 学习率对结果的影响 代码实现 线性回归算法 线性回归是回归算法中最简单、实用的算法之一&#xff0c;在机器学习中很多知识点都是…

深入探讨Java JSON解析与HTML标签清除:详解与实例

“在Java开发中&#xff0c;解析和处理JSON文件是一项常见任务&#xff0c;尤其是当数据中包含大量HTML标签时&#xff0c;去除这些标签又是一项挑战。本文将详细讲解如何在Java中解析JSON文件&#xff0c;创建对应的实体类&#xff0c;并介绍去除HTML标签的方法&#xff0c;最…

RK3588开发板利用udp发送和接收数据

目录 1 send.cpp 2 receive.cpp 3 编译运行 4 测试 1 send.cpp #include <iostream> #include <string> #include <cstring> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> //…

【网络安全】Instagram 和 Meta 2FA 绕过漏洞

未经许可,不得转载。 文章目录 漏洞概述技术细节Meta 2FA 绕过步骤Instagram 2FA 绕过步骤总结漏洞概述 该漏洞允许攻击者在具有受害者Facabook账户权限的情况下,绕过 Meta 的双重身份验证 (2FA) 机制,实现账户接管;并且也能够绕过 Instagram 的双重身份验证 (2FA) 机制,…

堆排序的例题

答案&#xff1a;D C 知识点&#xff1a; 堆排序是把数组排成大顶堆或者小顶堆&#xff0c;选择根结点的最大值或者最小值&#xff0c;因此它是选择排序的方法 堆排序的方法是&#xff1a; 先把数组所有数据组成一个二叉树&#xff0c;然后调整结点与左右孩子树之间的位置&…