plotting multiple function on octave. I already looked for an answer but something is not working












0















Let f be a continuous real function defined on the interval [a,b]. I want to aproximate this function by a piecewise quadratic polynomial. I already created a matrix that summarizes these polynomials. Let's say that I'm considering a uniform partition of the interval into N pieces ( therefore N+1 points).



I have a matrix A of size N times 3, where the k row represents the quadratic polynomial associated with the k-interval of this partition in the natural form ( the row [a b c] represents the polynomial a+bx+cx^2). I already created a method to find this matrix (obviously it depends on the choice of my interpolation points inside of each interval but that it doesn't matter for this question).



I'm trying to plot the corresponding function but I'm having some problems. I used the same idea given in Similar question. This is what I wrote



x=zeros(N+1,1);
%this is the set of points defining the uniform partition
for i=1:N+1
x(i)=a+(i-1)*((b-a)/(N));

end
%this is the length of my linspace for plotting the functions
l=100


And now I plot the functions:



figure;
hold on;
%first the original function
u=linspace(a,b,l*N);
v=arrayfun( f , u);
plot(u,v,'b')

% this is for plotting the other functions
for k=1:N
x0=linspace(x(k),x(k+1));
y0=arrayfun(@(t) [1,t,t^2]*A(k,:)',x0);
plot(x0, y0, 'r');
end


The problem is that the for is plotting the same function f and I don't know why. I tried with multiple different functions. I'm pretty sure that my matrix A is correct.










share|improve this question























  • Have you tried to put hold off at the end?

    – Michael O.
    Nov 12 '18 at 22:53


















0















Let f be a continuous real function defined on the interval [a,b]. I want to aproximate this function by a piecewise quadratic polynomial. I already created a matrix that summarizes these polynomials. Let's say that I'm considering a uniform partition of the interval into N pieces ( therefore N+1 points).



I have a matrix A of size N times 3, where the k row represents the quadratic polynomial associated with the k-interval of this partition in the natural form ( the row [a b c] represents the polynomial a+bx+cx^2). I already created a method to find this matrix (obviously it depends on the choice of my interpolation points inside of each interval but that it doesn't matter for this question).



I'm trying to plot the corresponding function but I'm having some problems. I used the same idea given in Similar question. This is what I wrote



x=zeros(N+1,1);
%this is the set of points defining the uniform partition
for i=1:N+1
x(i)=a+(i-1)*((b-a)/(N));

end
%this is the length of my linspace for plotting the functions
l=100


And now I plot the functions:



figure;
hold on;
%first the original function
u=linspace(a,b,l*N);
v=arrayfun( f , u);
plot(u,v,'b')

% this is for plotting the other functions
for k=1:N
x0=linspace(x(k),x(k+1));
y0=arrayfun(@(t) [1,t,t^2]*A(k,:)',x0);
plot(x0, y0, 'r');
end


The problem is that the for is plotting the same function f and I don't know why. I tried with multiple different functions. I'm pretty sure that my matrix A is correct.










share|improve this question























  • Have you tried to put hold off at the end?

    – Michael O.
    Nov 12 '18 at 22:53
















0












0








0








Let f be a continuous real function defined on the interval [a,b]. I want to aproximate this function by a piecewise quadratic polynomial. I already created a matrix that summarizes these polynomials. Let's say that I'm considering a uniform partition of the interval into N pieces ( therefore N+1 points).



I have a matrix A of size N times 3, where the k row represents the quadratic polynomial associated with the k-interval of this partition in the natural form ( the row [a b c] represents the polynomial a+bx+cx^2). I already created a method to find this matrix (obviously it depends on the choice of my interpolation points inside of each interval but that it doesn't matter for this question).



I'm trying to plot the corresponding function but I'm having some problems. I used the same idea given in Similar question. This is what I wrote



x=zeros(N+1,1);
%this is the set of points defining the uniform partition
for i=1:N+1
x(i)=a+(i-1)*((b-a)/(N));

end
%this is the length of my linspace for plotting the functions
l=100


And now I plot the functions:



figure;
hold on;
%first the original function
u=linspace(a,b,l*N);
v=arrayfun( f , u);
plot(u,v,'b')

% this is for plotting the other functions
for k=1:N
x0=linspace(x(k),x(k+1));
y0=arrayfun(@(t) [1,t,t^2]*A(k,:)',x0);
plot(x0, y0, 'r');
end


The problem is that the for is plotting the same function f and I don't know why. I tried with multiple different functions. I'm pretty sure that my matrix A is correct.










share|improve this question














Let f be a continuous real function defined on the interval [a,b]. I want to aproximate this function by a piecewise quadratic polynomial. I already created a matrix that summarizes these polynomials. Let's say that I'm considering a uniform partition of the interval into N pieces ( therefore N+1 points).



I have a matrix A of size N times 3, where the k row represents the quadratic polynomial associated with the k-interval of this partition in the natural form ( the row [a b c] represents the polynomial a+bx+cx^2). I already created a method to find this matrix (obviously it depends on the choice of my interpolation points inside of each interval but that it doesn't matter for this question).



I'm trying to plot the corresponding function but I'm having some problems. I used the same idea given in Similar question. This is what I wrote



x=zeros(N+1,1);
%this is the set of points defining the uniform partition
for i=1:N+1
x(i)=a+(i-1)*((b-a)/(N));

end
%this is the length of my linspace for plotting the functions
l=100


And now I plot the functions:



figure;
hold on;
%first the original function
u=linspace(a,b,l*N);
v=arrayfun( f , u);
plot(u,v,'b')

% this is for plotting the other functions
for k=1:N
x0=linspace(x(k),x(k+1));
y0=arrayfun(@(t) [1,t,t^2]*A(k,:)',x0);
plot(x0, y0, 'r');
end


The problem is that the for is plotting the same function f and I don't know why. I tried with multiple different functions. I'm pretty sure that my matrix A is correct.







plot octave piecewise






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 12 '18 at 18:04









CarvalCarval

12




12













  • Have you tried to put hold off at the end?

    – Michael O.
    Nov 12 '18 at 22:53





















  • Have you tried to put hold off at the end?

    – Michael O.
    Nov 12 '18 at 22:53



















Have you tried to put hold off at the end?

– Michael O.
Nov 12 '18 at 22:53







Have you tried to put hold off at the end?

– Michael O.
Nov 12 '18 at 22:53














1 Answer
1






active

oldest

votes


















0














Please write a minimal working example that can be run as standalone code or copy/pasted from people here to check where you might have a bug -- often in the process of reducing your code to its bare principles in this manner, you end up figuring out what is the problem yourself in the first place. But, in any case, I have written one myself and cannot replicate the problem.



figure;
hold on;

# arbitrary values for Minimal Working Example
N = 10;
x = [10:10:110]; # (N+1, 1)
A = randn( N, 3 ); # (3 , N)
a = 100; b = 200; l = 3;
f = @(t) t.^2 .* sin(t);

%first the original function
u = linspace(a,b,l*N);
v = arrayfun( f , u);
plot(u,v,'b')

for k = 1 : N
x0 = linspace( x(k), x(k+1) )
y0 = arrayfun( @(t) ([1, t, t.^2]) * (A(k, :).'), x0 )
x0, y0
plot(x0, y0, 'r');
endfor

hold off;


Output:





Are you doing something different?






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267720%2fplotting-multiple-function-on-octave-i-already-looked-for-an-answer-but-somethi%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Please write a minimal working example that can be run as standalone code or copy/pasted from people here to check where you might have a bug -- often in the process of reducing your code to its bare principles in this manner, you end up figuring out what is the problem yourself in the first place. But, in any case, I have written one myself and cannot replicate the problem.



    figure;
    hold on;

    # arbitrary values for Minimal Working Example
    N = 10;
    x = [10:10:110]; # (N+1, 1)
    A = randn( N, 3 ); # (3 , N)
    a = 100; b = 200; l = 3;
    f = @(t) t.^2 .* sin(t);

    %first the original function
    u = linspace(a,b,l*N);
    v = arrayfun( f , u);
    plot(u,v,'b')

    for k = 1 : N
    x0 = linspace( x(k), x(k+1) )
    y0 = arrayfun( @(t) ([1, t, t.^2]) * (A(k, :).'), x0 )
    x0, y0
    plot(x0, y0, 'r');
    endfor

    hold off;


    Output:





    Are you doing something different?






    share|improve this answer




























      0














      Please write a minimal working example that can be run as standalone code or copy/pasted from people here to check where you might have a bug -- often in the process of reducing your code to its bare principles in this manner, you end up figuring out what is the problem yourself in the first place. But, in any case, I have written one myself and cannot replicate the problem.



      figure;
      hold on;

      # arbitrary values for Minimal Working Example
      N = 10;
      x = [10:10:110]; # (N+1, 1)
      A = randn( N, 3 ); # (3 , N)
      a = 100; b = 200; l = 3;
      f = @(t) t.^2 .* sin(t);

      %first the original function
      u = linspace(a,b,l*N);
      v = arrayfun( f , u);
      plot(u,v,'b')

      for k = 1 : N
      x0 = linspace( x(k), x(k+1) )
      y0 = arrayfun( @(t) ([1, t, t.^2]) * (A(k, :).'), x0 )
      x0, y0
      plot(x0, y0, 'r');
      endfor

      hold off;


      Output:





      Are you doing something different?






      share|improve this answer


























        0












        0








        0







        Please write a minimal working example that can be run as standalone code or copy/pasted from people here to check where you might have a bug -- often in the process of reducing your code to its bare principles in this manner, you end up figuring out what is the problem yourself in the first place. But, in any case, I have written one myself and cannot replicate the problem.



        figure;
        hold on;

        # arbitrary values for Minimal Working Example
        N = 10;
        x = [10:10:110]; # (N+1, 1)
        A = randn( N, 3 ); # (3 , N)
        a = 100; b = 200; l = 3;
        f = @(t) t.^2 .* sin(t);

        %first the original function
        u = linspace(a,b,l*N);
        v = arrayfun( f , u);
        plot(u,v,'b')

        for k = 1 : N
        x0 = linspace( x(k), x(k+1) )
        y0 = arrayfun( @(t) ([1, t, t.^2]) * (A(k, :).'), x0 )
        x0, y0
        plot(x0, y0, 'r');
        endfor

        hold off;


        Output:





        Are you doing something different?






        share|improve this answer













        Please write a minimal working example that can be run as standalone code or copy/pasted from people here to check where you might have a bug -- often in the process of reducing your code to its bare principles in this manner, you end up figuring out what is the problem yourself in the first place. But, in any case, I have written one myself and cannot replicate the problem.



        figure;
        hold on;

        # arbitrary values for Minimal Working Example
        N = 10;
        x = [10:10:110]; # (N+1, 1)
        A = randn( N, 3 ); # (3 , N)
        a = 100; b = 200; l = 3;
        f = @(t) t.^2 .* sin(t);

        %first the original function
        u = linspace(a,b,l*N);
        v = arrayfun( f , u);
        plot(u,v,'b')

        for k = 1 : N
        x0 = linspace( x(k), x(k+1) )
        y0 = arrayfun( @(t) ([1, t, t.^2]) * (A(k, :).'), x0 )
        x0, y0
        plot(x0, y0, 'r');
        endfor

        hold off;


        Output:





        Are you doing something different?







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 18:39









        Tasos PapastylianouTasos Papastylianou

        10.8k1932




        10.8k1932






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53267720%2fplotting-multiple-function-on-octave-i-already-looked-for-an-answer-but-somethi%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Full-time equivalent

            Bicuculline

            さくらももこ