声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1068|回复: 4

[编程技巧] 看看我的这个程序的问题.(有关插值的)

[复制链接]
发表于 2006-12-21 22:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
以下是我写的样条插值程序(第一边界条件),但是运行程序计算在给定插值点处的数值却不是原始给定的数值,请大家看一下,其实很简单,谢谢大家!!



function sp1=spline1(x,y,xi)     % X,Y是插值需要的x(i) 与f(i)的向量%
np1=length(y);
for i=1:(np1-1)
   if(xi<=x(i+1)&xi>=x(i))   %如果给定的xi在[x(i) x(i+1)]分段,用带定系数法确定3次多项试%
      A=[1,x(i),x(i)^2,x(i)^3;1,x(i+1),x(i+1)^2,x(i+1)^3;0,1,2*x(i),3*x(i)^2;0,1,2*x(i+1),3*x(i+1)^2];  %系数矩阵%
      B=[orifun(x(i));orifun(x(i+1));orifunder(x(i));orifunder(x(i+1))];%对应AX=B中的B,即[f(x(i));f(x(i+1));           在x(i)导数值;在x(i+1)导数值]%
      C=inv(A);
      a=C*B;
      a=a';
      sp1=polyval(a,xi);    %构造3次多项式%
    end
end

function y=orifunder(x0)
syms x;
t=diff(orifun(x));
x=x0;
y=eval(t);

function y=orifun(x)
y=1/(1+25*x*x);   %实验时候给点的原涵数,要进行各种插直计算比较进度,避免RUNGE现象%Sample TextSample TextSample Text
回复
分享到:

使用道具 举报

发表于 2006-12-22 15:04 | 显示全部楼层
A=[1,x(i),x(i)^2,x(i)^3;1,x(i+1),x(i+1)^2,x(i+1)^3;0,1,2*x(i),3*x(i)^2;0,1,2*x(i+1),3*x(i+1)^2]; 
觉得 这个地方有问题,起码应该出现变量
 楼主| 发表于 2006-12-22 15:23 | 显示全部楼层
原帖由 guangguang 于 2006-12-22 15:04 发表
A=; 
觉得 这个地方有问题,起码应该出现变量



这里的X(I)就是根据不同的小区间而变化的.
发表于 2006-12-23 11:23 | 显示全部楼层
计算在给定插值点处的数值却不是原始给定的数值?

不太明白楼主的意思啊
 楼主| 发表于 2006-12-23 12:16 | 显示全部楼层
原帖由 lxq 于 2006-12-23 11:23 发表
计算在给定插值点处的数值却不是原始给定的数值?

不太明白楼主的意思啊



就是原来给定的插值点X(I),我调用程序计算在X(I)点的值,却不等于f(i),也就是y(i),这是已知的值啊,不等的话说明我的程序肯定是有问题的.谢谢!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 16:41 , Processed in 0.056234 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表