1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Function with subfunction

  1. Aug 2, 2014 #1

    Maylis

    User Avatar
    Gold Member

    1. The problem statement, all variables and given/known data
    The function func takes any real array A as input and outputs an array B of equal size, whose entries are equal to twice the corresponding entry of A for every nonnegative entry of A, and equal to a given number n, for every negative entry of A. The function func accepts a subfunction subf. Complete the code in func and subf, as necessary.

    Code (Text):
    function B=func(A,n)
    % Replace A by B such that each entry of B equals:
    % twice the entry of A if that entry of A is non-negative
    % or n if the entry of A is negative
    B = 2*subf(_______________ % COMPLETE THE ARGUMENT LIST
    function C = subf(__________________ % COMPLETE THE
    % ARGUMENT LIST
    % subfunction of func
    C___________________________________ % COMPLETE THE LINE
    2. Relevant equations



    3. The attempt at a solution

    Code (Text):
    function B=func(A,n)
    % Replace A by B such that each entry of B equals:
    % twice the entry of A if that entry of A is non-negative
    % or n if the entry of A is negative
    B = 2*subf(A)% COMPLETE THE ARGUMENT LIST
    function C = subf(A<0,n) % COMPLETE THE
    % ARGUMENT LIST
    % subfunction of func
    C = n % COMPLETE THE LINE
    I am totally confused how to do this. This is so concise that I can't figure out how to make it distinguish whether its negative or non-negative with the few lines of code permitted. I am also having some confusion over how to properly use a subfunction. I would rather use if statements, but since this was an exam question I have to do it the way they ask.
     
  2. jcsd
  3. Aug 2, 2014 #2

    mfb

    User Avatar
    2016 Award

    Staff: Mentor

    Apparently your programming language has some methods of array manipulation without looping over the events. It would be helpful to know which language this is and how you can work with arrays.

    That way, subf does not know about n, and your B cannot depend on n any more. This cannot work.
    Does your subf have one or two arguments? The lines are contradicting.

    "function" mainly does the multiplication with 2. Ignore that for a moment (it's there already anyway).
    At some point you have to check which elements of A are negative. "function" does not do it, so "subf" has to do it. What's left to do for "function"?
     
  4. Aug 2, 2014 #3

    Maylis

    User Avatar
    Gold Member

    Sorry I forgot to mention it's Matlab
     
  5. Aug 2, 2014 #4

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    I agree the question seems far too cryptic without some more information about what you are supposed to do.

    You could compute the required result with a single assignment statement, so it's not obvious (to me) what the subfunction is for.

    "B = 2 * subf(....." seems to be putting the 2 in the wrong place, unless the answer is supposed to be something like "B = 2*subf(....) + another_expression".
     
  6. Aug 2, 2014 #5

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    Well, in Matlab the expression "A < 0" gives you an array populated with 1s for the negative terms in A and 0's otherwise (the OP has used that in the attempt at a solution) so it's hardly a reason for writing a subfunction. :confused:
     
  7. Aug 3, 2014 #6

    mfb

    User Avatar
    2016 Award

    Staff: Mentor

    Yeah, but for some reason we have to use one.

    The 2 is at an odd place, but we can divide n by 2 to fix that.

    It is a weird question, but I think there are solutions.
     
  8. Aug 3, 2014 #7

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    Sure there are plenty of solutions, but from the OP's other threads these examples seem to be computer-graded, so you probably have to guess the "right" solution is to get marks.

    Maybe there is some more information about the question that the OP hasn't shown us.
     
  9. Aug 3, 2014 #8

    Maylis

    User Avatar
    Gold Member

    This is a problem from a previous exam. The exam is done by hand, I'll send a picture
    ImageUploadedByPhysics Forums1407111097.514119.jpg

    Here is an exam question from a different year. It's clear that the instructor likes sub function problems on the exam

    ImageUploadedByPhysics Forums1407111166.817324.jpg
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: Function with subfunction
  1. MATLAB Function (Replies: 0)

  2. Recursive function (Replies: 16)

  3. Transfer Function (Replies: 20)

Loading...