Explore BrainMass
Share

Explore BrainMass

    MATLAB Code Debugging

    This content was COPIED from BrainMass.com - View the original, and get the already-completed solution here!

    Without changing the codes, the errors boxed is what I am getting when I run these codes. I am not sure if I am supposed to create files first. I would like codes that are basic and running.

    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(iter<N)
    iter=iter+1;
    c=(a+b)/2;
    fa=feval(fname,a);
    fb=feval(fname,b);
    fc=feval(fname,c);
    if (fc==0 || (b-a)/2<eps)
    out=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
    for i=0:N-1

    © BrainMass Inc. brainmass.com October 10, 2019, 4:32 am ad1c9bdddf
    https://brainmass.com/computer-science/sorting/matlab-code-debugging-466037

    Attachments

    Solution Preview

    Read the comment on the file. You get the error because you do not pass a function handle for fname. Probably you are just passing a string. You need to adjust the code if you want to pass a string. Anyway here is how you define a function handle and pass it to the ...

    Solution Summary

    This solution helps debug a MATLAB code.

    $2.19