# Write a script that prompts the user to input a function, f(x),

27 views (last 30 days)
libin danial on 2 Aug 2012
Write a script that prompts the user to input a function, f(x), and the limits of integration, a and b. The script should approximate the integral of the function from a to b, using the Trapezoid Rule. The script should also generate a plot of the function AND the piecewise-linear approximation to the function used in the Trapezoid Rule.
this is what i have soo far
clc,clear all, close all
f=str2func(['@(x)' input('Enter f(x):','s')]);
x=linspace(a,b,N);
N=input('define n=');
a=input('insert lower limit=');
b=input('insert upper limit=');
x=linspace(a,b,N);
h=(b-a)/(N-1);
for i=1:N-1;
T=T+h*(((f(x(i)))+(f(x(i+1))))/2);
end
plot(a,b)
am i doing something wrong
Oleg Komarov on 2 Aug 2012
You can aslo safely drop the too many ()
h*(f(x(i))+f(x(i+1)))/2

Babak on 2 Aug 2012
In the first line of your code you cannot say
x=linspace(a,b,N);
because a, b and N are not yet defined there.
Babak on 2 Aug 2012
remove that line... you also need to use
for i=1:N-1
for i=1:N-1;
I mean without semicolon.
T=T+h*(((f(x(i)))+(f(x(i+1))))/2);
T needs to be defined in Advance... you can sat T=0; at the beginning of your code for example.
Note: I recommend you using func() or fun() instead of f() because MATLAB has issues evaluating f(g(x)) when function names f, g are single characters.

libin danial on 2 Aug 2012
thanks, how about the piloting part does that look right