wusemm 发表于 2010-6-23 11:26

可否帮我把这句命令翻译下,看了帮助还是不太理解

subs(sym(f),findsym(sym(f)),a)

ChaChing 发表于 2010-6-23 13:21

f=??

wusemm 发表于 2010-6-23 13:36

问题如下

function =CombineTraprl(f,a,b,eps)
%被积函数 f, eps 精度
%积分区间左端点:a, 积分区间右端点:b
%积分结果 :q, step积分的子区间数
if(nargin==3), eps=1.0e-4; end
n=1; h=(b-a)/2; q1=0;
q2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(q2-q1)>eps
      n=n+1; h=(b-a)/n; q1=q2; q2=0;
      for i=0:n-1                        %第n次的复合梯形公式积分
         x=a+h*i;                        %i=0 和n-1时,分别代表积分区间的左右端点
         x1=x+h;
         q2=q2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1));
      end
end
q=q2; step=n;

%%%%以上为数值积分公式
如果我要求函数sin(x)*exp(-x)的积分,应该调用CombineTraprl('sin(x)*exp(-x)',0,10)就可以

但是我请问如果,我调用M-file方式,另做一个文件
function y=integ(x)
y=sin(x)*exp(-x);

然后调用CombineTraprl('integ',0,10)为什么就不行呢?
注:本人需要求得被积函数很复杂

findsym(sym(f)), 寻找f函数中的 符号变量,f为自定义函数,能不能写在M-file文件中,调用呢?

[ 本帖最后由 ChaChing 于 2010-6-23 23:03 编辑 ]

ChaChing 发表于 2010-6-24 00:01

LZ函数的写法好像只允许文字变数输入!
CombineTraprl('integ',0,10)时, 是f=integ, 其中integ相当于平常的x

wusemm 发表于 2010-6-24 17:54

请问如何可以修改下那个函数

本人的被积函数很复杂,所以需要用function 来定义,不能直接输入

ChaChing 发表于 2010-6-24 19:05

那可能需要稍微修改下该函数!
目前没太多充裕时间试, LZ先试下, 或待高人路过!
页: [1]
查看完整版本: 可否帮我把这句命令翻译下,看了帮助还是不太理解