matlab找零點或兩個曲線的交點

2021-06-25 12:03:01 字數 874 閱讀 5275

尋找方程的零點可以等價於尋找兩個曲線的交點,因此這裡放在一起進行討論。

思路為:首先對應函式值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...