ARBITRARY-ORDER HERMITE GENERATING FUNCTIONS FOR COHERENT AND SQUEEZED STATES

ARBITRARY-ORDER HERMITE GENERATING FUNCTIONS FOR COHERENT AND SQUEEZED STATES
ARBITRARY-ORDER HERMITE GENERATING FUNCTIONS FOR COHERENT AND SQUEEZED STATES

Hermite插值方法

数值分析实验报告五 一、实验目的 理解Hermite插值方法,掌握Hermite插值算法设计 二、实验内容 使用vc++编程,实现该方法,即Hermite插值法 三、实验步骤 #include double herm(double x0,double x1,double y0,double y1,double h0,double g0,double g1,double x) { d oubl e alp0,alp1,bta0,bta1,t;double s; t=h0*h0; a lp0=(x-x1)*(x-x1)*(h0+2*(x-x0))/t/h0; a lp1=(x-x0)*(x-x0)*(h0-2*(x-x1))/t/h0; b ta0=(x-x0)*(x-x1)*(x-x1)/t; b ta1=(x-x1)*(x-x0)*(x-x0)/t; s=y0*alp0+y1*alp1+g0*bta0+g1*bta1; r eturn(s); } void main() { int n=7;double p0;double pn; double aa[8],bb[8],s=0; double xx[8]={0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9}; double yy[8]={0.4794,0.6442,0.7833,0.8912,0.9636,0.9975,0.9917,0.9463}; double g[8]; int i; double a[8],c[8],h[8]; cout<<"Please input p0 and pn"<>p0;cin>>pn; for(i=0;i<=n-1;i++) { h[i]=xx[i+1]-xx[i]; c out<<"h["<

实习:Matlab作业hermite插值

题目:利用Matlab实现数据的Hermite插值和分段三次Hermite插值 小组成员:王晓波(38) 蔡明宇(20) 一、程序实现意义: 一般的,从各种试验得来的数据总有一定的数量,而利用插值技术能够从有限的数据中获取整体的状态。而Hermite插值不仅保证了插值函数与原函数在给定数据点处得拟合,同时保证了在相应点处导数的相同,从而在很大程度上保证了曲线的“光滑性”。因此,通过Matlab实现Hermite插值具有很普遍的意义。 二、实现过程: 1、Hermite插值 由于并不是所有的Matlab版本都提供现有的Hermite插值函数包,故我们首先编写了实现给定五个观测点的Hermite插值的M程序,代码如下: function [f,f0] = Hermite1(x,y,y_1) syms t; f = ; ! if(length(x) == length(y)) if(length(y) == length(y_1)) n = length(x); else disp('y和y的导数的维数不相等'); return; end else disp('x和y的维数不相等! '); return; end * for i=1:n h = ; a = ; for j=1:n if( j ~= i) h = h*(t-x(j))^2/((x(i)-x(j))^2); a = a + 1/(x(i)-x(j)); end end

f = f + h*((x(i)-t)*(2*a*y(i)-y_1(i))+y(i)); < end f0 = subs(f,'t'); 其中x为给定点横坐标数组,y为给定点纵坐标数组,y_1为原函数在给定点处的导数数组。测试证明该程序可以实现,例如输入如下数组: x=1::; y_1=[ ]; y=[1 ]; >> [f,f0] = Hermite1(x,y,y_1); 运行结果如下: f = $ (390625*((3972231*t)/35 - 28321/0000)*(t - 1)^2*(t - 7/5)^2*(t - 8/5)^2*(t - 9/5)^2)/36 - (390625*(t - 1)^2*(t - 6/5)^2*(t - 7/5)^2*(t - 9/5)^2*((28557*t)/28 - 23/2000))/36 + (390625*((64*t)/3 - 61/3)*(t - 6/5)^2*(t - 7/5)^2*(t - 8/5)^2*(t - 9/5)^2)/576 + (390625*((763*t)/1984 + 043/6240000)*(t - 1)^2*(t - 6/5)^2*(t - 8/5)^2*(t - 9/5)^2)/16 - (390625*((77623*t)/28 - 931/60000)*(t - 1)^2*(t - 6/5)^2*(t - 7/5)^2*(t - 8/5)^2)/576 f0 = . 利用matlab绘制图像:

数值分析实验,用程序实现Hermite插值法

《数值分析》实验报告 实验序号:实验六 实验名称: Hermite 插值法 1. 实验目的: 学会Hermite 插值法,并应用该算法于实际问题. 2. 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段三次Hermit 插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数 值n y y y ,...,,10以及一阶导数值''1'0,...,,n y y y ,求一个插值函数)(x H ,满足以下条件: (1) ),...,2,1,0()(,)(''n i y x H y x H i i i i === (2) )(x H 在每一个小区间[1,+j j x x ]上是三次多项式。 对于给定函数11-,2511)(2 ≤≤+=x x x f 。在区间[]11-,上画出f (x )和分段三次Hermit 插值函数)(x H 的函数图像。 3. 实验分析: 算法分析: 1. 分段三次Hermit 插值的算法思想: 分段三次Hermit 插值的做法是在每一个小区间上作三次Hermit 插值,因此在每一个插值节点上都需要构造两个插值基函数)(),(x H x h i i ,然后再作它们的线性组合。分段三次Hermit 插值基函数如下: ?????≤≤----+=其它 0 ))(21()(1021010100x x x x x x x x x x x x h ?? ???≤≤---=其它 0 ))(()(10210100x x x x x x x x x x H

Hermite插值函数

数值分析实验报告 任课教师:马季骕班级:11级计算机科学与技术 1实验目的及要求 2程序的源代码 3实验操作 4实验结果及分析 1实验目的及要求 学会Hermite插值法,并应用该算法于实际问题. (1)给定函数y=f(x)在n各不同的插值节点xi(i=1,…,n)的函数值yi=f(xi) (i=1,…,n),用厄米特(Hermite)插值多项式求函数在x初的函数值y。 (2)Hermite插值多项式: (4)如果有错,修改直至运行成功,查看运行结果; (5)根据所求函数,画出图形。 (6)查看原函数的图形与逼近函数图形的近似程度。 2 程序的源代码 // LDlg.cpp : implementation file // #include "stdafx.h" #include "L.h" #include "LDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg)

hermite插值多项式的例题

例 若()f x 在[a,b]上有三阶连续导数,且已知()f x 在[,]a b 上两个互异的 点01,x x 上的函数值01(),()f x f x 和一阶导数值' 0()f x ,试求满足条件 ''001100()(),()(),()()H x f x H x f x H x f x === 的插值多项式,并估计误差。 解 由给定的3 个插值条件,显然可确定一个次数不超过2次的埃尔米特插值多项式()H x , 又有()H x 应满足插值条件()()i i H x f x =,(0,1)i =,而节点01,x x 上的线性插值函数1()N x 也满足插值条件1()(),(0,1)i i N x f x i ==,故可设101()()()()H x N x A x x x x -=--,其中A 为待定常数,上式又可记为 101000101()()()() ()()[,]()()H x N x A x x x x f x x x f x x A x x x x =+--=+-+-- 为了确定常数A ,对上式求导,得 '0110()[,][()()]H x f x x A x x x x =+-+-, 令0x x =代入,且注意插值条件'' 001010()[,]()()H x f x x A x x f x =+-=, 于是有'01010 [,]()f x x f x A x x -=-,即得所求的插值多项式()H x 为 '010******** [,]()()()()[,]()()f x x f x H x f x x x f x x x x x x x x -=+-+--- , 当然也可先采用拉格朗日多项式构造,同样得到满足相同条件的插值多项式()H x 余项为(3)201()()()()6 f R x x x x x ξ=--。 【本文档内容可以自由复制内容或自由编辑修改内容期待

分段三次Hermite插值

分段三次Hermite 插值 1. 目的意义: 可以得到在插值区间上光滑的分段插值多项式 2. 数学模型(数学公式): ???????∈??????∈∈=-] ,[),(],[),(],[),()(1212101n n n x x x x H x x x x H x x x x H x H '221'122 13211321)()())(())]((2[))]((2[i i i i i i i i i i i i i i i i i i i y h x x x x y h x x x x y h x x x x h y h x x x x h H --+--+--++--+=------ 3. 算法程序: #include #include #define m 4 #define n 5 void main() { int i,k; float x[n+1],y[n+1],yy[n+1],h,z[m];

printf("请按行输入一系列的x值:\n"); for(k=0;k=x[k]&&z[i]<=x[k+1]) { h=pow((z[i]-x[k+1])/(x[k]-x[k+1]),2.0)*(1+2*(z[i]-x[k])/(x[k+1 ]-x[k]))*y[k]+pow((z[i]-x[k])/(x[k+1]-x[k]),2.0)*(1+2*(z[i]-x[k +1])/(x[k]-x[k+1]))*y[k+1]+pow((z[i]-x[k+1])/(x[k]-x[k+1]),2.0 )*(z[i]-x[k])*yy[k]+pow((z[i]-x[k])/(x[k+1]-x[k]),2.0)*(z[i]-x[k

hermite插值多项式的例题

例若()f x 在[a,b]上有三阶连续导数,且已知()f x 在[,]a b 上两个互异的 点01,x x 上的函数值01(),()f x f x 和一阶导数值' 0()f x ,试求满足条件 ' ' 001100()(),()(),()()H x f x H x f x H x f x === 的插值多项式,并估计误差。 解由给定的3 个插值条件,显然可确定一个次数不超过2次的埃尔米特插值多项式()H x , 又有()H x 应满足插值条件()()i i H x f x =,(0,1)i =,而节点01,x x 上的线性插值函数 1()N x 也满足插值 条件 1()(),(0,1) i i N x f x i ==,故可设1 ( ) ()()()H x N x A x x x x -=--,其中A 为待定常数,上式又可记为 101000101()()()() ()()[,]()()H x N x A x x x x f x x x f x x A x x x x =+--=+-+-- 为了确定常数A ,对上式求导,得 ' 0110()[,][()()]H x f x x A x x x x =+-+-, 令0x x =代入,且注意插值条件'' 001010()[,]()()H x f x x A x x f x =+-=, 于是有 ' 01010 [,]() f x x f x A x x -= -,即()H x 为 ' 010******** [,]() ()()()[,]()()f x x f x H x f x x x f x x x x x x x x -=+-+ --- , 当然也可先采用拉格朗日多项式构造,同样得到满足相同条件的插值多项式()H x 余项为(3) 2 01() ()()()6 f R x x x x x ξ=--。

相关主题
相关文档
最新文档