1. 找出一個二維數組的拐點演算法
拐點可以這樣去求:判斷條件:(data[n+1]-data[n])*(data[n+2]-data[n+1])<0,不論波谷還是波峰都可以求,如果要求即使兩個相鄰數一樣也算是拐點的話,那麼條件改為<=0即可!
2. 基於什麼原理能確定一條曲線的轉折點,曲線前一段是線性,後段水平,轉折處為類圓角。
你指的轉折點,是二階導數的極值。
3. 怎麼在excel曲線里找出所定點,並且都要標出對應的坐標值,謝謝
找出所定點方法:
1.Ctrl+F打開查找窗口;鍵入查找內容;
2.滑鼠點擊最後一個sheet表格;按住滑動按鈕至最左(在此過程保持停在最後一個sheet編輯狀態);
3.按住shift鍵並點擊第一個sheet表格使全選所有工作表格,點查找窗口「查找」即可。
標出對應的坐標值:
點圖表區——右鍵——圖表選項——數據標志——值(勾選)——確定即可。
4. 我做分析實驗得到了很多的數據(很多坐標)我怎麼用matlab將他們繪成平滑的曲線然後再找出轉折點
很多坐標?坐標的單位不同?還是很多數據點,如果是數據點的話,建議先做異常數據剔除,可以用馬氏距離剔除,然後用樣條擬合曲線,最後用求導的方式找最大最小點,這就是轉折點。
5. 求貝塞爾曲線的頂點坐標的演算法
德卡斯特里奧演算法可以計算貝塞爾曲線上的點C(u),u∈[0,1]。因此,通過給定一組u的值,便可以計算出貝塞爾曲線上的坐標序列,從而繪制出貝塞爾曲線。
德卡斯特里奧演算法的基礎就是在向量AB上選擇一個點C,使得C分向量AB為u:1-u(也就是∣AC∣:∣AB∣= u)。給定點A、B的坐標以及u(u∈[0,1])的值,點C的坐標便為:C = A + (B - A) * u = (1 - u) * A + B * u。
定義貝塞爾曲線的控制點Pi編號為0i,其中,0表示是第0次迭代。當第一、二、三……次迭代時,0將會被1、2、3……替換。
德卡斯特里奧演算法的思想如下:為了計算n次貝塞爾曲線上的點C(u), u∈[0,1],首先將控制點連接形成一條折線00-01-02……0(n - 1)-0n。利用上述方法,計算出折線中每條線段0j-0(j+1)上的一個點1j,使得點1j分該線段的比為u:1-u。然後在折線 10-11-……-1(n-1)上遞歸調用該演算法,以此類推。最終,求得最後一個點n0。 德卡斯特里奧證明了,點n0一定是曲線上的點。
如上圖,曲線控制點是00、01、02、03、04、05。線段00-01上取點10,10分該線段的比為u:1-u,類似地取點11、 12、13、14,然後第二次迭代在線段10-11上取點20,點20分該線段的比為u:1-u,類似地取點21、22、23。然後進行下一次迭代,依次類推,直到最後在線段40-41上取點50,50是最終惟一的點,也是在曲線上的點。
上述直觀的演算法描述可以表達成一個計算方法。
首先,將所有給定的控制點排列成一列,在上圖中,即為最左邊的一列。每一對相鄰的控制點可以伸出兩個箭頭,分別指向右下方和右上方。在相鄰箭頭的交叉處,生成一個新的控制點。例如,控制點ij和i(j +1)生成新的控制點(i + 1)j。指向右下方的箭頭表示乘以(1 - u),指向右上方的箭頭表示乘以u。
因此,通過第0列,可以求出第1列,然後求出第2列……,最終,在n次迭代後,可以到達惟一的一個點n0,這個點就是曲線上的點。
該計算過程演算法如下:
Input: array P[0:n] of n+1 points and real number u in [0,1] Output: point on curve, C(u) Working: point array Q[0:n] for i := 0 to n do
Q[i] := P[i]; // save input
for k := 1 to n do
for i := 0 to n - k do
Q[i] := (1 - u)Q[i] + u Q[i + 1];
return Q[0];
該計算方法可以推導出一個遞歸關系:
但是,直接通過遞歸方法計算Pi,j效率低下,其原因與通過遞歸方法計算斐波那契數列一樣:遞歸方法有大量的重復計算。
德卡斯特里奧演算法還有一個有趣的性質。對於同一列中的連續的一組控制點,對其應用德卡斯特里奧演算法,那麼由這些控制點確定的曲線上的點,就是以這組控制點為邊的等邊三角形中,與這些控制點相對的頂點。
例如:由控制點02、03、04、05確定的曲線上的,對應u的點是32,正如下圖中藍色的等邊三角形所表示的。同樣,控制點11、12、13確定的曲線上的,對應u的點是31,如圖,黃色三角形所示。
根據上面所述,通過給定一組u值,便可以計算出貝塞爾曲線上的坐標序列,從而繪制出貝塞爾曲線。
view plain to clipboardprint?
// arrayCoordinate為控制點
void CChildView::DrawBezier(CDC *pDC, const CArray<CPoint, CPoint>& arrayCoordinate)
{
int n = 0;
if((n = arrayCoordinate.GetSize()) < 2)
return;
double *xarray = new double[n - 1];
double *yarray = new double[n - 1];
double x = arrayCoordinate.GetAt(0).x;
double y = arrayCoordinate.GetAt(0).y;
for(double t = 0.0; t <=1; t += 0.05 / n) // 調整參數t,計算貝塞爾曲線上的點的坐標,t即為上述u
{
for(int i = 1; i < n; ++i)
{
for(int j = 0; j < n - i; ++j)
{
if(i == 1) // i==1時,第一次迭代,由已知控制點計算
{
xarray[j] = arrayCoordinate.GetAt(j).x * (1 - t) + arrayCoordinate[j + 1].x * t;
yarray[j] = arrayCoordinate.GetAt(j).y * (1 - t) + arrayCoordinate[j + 1].y * t;
continue;
}
// i != 1時,通過上一次迭代的結果計算
xarray[j] = xarray[j] * (1 - t) + xarray[j + 1] * t;
yarray[j] = yarray[j] * (1 - t) + yarray[j + 1] * t;
}
}
pDC->MoveTo(x, y);
pDC->LineTo(xarray[0], yarray[0]);
x = xarray[0];
y = yarray[0];
}
delete [] xarray;
delete [] yarray;
}
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Fioman/archive/2008/06/23/2578895.aspx
6. 如何在Excel上曲線圖上找點
1、打開Excel表格,然後點擊插入,接著點擊散點圖,然後在Excel表格中插入曲線圖就可以了。
7. 怎麼求一元三次方程曲線的變化趨勢的轉折點
就是三階矩陣求特徵值唄 求出來的一元三次方程可以化成 (aλ-b)(cλ-d)(eλ-f) 主要看bcd=方程最後面的常數 然後ace=三次項系數 一般三次項系數都是1的 主要看最後的常數就行 例如常數是12 那也就是3*2*2或者1*4*3或者1*12*12或者2*1*6 略微
8. EXCEL上怎麼找到兩條曲線的交點
1.用EXCEL的折線圖或帶平滑線的散點圖把數據繪出。
9. 曲線怎樣找點
首先,確定哪些方法是嵌合,如最小二乘法。然後確定演算法,就可以開始編程!
推薦去這個數值書看,有各種各樣的擬合方法介紹。
因為我們知道,擬合曲線!怎麼辦MATLAB吧!這多簡單啊!何必用C
10. 怎麼在excel的曲線上找一一對應的點
在創建散點圖或折線圖時,選擇帶有數據點標記的圖表類型,就能得到帶有對應點的曲線圖。
在生成圖表後,可以單擊圖表,通過選擇 圖標工具/設計選項卡/圖表布局工具組
選擇帶有對應點數據標記的布局方案,
能夠得到帶有對應數據點和數據點對應數值的曲線圖表。