B样条基函数求导

clc;clear;close

p=3;
NodeVector=[0,0,0,0,1,2,4,7,7,7,7];
u=4.5;
i=7;
der=1;//求导次数

[B,D]= MyBaseFun(i, p , u, NodeVector);

MyDersBasisFuns( i,u,p,B,D,der,NodeVector )

 

 

function [ Ders ] = MyDersBasisFuns( i,u,p,B,D,der,U )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here
for dp=1:p+1
    Ders(1,i-p-1+dp)=B(i-p-1+dp);
end

for r=1:p+1%%这个表示求个B的个数
  a(1,1)=1;
  jp=i-p+r-1;
  for k=2:der+1%%k表示从2开始求一阶导
    a(k,1)=a(k-1,1)/(U(jp+p-k+2)-U(jp));
    for d=2:k-1%%里面求aki用的
        if (U(jp+p+d-1-k+2)-U(jp+d-1))==0
            a(k,d)=0;
        else
            a(k,d)=(a(k-1,d)-a(k-1,d-1))/(U(jp+p+d-1-k+2)-U(jp+d-1));
        end
        
    end
    
    if (U(jp+p+1)-U(jp+k-1))==0
        a(k,k)=0;
    else
        a(k,k)=(-a(k-1,k-1))/(U(jp+p+1)-U(jp+k-1));
    end
    
      p1=prod(1:p);
      p2=prod(1:p-k+1);
      p3=p1/p2;
      p4=0;
    for f=1:k
        if jp+f-1>size(D,1)
            D(jp+f-1,p-k+2)=0;
        end
       p4=p4+a(k,f)*D(jp+f-1,p-k+2) 
    end
    Ders(k,jp)=p3*p4;
  end
  
end

end

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值