error : Function integration trapezoidal
7 次查看(过去 30 天)
显示 更早的评论
i want to calculate area from numerical integration of function f(x) with the limits a to b and vary n . by the way i use this code from my handbook, numerical chapra. to solve my problem. but the result was error.
function I = trap(func,a,b,n,varargin)
% trap: composite trapezoidal rule quadrature
% I = trap(func,a,b,n,p1,p2,...):
% composite trapezoidal rule
% input:
% func = name of function to be integrated
% a, b = integration limits
% n = number of segments (default = 100)
% p1,p2,... = additional parameters used by func
% output:
% I = integral estimate
if nargin<3,error('at least 3 input arguments required'),end
if ~(b>a),error('upper bound must be greater than lower'),end
if nargin<4|isempty(n),n=100;end
x = a; h = (b - a)/n;
s=func(a,varargin{:});
for i = 1 : n-1
x = x + h;
s = s + 2*func(x,varargin{:});
end
s = s + func(b,varargin{:});
I = (b - a) * s/(2*n);
the error :
??? function I = trap(func,a,b,n,varargin)
|
Error: Function definitions are not permitted in this context.
what should i do ?
--- my purpose is to make the table like below this text, to known how the error result with vary n parameter.
%
2 个评论
sixwwwwww
2013-12-3
you can't directly run this function. first save it in an m-file with name 'trap.m' and then call with appropriate input parameters from command prompt or from another script
采纳的回答
sixwwwwww
2013-12-4
Maybe following links are helpful for you for this purpose:
These links shows how to use matlab functions. and how to input and get output values from them
4 个评论
Ahzabuddin
2016-5-20
can you help me too??? I get trapezoidal single... but I have trouble unequal trapezoidal.
x = [0 .12 .22 .32 .36 .4 .44 .54 .64 .7 .8];
y = 0.2+25*x-200*x.^2+675*x.^3-900*x.^4+400*x.^5;
>>trapuneq(x,y)
??? Undefined function or variable 'l'.
Error in ==> trapuneq at 18
s = s+(x(k+l)-x(k))*(y(k)+y(k+l))/2;
my formula M-File is
if nargin<2,error('at least 2 input arguments required'),end
if any(diff(x)<0),error('x not monotonically ascending'),end
n = length(x);
if length(y)~=n,error('x and y must be same length'); end
s = 0;
for k = 1:n-1
s = s+(x(k+l)-x(k))*(y(k)+y(k+l))/2;
end
I = s;
Sam
2023-4-14
Changing the 2 "l"s ("L"s; Capital shown for variable clarity) to a "1" ("One") in the line of the For loop fixes the error and allows the same anser to be attained as shown in the textbook (1.5948).
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!