爲了找到兩條曲線的交點:
申報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)只是一個單位方向vec從起源?如果是這樣,我們可以創建一條直線y = mx + c,並找出相交g1和g2的位置。
m = V2/V1;
c = Y - m*X;
line = @(x)(m*x + c);
現在只是按照上面的步驟找到line
和g1
和也line
和g2
交點。如果V1爲負數,則設置xmax = X
,否則設置爲xmin = X
,以便您查找正確方向的交點。如果沒有交點,xval
行可能會出錯,因此在那裏添加一些錯誤檢查。然後隨便挑最小的XVAL如果V1是正的或更大的,如果V1是負
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);
來源
2013-04-29 15:12:14
Dan
所以,你說你的cruves被查出服用片出各面的(G1,G2)在(V1,V2)方向? – Dan 2013-04-29 14:51:36
@丹g1和g2是一架飛機上的簡單曲線。我糾正了我的帖子。對此感到抱歉。 – Pranasas 2013-04-29 14:54:52
您是否已經嘗試過使用符號工具箱?或者你更喜歡數字解決方案? – fpe 2013-04-29 15:35:43