25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)

这篇具有很好参考价值的文章主要介绍了25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简述

      

插值法

插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。常见分段线性插值法样条差值,样条插值误差更小。

1 线性插值法

线性插值法是指使用连接两个已知量的直线来确定在这两个已知量之间的一个未知量的值的方法。 假设我们已知坐标(x0,y0)与(x1,y1),要得到[x0,x1]区间内某一位置x在直线上的y值。根据图中所示,我们得到两点式直线方程:

25.2 matlab里面的10中优化方法介绍——插值法(matlab程序),matlab,开发语言,数据分析,数学建模,算法

假设方程两边的值为α,则:

25.2 matlab里面的10中优化方法介绍——插值法(matlab程序),matlab,开发语言,数据分析,数学建模,算法

25.2 matlab里面的10中优化方法介绍——插值法(matlab程序),matlab,开发语言,数据分析,数学建模,算法

则:y = y0 + α(y1 − y0)(即已知x就可得a值 然后再得y值。


实际上,即使x不在x0到x1之间并且α也不是介于0到1之间,这个公式也是成立的。在这种情况下,这种方法叫作线性外插—参见外插值

已知y求x的过程与以上过程相同。

2 样条插值法

常用三次样条插值法,具体概念比较复杂,可以自行百度。

3 拉格朗日差值法

略。

  • MATLAB中的使用-interp1函数:
MATLAB中的插值函数为interp1,其调用格式为: yi=interp1(x,y,xi,'method') 其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,
'method'表示采用的插值方法,MATLAB提供的插值方法有几种:
'nearest'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'pchip'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。

2.代码

主程序:

%%   用插值法求解最优化问题
clear all
f1202=inline('(x.*x - 2).^2/2-1', 'x');;
%%%设定区间端点
a = 0;
b = 5;
%%%分别设定x阈值和函数f阈值
TolX = 1e-5; 
TolFun = 1e-8; 
%%%设定迭代次数
MaxIter = 100;
%%%用二次插值函数求解
[xoq,foq] = Opt_Quadratic(f1202,[a b],TolX,TolFun,MaxIter)
%用matlab内置函数求最小值以及它的函数值
[xob,fob] = fminbnd(f1202,a,b) %MATLAB 内置函数求解

子程序;

function [xo,fo] = Opt_Quadratic(f,x,TolX,TolFun,MaxIter)
% 用二次插值求f(x)最优解
if nargin < 5
    MaxIter =100;
end
if nargin < 4
    TolFun= 1e-8;
end
if nargin < 3
    TolX = 1e-5;
end
%%%根据输入确定三点的初始值,并求出对应的函数值
if length(x) > 2 
    x012 = x(1:3);
else
    if length(x) == 2
        a = x(1);
        b = x(2);
    else
        a = x-10; b = x+10;
    end
    x012 = [a (a + b)/2 b];
end
f012 = f(x012);
%%%%初始化三点值
x0 = x012(1);
x1 = x012(2);
x2 = x012(3);
f0 = f012(1);
f1 = f012(2);
f2 = f012(3);
%%%%%求出插值二项式的取最小值处的x3以及相应的最小值f3
nd = [f0-f2 f1-f0 f2-f1]*[x1*x1 x2*x2 x0*x0; x1 x2 x0]';
x3 = nd(1)/2/nd(2);
f3 = feval(f,x3); 
%%%%判断是否停止迭代
if MaxIter<= 0 | abs(x3 - x1) < TolX | abs(f3 - f1) < TolFun
    xo = x3;
    fo = f3;
else
%%%%%根据求出的多项式值与区间中三点值的大小比较确定相应的新的三点
    if x3 < x1
        if f3 < f1
            x012 = [x0 x3 x1];
            f012 = [f0 f3 f1];
        else
            x012 = [x3 x1 x2];
            f012 = [f3 f1 f2];
        end
    else
        if f3 <= f1
            x012 = [x1 x3 x2];
            f012 = [f1 f3 f2];
        else
            x012 = [x0 x1 x3];
            f012 = [f0 f1 f3];
        end
    end
%%%%%进行新一轮迭代
    [xo,fo] = Opt_Quadratic(f,x012,TolX,TolFun,MaxIter-1);
end

3.运行结果

25.2 matlab里面的10中优化方法介绍——插值法(matlab程序),matlab,开发语言,数据分析,数学建模,算法

 25.2 matlab里面的10中优化方法介绍——插值法(matlab程序),matlab,开发语言,数据分析,数学建模,算法

 文章来源地址https://www.toymoban.com/news/detail-610797.html

到了这里,关于25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 25.9 matlab里面的10中优化方法介绍—— 惩罚函数法求约束最优化问题(matlab程序)

    1. 简述          一、算法原理 1、问题引入 之前我们了解过的算法大部分都是无约束优化问题,其算法有:黄金分割法,牛顿法,拟牛顿法,共轭梯度法,单纯性法等。但在实际工程问题中,大多数优化问题都属于有约束优化问题。惩罚函数法就可以将约束优化问题转化为

    2024年02月15日
    浏览(25)
  • 25.8 matlab里面的10中优化方法介绍—— 拉各朗日乘子法求最优化解(matlab程序)

    1. 简述        拉格朗日乘子法(Lagrange multipliers)是一种寻找多元函数 在一组约束下 的 极值 的方法。 通过引入拉格朗日乘子,可将有 变量与 约束条件的最优化问题转化为具有变量的无约束优化问题求解 举个例子: 求 最小值,约束条件,可以用下图表示。 这是一个等

    2024年02月14日
    浏览(29)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(31)
  • 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就 需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足

    2024年02月05日
    浏览(37)
  • Matlab图像处理-灰度插值法

    最近邻法 最近邻法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。是将 ( u 0 , v 0 ) (u_0,v_0) 点最近的整数坐标 u , v (u,v) 点的灰度值取为 ( u 0 , v 0 ) (u_0,v_0) 点的灰度值。 在 ( u 0 , v 0 ) (u_0,v_0) 点各相邻像素间灰度变化较小时,这种方法是一

    2024年02月10日
    浏览(37)
  • 【数值分析实验】(一)插值法(含matlab代码)

            实际问题中许多变量的关系可以用数学函数概念进行刻画,但是在大多数情况下,这些函数的表达式是未知的,或者已知但十分复杂,需要我们将这个函数的未知解析式近似地构造出来,或者用一个简单的函数表达式来代替复杂的函数表达式。基于上述过程,我们

    2024年02月12日
    浏览(35)
  • 二次插值法详细步骤及其matlab代码举例

    基本思想:在搜索区间中不断使用二次多项式去近似目标函数,并逐步用插值多项式的极小点去逼近搜索问题(什么鬼?)其实就是模拟目标函数,求出模拟出来的函数的极小值近似等于目标函数极小值 mini f(x)    区间[a,b] 精度e=0.3(自己设置) 确定目标函数区间[a,b],精度e

    2024年02月10日
    浏览(38)
  • 数值分析(四) Hermite(埃尔米特)插值法及matlab代码

      本篇为 插值法专栏 第四篇内容讲述,此章主要讲述 Hermite(埃尔米特)插值法 及matlab代码,其中也给出详细的例子让大家更好的理解Hermite插值法 提示 之前已经介绍 牛顿插值法 和 三次样条插值 ,如果没看过前两篇的可以点击以下链接阅读 数值分析(一)牛顿插值法

    2024年02月10日
    浏览(38)
  • Lagrange插值法实验:求拉格朗日插值多项式和对应x的近似值matlab实现(内附代码)

    已知函数表: 求出Lagrange 插值多项式,并计算x=1.2处的y的近似值。 求解多项式: 求解近似值: 请输入横坐标向量X: X=[1, 2, 4, 5] 请输入纵坐标向量Y: Y=[16,12,8,9] 基函数为: q1(x)=(11 x^2)/12 - (19 x)/6 - x^3/12 + 10/3 q2(x)=(29 x)/6 - (5 x^2)/3 + x^3/6 - 10/3 q3(x)=(4 x^2)/3 - (17 x)/6 - x^3/6 + 5/3 q4(x)=

    2024年02月08日
    浏览(35)
  • 牛顿插值法、拉格朗日插值法、三次插值、牛顿插值多项式、拉格朗日插值多项式

    两点式线性插值 调用Matlab库函数 拉格朗日二次插值: 牛顿二次插值 结果分析:通过对比不同插值方法,可以看到在一定范围内(高次会出现龙格现象),插值次数越高,截断误差越小(插值结果越接近于真实函数值);同时,对于相同次数的插值,由于不同的插值方法它们

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包