| 查看: 1067 | 回复: 1 | |||
thematicsroy新虫 (小有名气)
|
[交流]
Matlab自适应数值积分,用了递归,最后怎样清理全局变量?
|
|
求解问题是:对f在区间[a,b]上实现自适应剖分,并在每个小区间上用三点高斯数值积分公式。自适应剖分的条件可以参看下面的if条件.要求函数输出最终数值积分值,以及所有剖分得到的小区间及每个小区间上的三点高斯积分值 以下是m文件源码: function [int, abt] = gadap(a, b, f, p, tol) % format long global p global abt xc=(a+b)/2;int=gauss3(f,a,b); t1=gauss3(f,a,xc);t2=gauss3(f,xc,b); %%[a,xc]、[xc,b]上f的三点高斯积分值 if (abs(int-t1-t2))>tol*max(abs(int),abs(t1)+abs(t2)) %%判定条件,若满足则将[a,b]等分为两部分 int=gadap(a,xc,f,p,tol)+gadap(xc,b,f,p,tol); else p=p+1; abt(p, =[a,b,int];if b==1 clear global p %%清除全局变量p end end function I = gauss3(f,a,b) %%三点高斯数值积分 ta = (b-a)/2; tb = (a+b)/2; I = ta*(0.55555556*subs(sym(f),findsym(sym(f)),ta*0.7745967+tb)+... 0.55555556*subs(sym(f),findsym(sym(f)),-ta*0.7745967+tb)+... 0.88888889*subs(sym(f),findsym(sym(f)),tb)); 现在问题是这代码只能清除全局变量p,若是还清除abt,则函数根本返回不了abt,只能每次在command window里用clear global来清除,各位有没有更好的办法,如果不用到全局变量可以吗 |
» 猜你喜欢
2026年申博-电池方向
已经有4人回复
26年博士申请自荐-电催化
已经有9人回复
申博自荐
已经有9人回复
研究生做的很差,你们会让毕业吗?
已经有11人回复
求碳排放博导;方向是LCA、生命周期可持续发展以及碳排放
已经有7人回复
2026博士申请求助
已经有4人回复
2026博士或科研助理转27年博士
已经有7人回复
急招2026年9月份入学博士
已经有3人回复
国自科送审了吗
已经有11人回复
博士招生
已经有5人回复
thematicsroy
新虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 43.5
- 散金: 105
- 红花: 2
- 帖子: 91
- 在线: 53.4小时
- 虫号: 1445973
- 注册: 2011-10-16
- 专业: 应用数学方法
2楼2016-03-07 23:58:45












=[a,b,int];
回复此楼