使用matlab表示「段數不確定」的分段函式

2022-04-06 11:32:49 字數 1984 閱讀 2978

分段函式f(x)的段數為陣列a的長度減1,在表達f(x)時,不能直接使用a的長度5-1=4.

先計算每個間隔點的函式值f(a2),f(a3),f(a4),再迴圈表示f(x)。

f(x) = (2x+1).*(x>2&&x<=4)

+(f(4)+2x^2+2).*(x>4&&x<=6)

+(f(6)+2x^3+3).*(x>6&&x<=8)

+(f(8)+2x^4+4).*(x>8&&x<=10)

因為每段中的表示式有一定的規律,所以可以用迴圈進行表示。

**如下:

function y =f(x)

y = 0;

a = [2 4 6 8 10];

% gap vector is used to store f(a1),f(a2),...,f(a5)

gap = zeros(size(a));

for i = 2:length(a)

gap(i) = 2*(a(i)^(i-1))+(i-1);

endfor i = 2:length(a)

gap(i) = gap(i) + gap(i - 1);

end% the representation of piecewise function

for i = 1:length(a)-1

y = y + (gap(i) + 2*(x^i)+i).*(x>a(i)&&x<=a(i+1));

end

同方法1,先計算間隔點函式值f(a2),f(a3),f(a4),再使用插值函式判斷輸入的自變數x位於哪個區間,進而使用該區間上的表示式。

**如下:

function y = f(x)

a = [2 4 6 8 10];

% 計算每個區間的基數f(a2),f(a3),f(a4)

gap=zeros(size(a));

gap(1)=0;gap(end)=nan;

for i=2:length(a)-1

gap(i)=gap(i-1)+2*a(i)^(i-1)+(i-1);

end%使用插值函式計算x落在哪個區間上,num表示段數。

num=interp1(a,1:length(a),x);

num=ceil(num)-1;

num(isnan(num))=length(a); %處理超過陣列a範圍的值

num(num==0)=1; %處理第乙個x = a(1)

%計算函式值,每個分段上的基數加上該分段上的變數

y=gap(num)+2*x.^num+num;

同方法2,但不使用插值函式,使用find函式判斷輸入的自變數x位於哪個區間

**如下:

function y = f(x)

a = [2 4 6 8 10];

% 計算每個區間的基數f(a2),f(a3),f(a4)

gap=zeros(size(a));

gap(1)=0;gap(end)=nan;

for i=2:length(a)-1

gap(i)=gap(i-1)+2*a(i)^(i-1)+(i-1);

end%使用find函式計算x落在哪個區間上,num表示段數。

num=find(sort([a x]) == x);

num=num(1)-1; % 當a中某元素與x相同時,取第乙個。

num(isnan(num))=length(a); %處理超過陣列a範圍的值

num(num==0)=1; %處理第乙個x = a(1)

%計算函式值,每個分段上的基數加上該分段上的變數

y=gap(num)+2*x.^num+num;

使用matlab表示「段數不確定」的分段函式

分段函式f x 的段數為陣列a的長度減1,在表達f x 時,不能直接使用a的長度5 1 4.先計算每個間隔點的函式值f a2 f a3 f a4 再迴圈表示f x f x 2x 1 x 2 x 4 f 4 2x 2 2 x 4 x 6 f 6 2x 3 3 x 6 x 8 f 8 2x 4 4 x ...

java函式可變引數(不確定引數)的使用

當寫了一方方法後,想讓這個方法傳入不確定的引數值,就要用到可變引數 在jdk1.5加入了此方法,使用語法 資料型別 可變引數名稱 如 int data public class test public static int add int a return result 可變引數的本質是陣列,相當於...

使用union型別出現的程式結果不確定問題

剛從論壇上看到乙個問題 include int main void r r.i 0 0 r.i 1 2 printf d n r.k 沒有賦值所以值是不確定的 return 0 程式結果是什麼?這裡簡單解釋一下 由於union型別是共享記憶體,也就是說字元陣列i和int型別變數k共享這一記憶體的資料...