このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
》、《この例ではのパラメーターをデータに当てはめる2通りの方法を示します。1番目は、ローレンツ系 (初期値鋭敏性を備えた有名な ODE) の解の一部に一定速度の循環パスを直接当てはめる方法を示します。2 番目は、ローレンツ系のパラメーターを変更して一定速度の循環パスを当てはめる方法を示します。微分方程式をデータに当てはめるためのモデルとして、自分の用途に適したアプローチを使用できます。
ローレンツ系は常微分方程式系です(ローレンツ系を参照)。実定数 について,系は以下になります。
鋭敏性の高い系の場合,ローレンツのパラメーターの値は,
です。系を[x(0)(0)、z(0)) =(10年,20年,10)
から始め,時間0から100までの系の変化を表示します。
σ= 10;β= 8/3;ρ= 28;F = @(t,a) [-sigma*a(1) + sigma*a(2)];Rho *a(1) - a(2) - a(1)*a(3);β* (3)+ (1)* (2)];xt0 =(10年,20年,10);[tspan,a] = ode45(f,[0 100],xt0);%龙格-库塔4 /5阶ODE求解器图plot3((: 1)、(:,2),(:,3))视图([-10.0 - -2.0])
変化はかなり複雑です。ただし,短い時間間隔では,均一な循環動作に見えます。時間間隔[0, 1/10)
にわたり,解をプロットします。
[tspan,a] = ode45(f,[0 1/10],xt0);%龙格-库塔4 /5阶ODE求解器图plot3((: 1)、(:,2),(:,3))视图(-70 [-30])
循環パスの方程式にはいくつかのパラメーターがあります。
x - y平面からのパスの角度
x軸に沿った傾斜からの平面の角度
半径R
速度V
時間0からのシフトt0
空間δにおける3次元シフト
これらのパラメーターに関して,時間xdata
の循環パスの位置を決定します。
类型fitlorenzfn
函数f = fitlorenzfn(x,xdata) = x(1:2);R = x (3);V = x (4);t0 = x (5);δ= x (8);f = 0(长度(xdata), 3);f (: 3) = R * sin(θ(1))* sin (V * (xdata - t0)) +δ(3);f(:,1) = R*cos(V*(xdata - t0))*cos(theta(2))…- R * sin (V * (xdata - t0)) * cos(θ(1))* sin(θ(2))+δ(1);f (: 2) = R * sin (V * (xdata (t0)) * cos(θ(1))* cos(θ(2))… - R*cos(V*(xdata - t0))*sin(theta(2)) + delta(2);
ODE解での所定の時間における,ローレンツ系への最適適合循環パスを求めるには,lsqcurvefit
を使用します。パラメーターを妥当な範囲内に留めるよう、さまざまなパラメーターに範囲を設けます。
磅=[-15年-π-π/ 2,5日,-π,-40,-40,-40];乌兰巴托=π/ 2,π,60岁,15日,π,40岁,40岁,40);theta0 = (0, 0);R0 = 20;= 1;t0 = 0;delta0 = 0 (3,1);x0 = [theta0; R0 V0; t0 delta0);[xb, resnorm残留]= lsqcurvefit (tspan @fitlorenzfn, x0,磅,乌兰巴托);
局部最小值。Lsqcurvefit停止是因为相对于初始值的平方和的最终变化小于函数公差的值。
ODE解からの時間における最適適合循環パスを,ローレンツ系の解と一緒にプロットします。
Soln = a +残差;持有在plot3(溶液(:1)溶液(:,2),溶液(:,3),“r”)传说(“颂歌解决方案”,圆弧的)举行从
图plot3((: 1)、(:,2),(:,3),“b”。,“MarkerSize”, 10)在plot3(溶液(:1)溶液(:,2),溶液(:,3),“处方”,“MarkerSize”10)传说(“颂歌解决方案”,圆弧的)举行从
ここで,パラメーター を円弧への最適適合となるように変更します。さらに適した適合となるように,初期点(10年,20年,10)を変更できます。
これを行うには,関数ファイルparamfun
を記述します。》、《このファイルは適合のパラメーターをとり,時間t
にわたる軌跡を計算します。
类型paramfun
函数pos = paramfun(x,tspan) sigma = x(1);β= x (2);ρ= x (3);xt0 = x (6);F = @(t,a) [-sigma*a(1) + sigma*a(2)];Rho *a(1) - a(2) - a(1)*a(3);β* (3)+ (1)* (2)];[~, pos] =数值(f tspan xt0);
最適なパラメーターを見つけるには,lsqcurvefit
を使用して,新たに計算された颂歌軌跡と円弧溶液
との間の差を最小化します。
xt0 = 0 (1,6);xt0(1) =σ;xt0(2) =β;xt0(3) =ρ;xt0(6) =溶液(1:);[pb, presnorm presidual、exitflag、输出]= lsqcurvefit (@paramfun、xt0 tspan,溶液);
局部最小值。Lsqcurvefit停止是因为相对于初始值的平方和的最终变化小于函数公差的值。
この最適化でパラメーターがどの程度変化したかを判別します。
流('新参数:%f, %f, %f'pb (1:3))
新增参数:9.132446、2.854998、27.937986
流('原始参数:%f, %f, %f'(σ,β,ρ))
原始参数:10.000000、2.666667、28.000000
パラメーターσ
とβ
は約10%ずつ変化しました。
変更済みの解をプロットします。
图保存在Odesl =总统+ soln;plot3 (odesl (: 1) odesl (:, 2), odesl (:, 3),“b”) plot3(溶液(:1)溶液(:,2),溶液(:,3),“r”)传说(“颂歌解决方案”,圆弧的)视图([-30 -70])保持从
シミュレーションまたは常微分方程式の最適化で説明されているとおり,オプティマイザーでは,数値的颂歌解に固有のノイズに起因する問題が生じることがあります。正確でない可能性があることを終了メッセージまたは終了フラグが示しているなどの理由で,解が理想的でないと疑われる場合は,有限差分の変更を試みてください。この例では,より大きな有限差分ステップサイズと中心有限差分を使用します。
选择= optimoptions (“lsqcurvefit”,“FiniteDifferenceStepSize”1的军医,...“FiniteDifferenceType”,“中央”);[pbest2, presnorm2 presidual2、exitflag2 output2] =...lsqcurvefit (@paramfun xt0 tspan,溶液,[],[],选项);
局部最小值。Lsqcurvefit停止是因为相对于初始值的平方和的最终变化小于函数公差的值。
この場合,これらの有限差分オプションを使用しても,解は改善されません。
disp ([presnorm presnorm2])
20.0637 - 20.0637