|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
- function [result error ind]= cubint(X,F,N,ia,ib)
- % 参考资料:Philio J. Davis 数值积分法 高等教育出版社 1986 p296-298
- % X,F:积分点,函数值
- % N: 积分点数,N>=4
- % ia ib: ia,ib须为(1,N)整数 X(ia),X(ib)
- % result: 积分值
- % error: 误差估计
- % ind: 条件满足为1,否则为0
- % 对离散点三次插值,给出了基于四阶差商逼近四阶导数的误差估计
- %
- % 例:
- % x=[0,0.1,0.15,0.2,0.23,0.3,0.4,0.45,0.48,0.53,0.62,0.78,0.82,0.89,0.92,1];
- % y=x.^0.25;
- % [result error ind]= cubint(x,y,16,1,16);
- % 运行结果:
- % result = 0.7905 精确解:0.8
- % error = -8.7208e-005
- % ind = 1
- ind=0;
- if N<4 || ia<1 || ib>N
- disp('wrong in N ia ib');
- else
- ind=1;
- result=0;
- error=0;
- if ia==ib
- disp('ia=ib,please check ia or ib');
- else
- if ia>ib
- ind=-1;
- it=ib;
- ib=ia;
- ia=it;
- end
- s=0;
- c=0;
- r4=0;
- J=N-2;
- if ia<(N-1) || N==4
- J=max(3,ia);
- end
- K=4;
- if ib>2 || N==4
- K=min(N,ib+2)-1;
- end
- for i=J:K
- if i<=J
- H2=X(J-1)-X(J-2);
- d3=(F(J-1)-F(J-2))/H2;
- H3=X(J)-X(J-1);
- d1=(F(J)-F(J-1))/H3;
- H1=H2+H3;
- d2=(d1-d3)/H1;
- H4=X(J+1)-X(J);
- r1=(F(J+1)-F(J))/H4;
- r2=(r1-d1)/(H4+H3);
- H1=H1+H4;
- r3=(r2-d2)/H1;
- if ia<=1
- result=H2*(F(1)+H2*(0.5*d3-H2*(d2/6-(H2+H3+H3)*r3/12)));
- s=-H2^3*(H2*(3*H2+5*H4)+10*H3*H1)/60;
- end
- else
- H4=X(i+1)-X(i);
- r1=(F(i+1)-F(i))/H4;
- r4=H4+H3;
- r2=(r1-d1)/r4;
- r4=r4+H2;
- r3=(r2-d2)/r4;
- r4=(r3-d3)/(r4+H1);
- end
- if i>ib || i<=ia
- error=error+r4*s;
- else
- result=result+H3*((F(i)+F(i-1))*0.5-H3*H3*(d2+r2+(H2-H4)*r3)/12);
- c=H3^3*(2*H3^2+5*(H3*(H4+H2)+2*H2*H4))/120;
- error=error+(c+s)*r4;
- if i==j
- s=s+c+c;
- else
- s=c;
- end
- end
- if i>=K
- if ib>=N
- result=result+H4*(F(N)-H4*(0.5*r1+H4*(r2/6+(H3+H3+H4)*r3/12)));
- error=error-H4^3*r4*(H4*(3*H4+5*H2)+10*H3*(H2+H3+H4))/60;
- else
- if ib>=N-1
- error=error+s*r4;
- end
- end
- else
- H1=H2;
- H2=H3;
- H3=H4;
- d1=r1;
- d2=r2;
- d3=r3;
- end
- end
- if ind~=1
- it=ib;
- ib=ia;
- ia=it;
- result=-result;
- error=-error;
- ind=1;
- end
- end
- end
- end
复制代码 最近在做边界元,要积分
也看到有人问过离散点的积分
刚好,刚调完,结果正确
是根据fortran改过来的
抛砖引玉了
[ 本帖最后由 sigma665 于 2008-1-16 20:19 编辑 ] |
评分
-
1
查看全部评分
-
|