function [k4_est] = fit_Rap1_1param()
    
    param = [0.5, 0.5, 0.2, NaN]; % [k1, k2, k3, k4]の順に(k4は後で変えるので、仮にNaNを代入)
    y0 = [1, 0, 0.005, 0]; % [S, GEFa, GAPa, Rap1a]
    
    load('data_Rap1_1para.mat'); % x: Rap1aのデータ、t:時間
    
    %% k4を振って、残差2乗和(RSS)が最小となるときのk4を求める
    k4 = 0.1:0.05:10;  % k4の候補。0.1から10まで0.05刻み。
    [x_Rap1_RSS] = landscape_Rap1_1param(k4, t, x, param, y0); % t及びxはデータ点の時間とRap1aの波形
    
    [RSS_min, idk4_minRSS] = 　　　　　　　　　; % 最小値を探す関数minを使って、最小となるRSSとそのときの番号を求める
    k4_est = 　　　　　　; % RSSが最小となるときのk4を代入。k4は配列であることに注意。
    
    %% 上で求めた残差2乗和(RSS)が最小となるときのk4を代入し、シミュレーション
    temp_param = param;
    temp_param(4) = 　　　　　　　　; % k4は、RSS最小となるときの値を代入
    [t_sim, timeCourse_sim] = ode15s(@(t, y) ODE(t, y, temp_param), t, y0);
    
    %% 描画
    figure(1);
    %% 時間波形
    subplot(1, 2, 1)
    plot(t, x, 'bo'); % データ点
    hold on
    plot(t_sim, timeCourse_sim(:, 4), 'r-'); % シミュレーション
    title('データとODEの出力');
    xlabel('時間');
    ylabel('Rap1a');
    %% RSSとk4の関係
    subplot(1, 2, 2);
    plot(k4, x_Rap1_RSS, 'b-');
    hold on
    plot(k4_est, RSS_min, 'ro');
    title('評価関数の景観');
    xlabel('k4');
    ylabel('残差二乗和');
    
end

function [x_Rap1_RSS] = landscape_Rap1_1param(k4, SamplingTime, x_Rap1, param, y0)
    
    x_Rap1_RSS = zeros(1, length(k4));% 各要素に各k4のときのRSSが入るような配列を準備
    for i = 1:length(k4)
        
        param(4) =  　　　　　　　　; % 変えているパラメータは？配列で与えられていることに注意
        [~, tc] = ode15s(@(t, y) ODE(t, y, param), SamplingTime, y0);
        vary_x_Rap1 = tc(:, 4);
        x_Rap1_Residual = vary_x_Rap1-  x_Rap1;
        x_Rap1_RSS(i) = 　　　　　　　　; % 残差はx_Rap1_Residual。残差2乗和はどう表すか？
    end
    
end

function dydt = ODE(t, y, param)
    % ここにモデルをコピー
    　　　　　　　　　　　　　　
end

