![]() |
|
几个数值分析的算法例子
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
广告招租,e-mail:yesize@hotmail.com <%@ Language=VBScript %> <% 几个参考点的数据已经给出,输入参数只有 X function view(result,inputx)输出结果,同时如果<1 and >0,就在前面补0 if result<1 and result>0 then result=0&result Response.Write 计算结果:&<br> Response.Write F(&inputx&)=& result end function ********分段线性Lagrange插值********** function Lagrange1(inputx) dim k,i dim x,y x=array(0.1,0.2,0.3,0.4) y=array(0.0998,0.1987,0.2955,0.3894) if inputx<x(0) then k=0 if inputx>x(3) then k=2 for i=0 to 2 if inputx>=x(i) and inputx<=x(i+1)then k=i result=((inputx-x(k+1))/(x(k)-x(k+1)))*y(k) + ((inputx-x(k))/(x(k+1)-x(k)))*y(k+1) next result= view(result,inputx) end function? ********分段三点二次Lagrange插值********** function Lagrange2(inputx) dim i,j,k,t dim x,y result=0 x=array(0.1,0.2,0.3,0.4) y=array(0.0998,0.1987,0.2955,0.3894) if inputx<=x(1) then k=0 if inputx>=x(2) then k=1 if inputx>x(1) and inputx<x(2) and abs(inputx-x(1))<=abs(inputx-x(2)) then k=0 else k=1 for j=k to k+2 t=1 for i= k to k+2 if i<>j then t= t * (inputx-x(i))/(x(j)-x(i)) end if next result = result + t*y(j) next result= view(result,inputx) end function **********一元n点拉格朗日插值*********** function Lagrange3(inputx) dim i,j dim x,y result=0 x=array(0,0.1,0.195,0.4,0.401,0.5) y=array(0.39894,0.39695,0.39142,0.38138,0.36812,0.35206) for j=0 to 5 t=1 for i=0 to 5 if i<>j then t= t * (inputx-x(i))/(x(j)-x(i)) end if next result = result + t * y(j) next result= view(result,inputx) end function ***********牛顿(Newton)插值*********** function Newton(inputx) dim x,y dim i,j result=0.39894 t=1 x=array(0,0.1,0.195,0.3,0.401,0.5) y=array(0.39894,0.39695,0.39142,0.38138,0.36812,0.35206) for j=1 to 5 t=t*(inputx - x(j-1)) for i=0 to 5-j y(i)=(y(i+1) - y(i)) / (x(i+j) - x(i)) next result = result + t * y(0) next result= view(result,inputx) end function ***********埃特金(Aitken)插值*********** function Aitken(inputx) dim i,j dim x,y x=array(0.5,0.65,0.8,1.0) y=array(0.4794,0.6052,0.7174,0.8415) for j=1 to 3 for i=j to 3 y(i)=y(j-1) + (y(i)-y(j-1)) / (x(i)-x(j-1))* (inputx-x(j-1)) next next result= view(y(3),inputx) end function ***********分段两点三次埃(厄)尔米特(Hermit)插值*********** function Hermit(inputx) dim i,k dim x,y,yy x=array(0.1,0.3,0.5) y=array(0.099833,0.295520,0.479426) yy=array(0.995004,0.995336,0.877583) if inputx<=x(0) then k=0 if inputx>=x(2) then k=1 for i=0 to 1 if x(i)<=inputx and inputx<=x(i+1) then k=i next hx1=(1+2*(inputx-x(k)) / (x(k+1)-x(k))) * mul((x(k+1)-inputx) / (x(k+1)-x(k))) hx2=(1+2*(x(k+1)-inputx) / (x(k+1)-x(k))) * mul((inputx-x(k)) / (x(k+1)-x(k))) hx3=(inputx - x(k))* mul((x(k+1)-inputx)/(x(k+1)-x(k))) hx4=(inputx - x(k+1))* mul((inputx-x(k))/(x(k+1)-x(k))) result=y(k)*hx1 + y(k+1)*hx2 + yy(k)*hx3 + yy(k+1)*hx4 result= view(result,inputx) endfunction function mul(str) mul=str*str end function %>
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||