几个 数值分析 的算法例子


<%@ 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值