matlab实践(九):分段线性插值与三次样条插值

题目

用matlab对572所在区间分别进行分段线性插值、三次样条插值,计算出151,159,984,995的对数值,画出图形并在图形上用红色圆圈标记151,159,984,995所在的点,同时在图形中显示这些点的坐标。
说明:假设125,528,765;则插值区间为【120,770】

1.分段线性插值、三次样条插值

1.1分段线性插值

Step1:根据已知 的取值点,求出每个取值点对应的线性插值多项式,表示为:
L j ( x ) = x − x j − 1 x j − x j − 1 y j − 1 + x − x j − 1 x j − x j − 1 y j L_{j}(x)=\frac{x-x_{j-1}}{x_{j}-x_{j-1}}y_{j-1}+ \frac{x-x_{j-1}}{x_{j}-x_{j-1}}y_{j} Lj(x)=xjxj1xxj1yj1+xjxj1xxj1yj

Step2:根据已知的取值点,使用第一步中求出的每个取值点对应的线性插值多项式,然后求已知 个点对应的线性插值多项式 。其表达式为:
L ( x ) = ∑ j = 0 n y j L j ( x ) L (x)=\sum_{j=0}^{n} y_{j}L_{j}(x) L(x)=j=0nyjLj(x)

选取以150开始,间隔为50,到1000结束的点,然后使用分段线性插值法,计算出151,159,984,995的对数值。

x = 150:50:1000;
y = B(15:5:100)+2.*B(b==10);
figure(2)

xx=[151,159,984,995];
for i=1:4
    yy(i)=fdxx(x,y,xx(i));
end
xx1=150:1:999;
for i=1:850
    yyy(i)=fdxx(x,y,xx1(i));
end
plot(xx1,yyy)
hold on
scatter(xx,yy)
text(xx,yy, {'151','159','984','995'}, 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right'); % 添加文字标注
hold on
grid on
plot(x,y,'o')
% 添加坐标轴标签和标题
xlabel('x');
ylabel('ln(x)');
title('插值点与分段线性插值');
legend('分段线性插值点坐标','插值点')

% 显示图形
grid on;
function yy=fdxx(x,y,xx)
    n=size(x,2);
    for i=1:n-1
        if x(i)<xx&&xx<x(i+1)
            L1=(xx-x(i+1))/(x(i)-x(i+1));
            L2=(xx-x(i))/(x(i+1)-x(i));
            yy=L1*y(i)+L2*y(i+1);
            break;
        elseif x(i)==xx
             yy=y(i);      
        end
    end
    
end

结果如下所示

在这里插入图片描述

1.2三次样条插值

假设已知一组数据点的横坐标为$ x0, x1, …, xn$,纵坐标为 y 0 , y 1 , . . . , y n y0, y1, ..., yn y0,y1,...,yn

  1. 计算每个小区间的一阶导数,可以使用自然边界条件或固定边界条件来确定边界处的导数值。

  2. 在每个小区间 [xi, xi+1] 内,拟合一个三次多项式 Si(x),使得在该区间内的插值函数满足连续性和二阶导数连续性。

    三次多项式 Si(x) 的一般形式为:
    S i ( x ) = a i + b i ( x − x i ) + c i ( x − x i ) 2 + d i ( x − x i ) 3 Si(x) = ai + bi(x - xi) + ci(x - xi)^2 + di(x - xi)^3 Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3

    其中,$ai, bi, ci, di $是待求的系数。

  3. 为了确定这些系数,需要满足以下条件:

    a) 在每个小区间内,插值函数与已知数据点相等:
    S i ( x i ) = y i Si(xi) = yi Si(xi)=yi

    b) 在每个小区间内,插值函数的一阶导数连续:
    S i ′ ( x i + 1 ) = S i + 1 ′ ( x i + 1 ) Si'(xi+1) = Si+1'(xi+1) Si(xi+1)=Si+1(xi+1)

    c) 在每个小区间内,插值函数的二阶导数连续:
    S i ′ ′ ( x i + 1 ) = S i + 1 ′ ′ ( x i + 1 ) Si''(xi+1) = Si+1''(xi+1) Si′′(xi+1)=Si+1′′(xi+1)

  4. 使用这些条件,可以得到一个三对角线性方程组,通过求解该方程组即可得到每个小区间的系数。

    方程组的形式为:
    h i ∗ c i − 1 + 2 ( h i + h i + 1 ) ∗ c i + h i + 1 ∗ c i + 1 = 3 ∗ ( ( y i + 1 − y i ) / h i + 1 − ( y i − y i − 1 ) / h i ) h_i * ci-1 + 2(h_i + h_i+1) * ci + h_i+1 * ci+1 = 3 * ((y_i+1 - y_i) / h_i+1 - (y_i - y_i-1) / h_i) hici1+2(hi+hi+1)ci+hi+1ci+1=3((yi+1yi)/hi+1(yiyi1)/hi)

    其中,$h_i = x_i+1 - x_i $是每个小区间的宽度。

  5. 求解得到系数后,即可得到每个小区间的三次多项式 Si(x)。

  6. 最后,根据所需的插值点 x,找到对应的小区间 [xi, xi+1],然后使用对应的三次多项式 Si(x) 计算插值点的函数值。

1.3 代码实现

%%三次样条插值
figure(3)
s=threesimple1(x,y,xx1);
plot(xx1,s)
hold on
grid on
plot(x,y,'o')
yy=threesimple1(x,y,xx);
scatter(xx,yy)
text(xx,yy, {'151','159','984','995'}, 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right'); % 添加文字标注

xlabel('x'), ylabel('ln(x)')
title('插值点与三次样条函数') 
legend('三次样条插值点坐标','插值点')
function [D,h,A,g,M]=threesimple(X,Y)
%        自然边界条件的三次样条函数(第二种边界条件)
%        此函数为M值求值函数
%        D,h,A,g,M输出量分别为系数矩阵D,插值宽度h,差商表A,g值,M值 
         n=length(X); 
         A=zeros(n,n);A(:,1)=Y';D=zeros(n-2,n-2);g=zeros(n-2,1);
         for  j=2:n
            for i=j:n
                A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1));
            end
         end
         
         for i=1:n-1
             h(i)=X(i+1)-X(i);
         end
         for i=1:n-2
             D(i,i)=2;
             g(i,1)=(6/(h(i+1)+h(i)))*(A(i+2,2)-A(i+1,2));
         end
         for i=2:n-2
             u(i)=h(i)/(h(i)+h(i+1));
             n(i-1)=h(i)/(h(i-1)+h(i));
             D(i-1,i)=n(i-1);
             D(i,i-1)=u(i);             
         end
         M=D\g;
         M=[0;M;0];         
end

function s=threesimple1(X,Y,x)
%        自然边界条件函数 
%        s函数表示三次样条插值函数插值点对应的函数值
%        根据三次样条参数函数求出的D,h,A,g,M
%        x表示求解插值点函数点,X为已知插值点        
         [D,h,A,g,M]=threesimple(X,Y)
         n=length(X); m=length(x);    
         for t=1:m
            for i=1:n-1
               if (x(t)<=X(i+1))&&(x(t)>=X(i))
                  p1=M(i,1)*(X(i+1)-x(t))^3/(6*h(i));
                  p2=M(i+1,1)*(x(t)-X(i))^3/(6*h(i));
                  p3=(A(i,1)-M(i,1)/6*(h(i))^2)*(X(i+1)-x(t))/h(i);
                  p4=(A(i+1,1)-M(i+1,1)/6*(h(i))^2)*(x(t)-X(i))/h(i);
                  s(t)=p1+p2+p3+p4; 
                  break;
               else
                   s(t)=0; 
               end
            end
         end
end



结果如下所示:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 项目代码混淆实战:保护代码安全,防止泄露

​ 目录 摘要&#xff1a; 引言&#xff1a; 1.编写混淆配置文件 2.配置Maven插件 3.执行混淆 下载ipa代码混淆保护工具 获取ipaguard登录码 代码混淆 文件混淆 IPA重签名与安装测 4.查看混淆效果 摘要&#xff1a; 本篇博客介绍了如何使用Proguard实现代码混淆&am…

Tecplot绘制涡结构(Q准则)

文章目录 目的步骤1步骤2步骤3步骤4步骤5步骤6结果 目的 Tecplot绘制涡结构(Q准则判别)并用温度进行染色 Q准则计算公式 步骤1 步骤2 步骤3 步骤4 步骤5 步骤6 结果

HTML5+CSS3小实例:纯CSS实现文字组成肖像特效

实例:纯CSS实现文字组成肖像特效 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conten…

人工智能_机器学习060_核函数对应数学公式_数据空间错位分割_简单介绍_以及核函数总结---人工智能工作笔记0100

我们之前做的都是线性分类问题,那么需要一根线来分割类别,但是,如果出现了,环形数据,我们知道,在二维中我们就无法分割了,那么有没有什么办法分割呢? 实际上是有的,可以看到,我们可以把数据进行升维,可以看到,如果把数据升高到2维度以上,可以看到,神奇的一幕出现了,这个时候,因…

金融帝国实验室(Capitalism Lab)V10版本公司财务报告列示优化

金融帝国实验室&#xff08;Capitalism Lab&#xff09;V10版本公司财务报告列示优化 ————————————— ★【全新V10版本开发播报】★ 即将发布的V10版本中的公司财务报告&#xff08;指标&#xff09;列示优化&#xff1a; ◈ 新增了一个按钮&#xff0c;用于在历史…

SpringCloud | Dubbo 微服务实战——注册中心详解

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 |Eureka,Nacos,Consul,Zookeeper在Spring Cloud和Dubbo中实战 引言 在项目开发过程中&#xff0c;随着项目不断扩大&#xff0c;也就是业务的不断增多&#xff0c;我们将采用集群&#xf…

Leetcode周赛374补题(3 / 3) - EA专场

不愧是EA的题&#xff0c;我最爱的模拟人生……好难&#xff0c;呜呜 目录 1、找出峰值 - 暴力枚举 2、需要添加的硬币的最小数量 - 思维 贪心 3、统计完全子字符串 - 滑窗 分组循环 1、找出峰值 - 暴力枚举 2951. 找出峰值 class Solution {public List<Integer> …

Python实现FA萤火虫优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

第3章 表、栈和队列

3.4 队列ADT 像栈一样&#xff0c;队列(queue)也是表。然而&#xff0c;使用队列时插入在一端进行而删除则在另一端 进行。 3.4.1 队列模型 队列的基本操作是Enqueue(入队)一它是在表的末端(叫作队尾(rear))插入一个元素&#xff0c;还有Dequeue(出队)——它是删除(或返回)在…

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树&#xff0c;Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式&#xff0c;这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径&#xff0c;…

YOLO5Face算法解读

论文&#xff1a;YOLO5Face: Why Reinventing a Face Detector 链接&#xff1a;https://arxiv.org/abs/2105.12931v1 机构&#xff1a;深圳神目科技&LinkSprite Technologies&#xff08;美国&#xff09; 开源代码&#xff1a;https://github.com/deepcam-cn/yolov5-face…

GateWay的路由与全局过滤器

1.断言工厂 我们在配置文件中写的断言规则只是字符串&#xff0c;这些字符串会被Predicate Factory读取并处理&#xff0c;转变为路由判断的条件 例如Path/user/**是按照路径匹配&#xff0c;这个规则是由 org.springframework.cloud.gateway.handler.predicate.PathRoutePr…

CityEngine2023 shp数据城市与路网三维模型并导入UE5

目录 0 引言1 城市和道路数据获取1.1 常用方法1.2 OSM数据获取1.3 OSM数据格式1.3.1 所有格式1.3.2 Shapefile格式 2 实践2.1 导入数据&#xff08;.shp&#xff09;2.2 构建三维模型2.3 将模型导入UE5 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xf…

ElasticSearch学习笔记(一)

计算机软件的学习&#xff0c;最重要的是举一反三&#xff0c;只要大胆尝试&#xff0c;认真验证自己的想法就能收到事办功倍的效果。在开始之前可以看看别人的教程做个快速的入门&#xff0c;然后去官方网站看看官方的教程&#xff0c;有中文教程固然是好&#xff0c;没有中文…

处理器中的TrustZone之安全状态

在这个主题中&#xff0c;我们将讨论处理器内对TrustZone的支持。其他部分则涵盖了在内存系统中的支持&#xff0c;以及建立在处理器和内存系统支持基础上的软件情况。 3.1 安全状态 在Arm架构中&#xff0c;有两个安全状态&#xff1a;安全状态和非安全状态。这些安全状态映射…

第一个小记录达成:第一个年费会员用户

早上看到&#xff0c;欸&#xff0c;有个用户好像充了 9.9 元&#xff0c;挺开心&#xff0c;刚刚看飞书消息&#xff0c;看到了这条分享给朋友&#xff0c;等等&#xff0c;是充值了 99 元&#xff0c;有个用户充了年费&#xff0c;偶买噶&#xff0c;开心 &#x1fae1; 这是…

如何通过知识库推动企业创新?

如今的市场竞争激烈&#xff0c;企业创新是企业持续发展的关键之一。知识库作为企业内部的重要知识资源&#xff0c;对于推动企业创新具有不可替代的作用。接下来就跟大家探讨一下如何通过知识库推动企业创新。 | 一、知识库在推动企业创新中的作用 1.提高知识获取和分享效率 …

Python按要求从多个txt文本中提取指定数据

基本想法 遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件&#xff0c;并从每一个文本文件中&#xff0c;找到我们需要的指定数据&#xff0c;最后得到所有文本文件中我们需要的数据的集合 举例 如现有名为file一个文件夹&#xff0c;里面含有大量的.txt格…

练习十二:利用SRAM设计一个FIFO

利用SRAM设计一个FIFO 1&#xff0c;任务目的2&#xff0c;设计要求3&#xff0c;FIFO接口的设计思路4&#xff0c;FIFO接口的测试&#xff0c;top.v5&#xff0c;FIFO接口的参考设计&#xff0c;fifo_interface.v6&#xff0c;SRAM模型&#xff0c;sram.v代码7&#xff0c;viv…

acwing算法基础之动态规划--数位统计DP、状态压缩DP、树形DP和记忆化搜索

目录 1 基础知识2 模板3 工程化 1 基础知识 暂无。。。 2 模板 暂无。。。 3 工程化 题目1&#xff1a;求a~b中数字0、数字1、…、数字9出现的次数。 思路&#xff1a;先计算1~a中每位数字出现的次数&#xff0c;然后计算1~b-1中每位数字出现的次数&#xff0c;两个相减即…