Matlab code debugging


Assignment:

MATLAB Code Debugging

function out=bisect_1(fname, a, b, eps)

% bisection algorithm
% fname must be a function handle (if you want to use a string instead,
% use eval)
% sign(fa)*sign(fb) must be negative where fa=feval(fname,a) and
% fb=feval(fname,b)
%

% Example:
% fname=@(x)(exp(-cos(x))-1);
% root1=bisect_1(fname, 1, 2, 1e-3);
% root1
%

% To find the second root, use a=4 and b=5
% To find the third root, use a=7 and b=8
%

% Now to compare the results, use fzero() function
% first root-->fzero(fname, 1)
% second root-->fzero(fname, 5)
% third root-->fzero(fname, 8)
%

% You could add more codes to check the inputs to the function
% and act accordingly.
%

out='root not found';

if sign(feval(fname,a))*sign(feval(fname,b)) > 0
disp('function doesn''t cross zero betwenn the specified interval!!');
return ;
end
N=100; %to avoid infinite loop
found=false;
iter=0;
while(iteriter=iter+1;
c=(a+b)/2;
fa=feval(fname,a);
fb=feval(fname,b);
fc=feval(fname,c);
if (fc==0 || (b-a)/2out=c;
found=true;
break;
else
if sign(fc)==sign(fa)
a=c;
else
b=c;
end
end
end
if found==false
disp('Root not found!')
end

The error Iam getting for the above code
??? Input argument "fname" is undefined.

Error in ==> bisect_1 at 25
if sign(feval(fname,a))*sign(feval(fname,b)) > 0

function out=insertionSort(inArray)
% insertion sort algorithm
% inArray must be a vector
% out is the result of insertion sort
% Example:
% a=round(10*rand(1,10)+1);
% a_sorted=insertionSort(a);
% a_sorted
%

for i=1:length(inArray)
temp=inArray(i);
j=i;
while (j>1 && inArray(j-1)>temp)
inArray(j)=inArray(j-1);
j=j-1;
end
inArray(j)=temp;
end
out=inArray;

??? Input argument "inArray" is undefined.

Error in ==> insertionSort at 11
for i=1:length(inArray)

function out=my_cos(x, N, varargin)

%check for eps
if length(varargin)>1
disp('number of arguments must be 2 or 3!!')
return;
elseif length(varargin)==1
eps=varargin{1};
else
eps=0;
end

%start estimation
result=0;
for i=0:N-1
%calculate i-th term
numerator=(-1)^i;
denom=factorial(2*i);
factor=x^(2*i);
temp=(numerator/denom)*factor;
%compare to eps
if abs(temp)>eps
result=result+temp;
else
break;
end
end
out=result;

error for the above code
??? Input argument "N" is undefined.

Error in ==> my_cos at 15

Solution Preview :

Prepared by a verified Expert
MATLAB Programming: Matlab code debugging
Reference No:- TGS01936787

Now Priced at $20 (50% Discount)

Recommended (95%)

Rated (4.7/5)