title: Gradient Descent Matlab implementation
body: <p>I have gone through many codes in stack overflow and made my own on same line. there is some problem with this code I am unable to understand. I am storing the value theta1 and theta 2 and also the cost function for analysis purpose.
  The data for x and Y can be downloaded from this 
  <a href="http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=MachineLearning&amp;doc=exercises/ex2/ex2.html" rel="nofollow">Openclassroom</a> page. It has x and Y data in form of .dat files that you can open in notepad.</p>
  
  <pre><code>    %Single Variate Gradient Descent Algorithm%%
      clc
  clear all
  close all;
  % Step 1 Load x series/ Input data and Output data* y series
  
  x=load('D:\Office Docs_Jay\software\ex2x.dat');
  y=load('D:\Office Docs_Jay\software\ex2y.dat');
  %Plot the input vectors
  plot(x,y,'o');
  ylabel('Height in meters');
  xlabel('Age in years');
  
  % Step 2 Add an extra column of ones in input vector
  [m n]=size(x);
  X=[ones(m,1) x];%Concatenate the ones column with x;
  % Step 3 Create Theta vector
  theta=zeros(n+1,1);%theta 0,1
  % Create temporary values for storing summation
  
  temp1=0;
  temp2=0;
  % Define Learning Rate alpha and Max Iterations
  
  alpha=0.07;
  max_iterations=1;
        % Step 4 Iterate over loop
        for i=1:1:max_iterations
  
       %Calculate Hypothesis for all training example
       for k=1:1:m
          h(k)=theta(1,1)+theta(2,1)*X(k,2); %#ok&lt;AGROW&gt;
          temp1=temp1+(h(k)-y(k));
          temp2=temp2+(h(k)-y(k))*X(k,2);
       end
       % Simultaneous Update
        tmp1=theta(1,1)-(alpha*1/(2*m)*temp1);
        tmp2=theta(2,1)-(alpha*(1/(2*m))*temp2);
        theta(1,1)=tmp1;
        theta(2,1)=tmp2;
        theta1_history(i)=theta(2,1); %#ok&lt;AGROW&gt;
        theta0_history(i)=theta(1,1); %#ok&lt;AGROW&gt;
        % Step 5 Calculate cost function
        tmp3=0;
        tmp4=0;
        for p=1:m
          tmp3=tmp3+theta(1,1)+theta(2,1)*X(p,1);
          tmp4=tmp4+theta(1,1)+theta(2,1)*X(p,2);
        end
        J1_theta0(i)=tmp3*(1/(2*m)); %#ok&lt;AGROW&gt;
        J2_theta1(i)=tmp4*(1/(2*m)); %#ok&lt;AGROW&gt;
  
  
        end
        theta
        hold on;
        plot(X(:,2),theta(1,1)+theta(2,1)*X);
  </code></pre>
  
  <p>I am getting the value of</p>
  
  <blockquote>
    <p>theta as
        0.0373
         and 0.1900 it should be 0.0745 and 0.3800 </p>
  </blockquote>
  
  <p>this value is approximately double that I am expecting.</p>