尋找方程的零點可以等價於尋找兩個曲線的交點,因此這裡放在一起進行討論。
思路為:首先對應函式值y0,對自變數x進行插值,找出給定區間內所有滿足f(x)=y0的x值,再令y0=0,即可得到方程的零點或者兩曲線的交點橫座標。
首先必須找出y=y0直線上下交錯排列的所有資料點,即(xk,yk)和(xk+1,yk+1),在此區間內認為函式y為單調的,可以用邏輯運算加移位來實現。**如下:
function [x0,y0]=invinterp(x,y,y0)
x=x(:);y=y(:);
n=numel(y);
if y0max(y)
x0=;y0=;%不存在則直接退出
else
below=yabove=y>=y0;
kth=(below(1:n-1)&above(2:n)) | (above(1:n-1)&below(2:n));
kp1=[false;kth];
alpha=(y0-y(kth))./(y(kp1)-y(kth));
x0=alpha.*(x(kp1)-x(kth))+x(kth);
y0=repmat(y0,size(x0));
end以上函式實現給定x,y和y0的前提下利用線性插值找出對應y0的x值x0。
於是利用上面的函式即可實現尋找方程的零點或者曲線的交點。例項如下:
x=linspace(0,10);
y=sin(x);
z=2*cos(3*x);
x0=invinterp(x,y-z,0);
y0=interp1(x,y,x0);
plot(x,y,x,z,x0,y0,'o')
legend('曲線1:y=sin(x)','曲線2:y=2cos(3x)','交點')
連線兩個點雲的字段或資料形成新點雲
學習如何連線兩個不同點雲為乙個點雲,進行操作前要確保兩個資料集中欄位的型別相同和維度相等,同時了解如何連線兩個不同點雲的字段 例如顏色 法線 這種操作的強制約束條件是兩個資料集中點的數目必須一樣,例如 點雲a是n個點xyz點,點雲b是n個點的rgb點,則連線兩個字段形成點雲c是n個點xyzrgb型別...
WKWebView的兩個坑點
蘋果在 wkwebview 中的 js runtime 裡事先注入了乙個 window.webkit.messagehandlers.giveuid.postmessage 方法,我們可以使用這個方法直接向 native 層傳值,異常方便。首先,我們要把乙個名為 giveuid 的 scriptme...
c struct的兩個注意點
1.c 的結構體變數在宣告的時候可以省略struct,在c中這樣是不可以的,例子如下 1 include2 include 3using namespace std 45 struct test 910 int main void 11 2.c 的結構體宣告可以宣告在main 函式中,也可以在mai...