MATLAB中feval函式的用法給個簡單的例子就可以謝謝

時間 2021-09-07 07:07:56

1樓:星域莫生

feval函式的功能是求函式值。

基本使用格式:y=feval(fhandle, x)    %fhandle——函式表示式,x——變數值[y1, y2, ...] = feval(fhandle, x1,...

, xn)

具體例項:myfun=inline('x^3+3*cos(x)+sin(y)','x','y');x=pi;y=pi;a=feval(myfun,x,y)

1、函式

函式在數學上的定義:給定一個非空的數集a,對a施加對應法則f,記作f(a),得到另一數集b,也就是b=f(a).那麼這個關係式就叫函式關係式,簡稱函式.

2、函式有界性

設函式f(x)的定義域為d,數集x包含於d。如果存在數k1,使得f(x)≤k1對任一x∈x都成立,則稱函式f(x)在x上有上界,而k1稱為函式f(x)在x上的一個上界。

2樓:匿名使用者

feval就是把已知的資料或符號帶入到一個定義好的函式控制代碼中,你看看下面的例子

syms t

f=@(x,y) x^2+y^2

k1=feval(f,1,t)

k2=f(1,t)

k3=feval(f,1,1)

k4=f(1,1)

k1 =

t^2 + 1

k2 =

t^2 + 1

k3 =

2k4 =2

3樓:是好不是也好

很簡單的,feval用來計算指定函式在某點的函式值,如a=feval(fun,x),就相當於a=fun(x),如

>>a=feval(@(x)(x^2+1),1)a =2

>> a=feval(@(x)(x^2+1),2)a =5

matlab中@的用法

4樓:

@是用於定義函式控制代碼的操作符。函式控制代碼既是一種變數,可以用於傳參和賦值;也是可以當做函式名一樣使用。

舉例:sin是matlab中的一個函式,但sin只是函式名,還不是函式控制代碼,不可以用於傳參。

f = @sin;

這行**定義了一個函式控制代碼,變數名是f。這樣就可以當做引數傳遞了(這就是上面**中的意義所在),而且還可以跟sin函式按相同的語法規則使用:

g = f; % g也是函式控制代碼,其“值”和f一樣,都代表sin函式y = g(pi); %可以得到y=0

5樓:小宇宙

end就是陣列結尾的意思,從a的第一個元素以3為間隔直到a的結尾。0.8147 、0.9134 和0.2785

6樓:謇桂枝沃雲

^^大致做了一下,希望有所幫助。

function

main()

clc;x=

[233

0.975];%初值

lb=[226

9.9659];%下限

ub=[inf

inf0.9903];%上限

%最優化

[x,feval]

=fmincon(@gearg,x,,

,,,lb,

ub,'gscon')

%目標函式

functionf=

gear(x)f=

9.588*x(1)^3*x(2)^3*x(3)^(-3);

%約束條件

function

[g,q]

=gscon(x)

g(1)

=897641*x(1)^(-3)*x(2)^(-2)*x(3)^2-289;

g(2)

=245555.2*x(1)^(-3)*x(2)^(-2)*x(3)^2

-233;

g(3)

=226953.7*x(1)^(-1.5)*x(2)^(-1.5)*x(3)^(1.5)

-531;

g(4)=16

-0.8*x(2)*x(3)^(-1);

g(5)

=0.8*x(2)*x(3)^(-1)

-35;q=;

matlab 匿名函式

7樓:匿名使用者

matlab是匿名函式。

f = @(x1,x2,x3) x1+x2+x3。

cf = func2str(f); for k = 1:3。

s = ['x' num2str(k)]。

ss = ['x(' num2str(k) ',:)']。

cf = strrep(cf,s,ss)。

end ff = str2func(cf)。

匿名函式:

匿名函式它是matlab中定義的一種函式形式,出現在matlab中,匿名函式不以檔案形式駐留在資料夾上;他的生成方式最簡捷,可在指令窗或任何函式體內通過指令直接生成。

8樓:匿名使用者

匿名函式 出現在 matlab 中。它是matlab中定義的一種函式形式。

函式簡介:匿名函式不以檔案形式駐留在資料夾上;他的生成方式最簡捷,可在指令窗或任何函式體內通過指令直接生成。

匿名函式的作用:主要實現自己定義matlab中的函式,從而擴大函式的使用功能

和行內函數(inline)相比,匿名函式的優越性在於可以直接使用workspace中的變數,不必申明,非常適合嵌入到m檔案中。

%例10-25 匿名函式舉例。

%本例列舉3個匿名函式的例子,分別有0個、1個和兩個輸入引數。

%首先介紹沒有輸入引數的匿名函式,只需用空格代替arglist即可。例如,編寫求解當前時間的匿名函式如下所示。

>> t = @() datestr(now);

t() %函式的呼叫

ans =

14-sep-2004 20:22:50

%值得注意的是,呼叫該函式時,括號不能省略,否則, matlab 7.1將對程式不予計算,如下所示。

>> t

t =@() datestr(now)

>>%再介紹有一個輸入引數的匿名函式,該函式用於求所輸入引數的平方,編制並執行程式如下所示。

>> sqr = @(x) x.^2

sqr =

@(x) x.^2

>> sqr(12)

ans =

144>>

%最後介紹有兩個輸入引數的匿名函式,使用者可以由此推導有多個引數的匿名函式,編制並執行程式如下所示。

>> sumaxby = @(x, y) (14*x + 41*y)

sumaxby =

@(x, y) (14*x + 41*y)

>> sumaxby(3,7)

ans =

329>>

注意這些定義過程,其中@這個標誌符是很重要的。

9樓:卓英媛烏炳

後面的@也一樣啊,同樣的意思

把他拆成兩個函式就是:

fx=@(x)(a.*x.^2+1./a^2),myfhd=@(a)(quad(fx,0,1))

這是matlab的控制代碼函式。你要是檢視quad的幫助就會發現,q=quad(fun,a,b)

中fun需要是一個函式或者函式的控制代碼,所以你第二種寫法是有問題的

10樓:匿名使用者

要搞明白出現這個現象的原因,需要了解inline函式和匿名函式是怎樣工作的。

使用下面的語句定義inline函式:

fx=inline(f);

由於f是sym型別,所以呼叫的實際上是符號數學工具箱的函式sym/inline,該函式將sym物件轉換為char,再呼叫matlab基本系統的inline函式。inline函式可以按照樓主的方式呼叫:

x1=feval(fx,x1);

也可以直接調:

x1=fx(x1);

作用是完全相同的。

匿名函式的定義語法是:

fhandle = @(arglist) expr

等號的右邊包括三部分:

函式控制代碼的符號(@);

參數列arglist(引數之間用逗號分隔,外面加括號);

函式體expr :是一個合法的matlab表示式,用以執行函式所要實現的功能。

等號左邊可以指定一個變數,用以儲存匿名函式的控制代碼以便後面使用,不過在很多情況下,匿名函式經常會在定義時直接使用,而不把它儲存為一個變數。

匿名函式的表示式中可以使用兩種資料:

參數列arglist中列出的變數,這些變數在呼叫的時候才會有具體的資料;

在表示式expr中出現的其它變數。在構造匿名函式的時候,由matlab儲存當前工作區中這些變數的值,然後在呼叫匿名函式的時候使用。需要注意,如果在構造匿名函式之後,表示式裡的變數值變化甚至被清除,都不會影響到已構造的匿名函式,而從另一個角度說,如果希望這些變數值的變化起作用,需要重新構造匿名函式。

另外,如果表示式中存在當前工作區未定義的變數,構造匿名函式的時候並不會報錯,呼叫的時候才會。

接下來,我們來看一下樓主定義的匿名函式是怎樣工作的:

fx=@(x) f;

這樣構造的一個匿名函式fx,其函式體是f,matlab會把當前工作區的變數f的值保留下來——這是一個sym物件(並非樓主所說的字元型),那麼,在呼叫它的時候,就會把這個值作為匿名函式的執行結果返回,所以就出現了樓主所說的現象。

要想讓匿名函式執行f對應的函式表示式,應該這樣定義:

fx=@(x) subs(f);

這樣,就會用匿名函式的輸入引數x代替f表示式中的x,而得到想要的結果。也可以使用以下幾種定義方式:

fx=@(x0) subs(f,x,x0);

fx=@(x0) subs(f,x0);

fx=@(x) subs(f,x);

結果都完全相同。這裡需要說明的是,在匿名函式的表示式中,參數列中的變數處於作用域,如果參數列使用x,則在表示式expr中的x不會被視作符號變數,而是匿名函式的輸入引數。所以,如果表示式中需要用到x,那麼參數列中應使用另一個變數名x0加以區別。

MATLAB中的DEBLANK函式

多瑙的萊茵 deblank函式是用來刪除字串中尾部空格的一個函式。在matlab中輸入help deblank就可以檢視其用法,在裡面都有詳細介紹。matlab處理字串的函式還有 strcmp 比較兩個字串是否完全相等,是,返回真,否則,返回假 strncmp 比較兩個字串前n個字元是否相等,是,返...

matlab怎麼定義函式啊,matlab中怎麼定義一個函式?

matlab中定義函式的方式有以下幾種 1 函式檔案 呼叫函式檔案 定義多個m檔案。呼叫函式檔案 myfile.m clear clcfor x 1 10 y mylfg x end 自定義函式檔案 mylfg.m function y mylfg x 注意 函式名 mylfg 必須與檔名 mylf...

matlab中random函式的用法

飛鷹 y randn n 返回一個n n的隨機項的矩陣。如果n不是個數量,將返回錯誤資訊。y randn m,n 或 y randn m n 返回一個m n的隨機項矩陣。y randn m,n,p,或 y randn m n p.產生隨機陣列 感覺就是三維陣列,請看如下例子 南霸天 random格式...