云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Simpson 法求数值微分

Simpson 法求数值微分

  • 62 次阅读
  • 3 次下载
  • 2025/6/23 3:38:38

1、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精 通MALAB科学计算》,王正林等著,电子工业出版社,2009 年)

“Simpson 法求数值微分” 算法说明

辛普森数值微分是用来求等距节点在节点处的导数的,辛普森数值微分公式如下: 4 1 f’(x1) 3(y2-y0)/h-f’(x0) 1 4 1 f’(x2) 3(y3-y1)/h 1 4 . 3(y4-y2)/h f’(x3)

. . . . . . . . . . . . . . . . 1 . .

1 4 3(yn-yn-2)/h-f’(xn)

f’(x=n-1)

其中,yn=f(xn),xn=xn+nh

如果端点导数值-f(x0)和-f’(xn)未知,则将它们的中点微分公式近似,这时的辛普森数值微分公式为:

2 0 f’(x1) y2-y0/h

1 4 1 f’(x2) 3(y3-y1)/h 1 4 . 3(y4-y2)/h f’(x3) . . . . . . . . . . . .

. . . . 1 . . 0 .2 f’(x=n-1) (yn-yn-2)/h

在MATLAB中,编程实现的辛普森数值法(用于已知函数表达式)函数为:CISimpson。 功能:辛普森数值法求已知函数在某点的导数值。 调用格式:df=CISimpson(func,x0,n,h)。 其中,func为函数名; xo为求导点;

n为将已知函数离散的数据点数;

h为离散步长; df为导数值。

辛普森数值微分法(适用于已知函数表达式)的MATLAB程序代码如下: function df=CISimpson(func,x0,n,h)

%辛普森数值法求已知函数func在x0点的导数值 %函数名:func %求导点:x0

%将已知函数离散的数据点数:n %离散步长:h %导数值:df

= = if nargin ==2 %以下是参数的判断过程 h=0.1; n=5; else

if(nargin ==3) if (n<5)

disp('n不能小于5!'); return; else

h=0.1; end

else (nargin ==4 && h ==0.0) disp('h不能为0!'); return; end end

for(i=1:n) %这是个循环计算节点的函数值 if (mod(n,2) ==0)

y(i)=subs(sym(func),findsym(sym(func)),x0+(i-n/2)*h); else

y(i)=subs(sym(func),findsym(sym(func)),x0+(i-(n+1)/2)*h); end end

f(1)=(y(3)-y(1))/(2*h);

f(2)=(y(n)-y(n-2))/(2*h); %这两行用中心微分法给出端点的导数 b(1:n-2,1)=zeros(n-2,1); b(1,1)=3*(y(3)-y(1))/h-f(1); b(n-2,1)=3*(y(n)-y(n-2))/h-f(2); for (i=2:(n-3))

b(i,1)=3*(y(i+2)-y(i))/h;

end %这一块是辛普森公式的右边的列向量 for(i=1:n-2) for(j=1:n-2)

if((i ==j+1) ||(j ==i+1)) A(i,j)=1; else if(i ==j) A(i,j)=4; end end end

end %这一块是系数矩阵 [Q,R]=qr(A);

DF = R\\(Q\\b); %用QR分解法求解 if(mod(n,2) ==0) df = DF(n/2); else

df=DF((n+1)/2);

end %这里是求出x0处的导数值

辛普森数值微分法(适用于数据向量)的另一个MATLAB程序代码如下: function df=DISimpson(X,Y,n,p)

%辛普森数值法求n个数据点在第p个点处的导数值 %离散数据的x坐标向量:X %离散数据的y坐标向量:Y %数据点数:n %要求导数的点:p %导数值:df if n<5

disp('n不能小于5!'); return; end

if p==0

disp('n不能小于0!'); return; end

h=X(2)-X(1);

xx=linspace(X(1),X(n),h); if(xx~=X)

disp('节点之间不是等距的!'); return; end

f(1)=(Y(3)-Y(1))/(2*h); f(2)=(Y(n)-Y(n-2))/(2*h); b(1,1)=3*(Y(3)-Y(1))/h-f(1); b(n-2,1)=3*(Y(n)-Y(n-2))/h-f(2); for(i=2:(n-3))

b(i,1)=3*(Y(i+2)-Y(i))/h; end

for(i=1:n-2) for(j=1:n-2)

if((i==j+1)||(j==i+1)) A(i,j)=1; else if(i==j) A(i,j)=4; end end end end

[Q,R]=qr(A); DF=R\\(Q\\b); if(p==1) df=f(1); else

df=DF(p-1);

end

辛普森数值微分法应用举例

分别采用5,10,100个离散点的辛普森法求函数exp(x)在x=2.5的导数值 运算结果

搜索更多关于: Simpson 法求数值微分 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

1、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精 通MALAB科学计算》,王正林等著,电子工业出版社,2009 年) “Simpson 法求数值微分” 算法说明 辛普森数值微分是用来求等距节点在节点处的导数的,辛普森数值微分公式如下: 4 1 f’(x1) 3(y2-y0)/h-f’(x0) 1 4 1 f’(x2) 3(y3-y1)/h 1 4 . 3(y4-y2)/h f’(x3) . . . . . . . . . . . . . . . . 1 . . 1 4 3(yn-yn-2)/h-f’(xn) f’(x=n-1) 其中,yn=f(xn),xn=xn+nh

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com