2014-09-27 4 views
0

Scilab에서 this과 같은 작업을 수행 할 수 있습니까? fsolve (...)으로?Scilab, 스플라인 보간법, 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를 적용 할 수 있습니까? 아니면 다른 일을 할 필요가 있습니까? 감사.

+1

난 당신이, 어쩌면 [다음 사이트] 찾고있는 것을 정확히 모르겠어요 (http://libflow.com/d/firowmv1/Polynomial_Interpolation_in_Scilab) 당신을 도울 수 있습니다. – spoorcc

+0

데이터는 다항식 모델에 적합하지 않습니다. 코드에 게시 된 것처럼 합리적인 모델에 의해 가능성이 제공됩니다. 하지만 스플라인이 최고입니다. 내 질문은 Scilab에서 다음과 같은 것을 사용하는 것입니다 :'fzero (@ (xi) interp1 (x, y, xi, 'spline'), 5)' –

답변

0

같은 것을 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'])