2 つの曲線の交点を見つけるには:
g1 と g2 を明示的な無名関数として宣言する
g1 = @(x)(sqrt(2*x - 1));
g2 = @(x)(-0.4*x.^2 + 4.5);
テストする x の範囲を選択します。
xmin = 0;
xmax = 100;
xres = 0.1;
x = xmin:xres:xmax;
曲線で見つける
G1 = g1(x);
G2 = g2(x);
次に、グラフが互いに交差するインデックスを見つけます。
ind = find(diff(G1 > G2));
そのインデックスをx
値に変換するのは簡単です。
xval = xmin + (ind(1)-1)*xres
編集:
だから私はあなたの (V1,V2) が原点からの単なる単位方向ベクトルであると仮定していますか? その場合、直線 y = mx+c を作成し、g1 と g2 が交差する場所を見つけることができます。
m = V2/V1;
c = Y - m*X;
line = @(x)(m*x + c);
line
上記の手順に従って、と ととg1
の交点を見つけます。V1 が負の場合は、交点を右方向に探すように設定します。交点がない場合、線はおそらくエラーになるため、そこにエラー チェックを追加します。そして、V1 が正の場合は最小の xval を選択し、V1 が負の場合は大きい方を選択します。line
g2
xmax = X
xmin = X
xval
if V1 >= 0
xmin = X;
xmax = X + 100;
else
xmin = X - 100;
xmax = X;
end;
xres = 0.1;
x = xmin:xres:xmax;
G1 = g1(x);
G2 = g2(x);
L = line(x);
ind1 = find(diff(G1 > L));
xval1 = xmin + (ind1(1)-1)*xres
ind2 = find(diff(G2 > L));
xval2 = xmin + (ind2(1)-1)*xres
xval = (V1 > 0)*max(xval1, xval2) + (V2 < 0)*max(xval1, xval2);
yval = line(xval);