从文献和书上找到合适的程序,但是抄到MATLAB里面却有问题。都是相同的问题,h=(b-a)/n, b没有含义。附上题目,两个原程序和我抄的程序,均是梯形法,应该没抄错吧?
程序1:
function [q,step] = CombineTraprl(f,a,b,eps)
%被积函数: f;
%积分区间左端点:a;
%积分区间右端点:b;
%eps 精度;
%积分结果: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;
x=a+h*i;
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;
??? Input argument "b" is undefined.
Error in ==> CombineTraprl at 12
h=(b-a)/2;
>>
程序2:
function y = trapm(n,a,b)
format long
h = (b - a)/n;
sym x fx
fx = sqrt(4 - x^2);
f0 = subs(fx,'x',a);
fn = subs(fx,'x',b);
sum = f0;
for i = 1:n-1
xi = a + i* h;
fi = subs(fx,'x',xi);
sum = sum + 2* fi;
end
sum = sum + fn;
y = h* sum/2;
??? Input argument "b" is undefined.
Error in ==> trapm at 3
h = (b - a)/n;
>>
![matlab小白,发帖求助,编好的程序出了问题,附编程]()
题目.jpg
![matlab小白,发帖求助,编好的程序出了问题,附编程-1]()
程序1.jpg
![matlab小白,发帖求助,编好的程序出了问题,附编程-2]()
程序2.jpg
[ Last edited by 309065816 on 2013-7-10 at 20:54 ] |