怎麼用matlab求m檔案中的函式的梯度

2021-05-28 15:30:50 字數 1928 閱讀 9106

1樓:匿名使用者

試試,下面的**,如果xi是實數將eval(['syms ',sx,' ',**])改為eval(['syms ',sx,' ',**,' real']),計算結果可能更簡潔一些,這裡由於不知道

回你的m值,所以也將其引數化答了,你可以將其換為你需要的值。若有問題,可繼續追問

x=;m=;

for i=1:24

sx=['x',num2str(i)];

**=['m',num2str(i)];

eval(['syms ',sx,' ',**])eval(['x=[x,',sx,'];']);

eval(['m=[m,',**,'];']);

endsh=sum(x.^2)/2*1e6;

y=0;

for i=1:length(x)

y=y+sum(x(1:i));

sh=sh+(y-sum(x(1:i))/2)^2*m(i);

endjac=jacobian(sh,x);

jac'

2樓:匿名使用者

舉個例子

syms x y z

f=x^2+x*y+z;

gradient=jacobian(f,[x,y,z])%求梯度%gradient =

%[ 2*x + y, x, 1]

x=-1;y=2;z=3;

tiduzhi=eval(gradient) %求在(-1,2,3)的梯度值

%%tiduzhi =

%% 0 -1 1

對於補充的問題,那就沒什麼函式,你回直接用diff求微分答算了gradient=[diff(f,x),diff(f,y),diff(f,z)]

matlab中怎樣求一個多元函式的梯度?

3樓:匿名使用者

舉個例子

syms x y z

f=x^2+x*y+z;

gradient=jacobian(f,[x,y,z])%求梯度%gradient =

%[ 2*x + y, x, 1]

x=-1;y=2;z=3;

tiduzhi=eval(gradient) %求在(-1,2,3)的梯度值

%%tiduzhi =

%% 0 -1 1

對於補充

的問題,那就沒什麼函式,你直接用diff求微分算了gradient=[diff(f,x),diff(f,y),diff(f,z)]

matlab求梯度

4樓:yyy名

2011b可用

syms x1 x2

f = x1^2+x2^2

gradient(f)

2009a以下,可用

syms x1 x2

f = x1^2+x2^2

[diff(f,x1);diff(f,x2)]

5樓:匿名使用者

syms x

y=(x^2)/2-log(x)

grady=jacobian(y)

x是n維向量是不合適

關於matlab中函式m檔案呼叫m指令碼檔案中某個引數的問題

6樓:真

fun定義

為三個引數比copy如function dy=fun(t,y,p)%p就是bai那個引數

在主程式中當du確定了p值後,定義zhi一個臨時函式比如daof=@(t,y)fun(t,y,p);

然後ode45用f求解,比如[t,y]=ode45(f,[0 20],0)

7樓:匿名使用者

若那個m檔案不復雜 複製到fun函式就好 或者做一個行內函數呼叫

matlab怎麼呼叫m檔案中的函式

將兩個m檔案放在同一目錄,在第一個m檔案裡面直接輸入第二個m檔案的函式名稱即可 輸出1,輸出2,函式名稱 變數1,變數2,matlab是美國mathworks公司出品的商業數學軟體,用於演算法開發 資料視覺化 資料分析以及數值計算的高階技術計算語言和互動式環境,主要包括matlab和simulink...

如何能把MATLAB中的M檔案弄成模組,在SIMULIN

在simulink user defined function裡面有各種可以呼叫的自定義函式,其中embedded matlab function m file s function s function等等又可以實現m檔案被simulink所呼叫。內如果你容是初學者,不妨使用embedded ma...

在matlab的m檔案中,輸不輸入分號有什麼區別

執行matlab程式的時候,程式中變數的值會自動儲存在 workspace中。程式命 令後面輸回入答與不輸入 的區別是,當輸入半形的分號時,命令中的變數會自動列表儲存在 workspace中,變數的值不會在window mand中顯示出來 當不輸入半形的分號時,變數不僅也會自動儲存在workspac...