Friday, June 21, 2013

MATLAB 中用 spline 代替 solve/finvers 数字求解反函数

example:

  1. Cg=sym('exp(-((-log(u))^alpha + (-log(v))^alpha)^(1/alpha))');  
  2.   
  3. cu=diff(Cg,'u');  
  4. c=subs(cu,{'u','alpha'},[0.8,2]);  
  5.   
  6. vr=linspace(0,1,1000);  
  7. tr=subs(c,'v',vr);  
  8.   
  9. t=rand(100,1);  
  10. v=spline(tr,vr,t);  

如果直接用solve/finvers求解c。matlab提示无解。
##
cu是Cg对u的偏导,c为偏导函数中带入u=0.8 alpha=2得到的只含变量v的函数。
vr和tr是为了生成一定数量的pairs,以便spline函数求反函数的时候插值。

  1. plot(vr,tr,'--')  

可以看到c函数的图。
t为随机生成的100个点,v是这100个点对应的反函数值!
如果是:

  1. v=spline(vr,tr,t);  

那么就是简单的插值。
help spline
可以看到spline的相关功能和用法。

No comments:

Post a Comment