【问题标题】:Scilab, spline interpolation, fsolveScilab,样条插值,fsolve
【发布时间】:2014-09-27 15:45:30
【问题描述】:

我可以在 Scilab 中执行类似 this 的操作吗?通过 fsolve(...)?

我认为有必要添加一些东西来改进问题。

我有一个函数定义如下:

function f=equ(x)
    f=y-((-0.0235037+39.432867*x)/(1+83.598972*x-43.946883*x.^2));
endfunction

然后是这个:

i=1;
xp(1)=xD;
yp(1)=xD;
y=xD;
while (xp(i)>xi),
    xp(i+1)=fsolve(0.01,equ);
    yp(i+1)=R/(R+1)*xp(i+1)+xD/(R+1);
    y=yp(i+1);
    plot([xp(i),xp(i+1)],[yp(i),yp(i)],"r");
    if (xp(i+1)>xi) plot([xp(i+1),xp(i+1)],[yp(i),yp(i+1)],"r");
    end
        i=i+1;
end

我想用样条拟合来改变函数:

xx=linspace(0,1,100)';
yy2=interp1(x,y,xx,"spline");

其中 x, y 是实验数据(x=[...], y=[...]),或者:

xx=linspace(0,1,100)';
df=splin(x,y,"monotone");
[yyf,yy1f,yy2f]=interp(xx,x,y,df);

我可以将 fsolve 应用于样条拟合吗?还是有必要做其他事情?谢谢。

【问题讨论】:

  • 我不确定您在寻找什么,也许the following site 可以帮助您。
  • 数据不是由多项式模型拟合的。正如我在代码中发布的那样,理性模型给出了一种可能性。但样条曲线是最好的。我的问题是关于在 Scilab 中使用这样的东西:fzero(@(xi)interp1(x,y,xi,'spline'),5)

标签: spline scilab


【解决方案1】:

类似this?使用样条?

x  = [2,3,4,5,6]; 
y  = [10,8,4,1,-2]; 
xi = linspace(2,6,100);

yk = interp(xi, x, y, splin(x,y,"not_a_knot"));
yf = interp(xi, x, y, splin(x,y,"fast"));
ym = interp(xi, x, y, splin(x,y,"monotone"));

plot(x,y,'o',xi,yk,'-') 
plot(x,y,'X',xi,yf,'-r') 
plot(x,y,'+',xi,yf,'-b') 

xlabel('x')
ylabel('y') 
legend(['','Not a knot','','Fast','','Monotone'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多