MATLAB插  值  法

作者:凯鲁嘎吉 - 博客园
http://www.cnblogs.com/kailugaji/

一、实验目的

二、实验原理

三、实验程序

四、实验内容

五、解答

1. 程序

(1)Lagrange插值多项式

function [C, L,L1,l]=lagran1(X,Y)
%输出C为插值多项式的系数,L为插值多项式,L1为l的系数,l为小l
%输入数据表X=[];Y=[];行向量
m=length(X); L=ones(m,m);
for k=1: m
V=1;
for i=1:m
if k~=i
V=conv(V,poly(X(i)))/(X(k)-X(i));
end
end
L1(k,:)=V; l(k,:)=poly2sym (V);
end
C=Y*L1;L=Y*l;

(2)Newton插值多项式

function [A,C,L,wcgs,Cw]= newploy(X,Y)
n=length(X); A=zeros(n,n); A(:,1)=Y';
q=1.0; c1=1.0;
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
b=poly(X(j-1));q1=conv(q,b); c1=c1*j; q=q1;
end
C=A(n,n); b=poly(X(n)); q1=conv(q1,b);
for k=(n-1):-1:1
C=conv(C,poly(X(k))); d=length(C); C(d)=C(d)+A(k,k);
end
L(k,:)=poly2sym(C); Q=poly2sym(q1);
syms M
wcgs=M*Q/c1; Cw=q1/c1;

2. 运算结果

(1)
>> X=[0:0.4:2];
>> Y=X.^4;
>> [C, L,L1,l]=lagran1(X,Y) C = 0.0000 1.0000 0 -0.0000 0 0 L = x^4 L1 = -0.8138 4.8828 -11.0677 11.7188 -5.7083 1.0000
4.0690 -22.7865 46.2240 -40.1042 12.5000 0
-8.1380 42.3177 -76.8229 55.7292 -12.5000 0
8.1380 -39.0625 63.8021 -40.6250 8.3333 0
-4.0690 17.9036 -26.6927 15.8854 -3.1250 0
0.8138 -3.2552 4.5573 -2.6042 0.5000 0 l = - (625*x^5)/768 + (625*x^4)/128 - (2125*x^3)/192 + (375*x^2)/32 - (137*x)/24 + 1
(3125*x^5)/768 - (4375*x^4)/192 + (8875*x^3)/192 - (1925*x^2)/48 + (25*x)/2
- (3125*x^5)/384 + (8125*x^4)/192 - (7375*x^3)/96 + (2675*x^2)/48 - (25*x)/2
(3125*x^5)/384 - (625*x^4)/16 + (6125*x^3)/96 - (325*x^2)/8 + (25*x)/3
- (3125*x^5)/768 + (6875*x^4)/384 - (5125*x^3)/192 + (1525*x^2)/96 - (25*x)/8
(625*x^5)/768 - (625*x^4)/192 + (875*x^3)/192 - (125*x^2)/48 + x/2
(2)
>> X=[0:0.4:2];
>> Y=X.^4;
>> [A,C,L,wcgs,Cw]= newploy(X,Y) A = 0 0 0 0 0 0
0.0256 0.0640 0 0 0 0
0.4096 0.9600 1.1200 0 0 0
2.0736 4.1600 4.0000 2.4000 0 0
6.5536 11.2000 8.8000 4.0000 1.0000 0
16.0000 23.6160 15.5200 5.6000 1.0000 0.0000 C = 0.0000 1.0000 0.0000 -0.0000 0.0000 0 L = (57*x^5)/18014398509481984 + x^4 + (209*x^3)/9007199254740992 - (525*x^2)/36028797018963968 + (213*x)/72057594037927936 wcgs = -(M*(- x^6 + 6*x^5 - (68*x^4)/5 + (72*x^3)/5 - (4384*x^2)/625 + (768*x)/625))/720 Cw = 0.0014 -0.0083 0.0189 -0.0200 0.0097 -0.0017 0

3. 拓展

function [y,R]=lagran2(X,Y,x,M)
%输入X=[];Y=[];行向量,x预测点,可以一个,也可以为矩阵x=[];M为x的个数,
n=length(X); m=length(x);
for i=1:m
z=x(i);s=0.0;
for k=1:n
p=1.0; q1=1.0; c1=1.0;
for j=1:n
if j~=k
p=p*(z-X(j))/(X(k)-X(j));
end
q1=abs(q1*(z-X(j)));c1=c1*j;
end
s=p*Y(k)+s;
end
y(i)=s;
end
R=M*q1/c1;

在MATLAB工作窗口输入程序

>> x=2*pi/9; M=1; X=[pi/6 ,pi/4, pi/3];

Y=[0.5,0.7071,0.8660]; [y,R]=lagran2(X,Y,x,M)

运行后输出插值y及其误差限R

y =

0.6434

R =

8.8610e-04

MATLAB插 值 法的更多相关文章

  1. 二值法方法综述及matlab程序

    在某些图像处理当中一个关键步是二值法,二值化一方面能够去除冗余信息,另一方面也会使有效信息丢失.所以有效的二值化算法是后续的处理的基础.比如对于想要最大限度的保留下面图的中文字,以便后续的定位处理. ...

  2. 栈的一个实例——Dijkstra的双栈算术表达式求值法

    Dijkstra的双栈算术表达式求值法,即是计算算术表达式的值,如表达式(1 + ( (2+3) * (4*5) ) ). 该方法是 使用两个栈分别存储算术表达式的运算符与操作数 忽略左括号 遇到右括 ...

  3. Python实现熵值法确定权重

    本文从以下四个方面,介绍用Python实现熵值法确定权重: 一. 熵值法介绍 二. 熵值法实现 三. Python实现熵值法示例1 四. Python实现熵值法示例2 一. 熵值法介绍 熵值法是计算指 ...

  4. NTC热敏电阻温度计算方法,Steinhart-Hart方程和B值法(转)

    NTC热敏电阻计算器使用方法 NTC热敏电阻计算器 V1.0 10K负温度系数热敏电阻(NTC)温度与阻值对应关系表 Rt = R(25℃)*EXP[B*(1/T - 1/(T+25))] 说明: 1 ...

  5. 熵值法 [异质指标同质化]中-Matlab 数据归一化预处理 mapminmax函数

    一.mapminmax Process matrices by mapping row minimum and maximum values to [-1 1] 意思是将矩阵的每一行处理成[-1,1] ...

  6. Java中调用MatLab返回值

    当在Java中使用MatLab函数时,由于语言语法的不同,Matlab返回多个数据时,想在Java中获取到并进行使用.查阅了网上资料,翻箱倒柜加上自己实战,得出方法如下: 如MatLab函数返回的是N ...

  7. E - Guess the Root 拉格朗日差值法+交互

    题目传送门 题意:告诉你存在一个未知项系数最高为10的$f(x)$,你最多可以有50次询问,每次询问给出一个$x'$,系统会返回你$f(x')$的值,你需要猜一个$x''$,使得$f(x'')=0$, ...

  8. JavaScript的取值小技巧之“中括号[]取值法”

    一.简介 做下记录,今天看了一篇很有意思的文章,学到了这个取值的小技巧 正常的话我们一般都是用对象直接去'.'对应的属性名(也就是键值对的键)来获取对应的值 这里记录的是另一种取值方式,他是采用中括号 ...

  9. 席位分配问题——惯例Q值法和d'hondt法的MATLAB程序

      本篇博文为追忆以前写过的算法系列第四篇 温故知新 本篇于2009年发表于百度博客,当时还没接触CSDN.所以是文学和技术博客混淆,只是这个程序博文訪问量突破2000,有不少网友评论互动.应该 ...

随机推荐

  1. struts2 拦截器弊端

    struts2 怎样在action内获得fielderror

  2. MongoDB 日志切割三种方式

    MongoDB 日志切割 ​ MongoDB 默认是不会进行切割日志的,除非我们配置了 logRotate = rename,并且重启 MongoDB 服务,才会进行切割日志的,那么为了避免实际中我们 ...

  3. Android中AdapterView/Adapter的深度学习

    BaseAdapter的深度学习 博主工作了几年,也用了几年的ListView等AdapterView控件,但关于Adapter的一些问题并没有深入下去,终于有时间学习总结下关于BaseAdapter ...

  4. 深入理解kafka设计原理

    最近开研究kafka,下面分享一下kafka的设计原理.kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力. 1.持久性 k ...

  5. mysql 循环

    DELIMITER $$ DROP PROCEDURE IF EXISTS student_insert_while; $$ ), in birthday date, in age int) begi ...

  6. [TensorFlow] Introducing TensorFlow Feature Columns

    Welcome to Part 2 of a blog series that introduces TensorFlow Datasets and Estimators. We're devotin ...

  7. Linux 使用 ssh 命令远程连接另一台 Linux

    用 Linux 系统的 ssh 命令远程连接另一台 Linux 机器的命令 #ssh 用户名@主机名(IP地址) 例: #ssh root@10.41.24.138                  ...

  8. 浅谈MemCahe

    MemCahe 首先介绍下memcahce的定义:是一个分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速度提升效果十分显著. 接下来介绍 ...

  9. Oracle数据库如何提高访问性能

    A,避免在索引列上使用 IS NULL 和 IS NOT NULL 操作 避免在索引中使用然后可以为空的列,ORACLE将无法使用该索引.对于单列索引  如果包含空值,索引将不存在此记录.对于复合索引 ...

  10. SQL Server 中的一些概念

    学习SQL Server 2012编程入门经典(第4版)的笔记 1.事务日志 任意数据库的更改起初不进入数据库本身,而是不断地被写入到事务日志. 日志是数据进入磁盘上的最先位置. 2.表 数据库中实际 ...