Hermite插值的上机实现及应用课程设计(6)

2019-04-23 15:14

1. 流程图

附录A 三次Hermite插值地C程序

开始 输入xi,yi,x y=0, j=0

2.C程序代码 #include #include float f0(float x) {

return((x-1)*(x-1)*(2*x+1))。 }

float f1(float x)

{

return(x*x*(-2*x+3))。 }

float g0(float x) {

return(x*(x-1)*(x-1))。 }

float g1(float x) {

return(x*x*(x-1))。 } void main()

{float x0,x1,x,y0,y1,yy0,yy1,h,p。

printf(\输入x0,x1,x,y0,y1和yy0,yy1地取值\。

scanf(\。 h=x1-x0。

p=y0*f0((x-x0)/h)+y1*f1((x-x0)/h)+h*yy0*g0((x-x0)/h)+h*yy1*g1((x-

x0)/h)。 printf(\。 }

3.运行结果截图

图1 三次Hermite插值地C程序结果截图

1 MATLAB程序代码

function [f,f0] = Hermite1(x,y,y_1) syms t; f = 0.0;

if(length(x) == length(y)) if(length(y) == length(y_1))

附录B 二重Hermite插值地MATLAB程序

n = length(x); else

disp('y和y地导数地维数不相等'); return; end else

disp('x和y地维数不相等! '); Return; end for i=1 n h = 1.0。 a = 0.0。 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=1 0.2 1.8。

y_1=[0.5 0.4564 0.4226 0.3953 0.3727]。 y=[1 1.0954 1.1832 1.2649 1.3416]。 >> [f,f0] = Hermite1(x,y,y_1); 可得如下运行结果: 运行结果如下: f =

(390625*((337232823972231*t)/35184372088832-114418258618928321/10995116277760000)*(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*((2855713758717179*t)/281474976710656 - 384779664999124623/21990232555520000))/36 +

(390625*((64*t)/3

-

61/3)*(t

-6/5)^2*(t-7/5)^2*(t-8/5)^2*(t-+

-6/5)^2*(t-8/5)^2*(t-9/5)^2)/16--

9/5)^2)/576+(390625*((7612884810106783*t)/18014398509481984 6660373488918492043/11258999068426240000)*(t (390625*((7762319875242775*t)/281474976710656

8968626627620006931/175921860444160000)*(t - 1)^2*(t - 6/5)^2*(t - 7/5)^2*(t - 8/5)^2)/576 -

1)^2*(t

2.程序演示图

图2 二次Hermite插值地MATLAB图形演示


Hermite插值的上机实现及应用课程设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:初中语文课堂教学小组合作学习探究开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: