数学建模社区-数学中国

标题: 程序有点问题???????帮帮忙 [打印本页]

作者: 潇湘夜雨123456    时间: 2012-12-15 11:22
标题: 程序有点问题???????帮帮忙
function [f,f0] = ThrSample1(x,y,y_1,y_n,x0)
+ a  @  X6 c' G6 t3 J% i%求已知数据点的第一类三次样条差值多项式及其插值点处的值
" Y- b# y9 i, `' L* k%已知数据点的x坐标向量:x/ p- j. _; o+ `) L4 q
%已知数据点的y坐标向量:y
+ h( F) w9 l7 b( _; O0 s1 a: I%左端点的一阶导数:y_12 j( k. L+ N( v7 M/ z
%右端点的一阶导数:y_n( s7 x( W+ o: Q7 A3 H
%插值点的x坐标:x0
; d( Z" r( ]3 J- e( @9 R. C% [%求得的三次样条差值多项式:f
0 j; v; m' y. S3 T: `; d%求得的x0处的插值:f02 v0 d! t* |! S2 V, Q" K3 J8 |
syms t
7 G, D* ^, O! p0 Y5 u$ l" D' ]' _f = 0.0000;
. y1 V6 S" \9 b9 @% {f0 = 0.0000;
) T& K7 G& j5 m3 l0 {; Pif(length(x)==length(y))9 N% _! o4 ~' a& d& K4 ]
    n = length(x);
" y. j' _1 p" ~. k! \else 4 v3 K; P% k# B+ h/ |  {
    disp('x和y的维数不相等!');
) x. Q8 ^& h! _& N( }6 i    return;6 v6 Z6 m( g5 |# R
end              %维数检查  i7 @, W* n) I
for i=1:n+ o3 k' B7 k1 S+ W: N( e5 U; G
    if(x(i)<=x0)&&(x(i+1)>=x0)
/ n. S# C3 j6 i7 N) i! {        ihdex = i;' ^  V  D! P2 _) Z9 R
        break;
2 T. z2 L& s3 h9 R3 M) X( H8 X, M    end
, L# [% e, u; Mend              %找到x0所在区间' r2 j) n  r) s' C' ~( E! I% r
A = diag(2*ones(1,n));   %求解m的系数矩阵5 J$ l3 M; C- T$ y
u = zeros(n-2,1);$ E0 t1 Y& r! J6 f; n
lamda = zeros(n-1,1);$ E7 f8 S' H) ]( K, V) b/ U3 C
c = zeros(n,1);
! B- I# n- G) a& Yfor i = 2:n-1
* R9 U9 ^  e3 S    u(i-1) = (x(i)-x(x-1))/(x(i+1)-x(i-1));. h1 _2 o4 x0 F+ S4 ?
    lamda(i) = (x(i+1)-x(i))/(x(i+1)-x(i-1));
, @& t+ @5 f& D  l# H0 ]* Y    c(i) = 3*lamda(i)*(y(i)-y(i-1))/(x(i)-x(i-1))+3*u(i-1)*(y(i+1)-y(i))/(x(i+1)-x(i));
  V0 D- [2 {/ U/ u; k A(i,i+1) = u(i-1);
) d% Y$ I/ n- t A(i,i-1) = lamda(i);   %构造系数矩阵及向量c
9 |9 y3 ?4 ]- A6 K5 J- ^; Oend+ A, o% `$ q/ b& j
c(1) = 2*y_1;
$ ?0 U) F9 q6 J: C1 kc(n) = 2*y_n;
& s' l, m' {- gm = followup(A,c);   %用追赶法求解方程组. C0 W- Q1 J+ H5 `/ s; E) W6 i
h = x(index+1) - x(index);  %x0所在区间长度
/ H) u; [: t$ V, }9 bf = y(index)*(2*(t-x(index))+h)*(t-x(index+1))^2/h/h/h+...
6 k5 T9 O* w$ A# ^/ t. o+ c1 b    y(index+1)*(2*(x(index+1)-t)+h)*(t-x(index))^2/h/h/h+...
( g+ d( O7 x0 F' A7 G" \  e    m(index)*(t-x(index))*(x(index+1)-t)^2/h/h-..., \5 r' l% p3 u/ ?% h4 A* S
    m(index+1)*(x(index+1)-t)*(t-x(index))^2/h/h; %x0所在区间的插值函数
0 T3 E! u. j- c! ~. o$ v6 Af0 = abs(f,'t',x0)  %x0处的插值 2 F6 X) i# h* g- }
    5 {- E7 J0 {. U( Y- S
    / J3 o9 a% Z3 ^" m
- o# p1 d0 U5 E/ c  @





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5