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格式...