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, Rap1]
    
    load('data_Rap1_1para_noiseless.mat');
    
    %% k4を振って、残差2乗和(RSS)が最小となるときのk4を求める
    k4 = linspace(0.1, 10, 201);
    [x_Rap1_RSS] = landscape_Rap1(k4, t, x, param, y0); % t及びxはデータ点の時間とRap1aの波形
    
    [RSS_min, idx] = 　　　　　　　　　; % 最小値を探す関数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, 'o'); % データ点
    hold on
    plot(t_sim, timeCourse_sim(:, 4), 'r-'); % シミュレーション
    %% RSSとk4の関係
    subplot(1, 2, 2);
    plot(k4, x_Rap1_RSS);
    hold on
    plot(k4_est, RSS_min, 'ro');
    
end

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

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

