2016-09-24 3 views
-1

matlabでプログラミングするのは初めてです。私は現在、多変数関数の重要な値を見つけて、それぞれが最小、最大、または鞍点かどうかを教えてくれるMATLABプログラムを作成しようとしています。残念ながら私は常にエラーが発生します:複数のLHS割り当ての配列にはLEX_TS_STRINGを含めることはできません複数のLHS割り当ての配列にLEX_TS_STRINGエラーを含めることはできません

何か助けになるでしょう。

はここのコードです:

function [c,d] = critcalpoints(f) 

syms x y 
f(x,y)=x^3-3*x^2+5*x*y-7*y^2; 
gradf = jacobian(f(x,y)); 
hessmatf = jacobian(gradf,[x,y]); 
[xcr,ycr]=solve(gradf(1),gradf(2)); 
H1=subs(hessmatf,[x,y],[xcr(1),ycr(1)]); 
H2=subs(hessmatf,[x,y],[xcr(2),ycr(2)]); 
eig(H1); 
eig(H2); 
c = double(eig(H1)); 
d = double(eig(H2)); 
if (c(1) > 0 && d(1) > 0) || (c(2) > 0 && d(2) > 0) 
print([xcr,ycr],' is a minimum') 
elseif (c(1) < 0 && d(1) < 0) || (c(2) < 0 && d(2) < 0) 
print([xcr, ycr], ' is a maximum') 
elseif (c(1) < 0 && d(1) > 0) || (c(1) > 0 && d(1) < 0) 
print([xcr, ycr], ' is a saddle point') 
elseif (c(2) < 0 && d(2) > 0) || (c(2) > 0 && d(2) < 0) 
print([xcr, ycr], ' is a saddle point') 
elseif (c(1)==0 || d(1)==0) 
print([xcr, ycr], ' is degenerate') 
elseif (c(2)==0 || d(2)==0) 
print([xcr, ycr], ' is degenerate') 
end 

答えて

0

があなたのエラーを再現することはできません。コードは正常に動作しますが、printは別のものに変更する必要があります。printは、そう思わないものです。 print関数は、ファイルに開かれたFigureを出力します。 xcrycrを最初に表示し、その後に満足する条件を表示するように変更します。代わりにdispを使用してください:

syms x y 
f(x,y)=x^3-3*x^2+5*x*y-7*y^2; 
gradf = jacobian(f(x,y)); 
hessmatf = jacobian(gradf,[x,y]); 
[xcr,ycr]=solve(gradf(1),gradf(2)); 
H1=subs(hessmatf,[x,y],[xcr(1),ycr(1)]); 
H2=subs(hessmatf,[x,y],[xcr(2),ycr(2)]); 
eig(H1); 
eig(H2); 
c = double(eig(H1)); 
d = double(eig(H2)); 
disp([xcr, ycr]); % Display the solutions first 

if (c(1) > 0 && d(1) > 0) || (c(2) > 0 && d(2) > 0) 
disp('is a minimum') 
elseif (c(1) < 0 && d(1) < 0) || (c(2) < 0 && d(2) < 0) 
disp('is a maximum') 
elseif (c(1) < 0 && d(1) > 0) || (c(1) > 0 && d(1) < 0) 
disp('is a saddle point') 
elseif (c(2) < 0 && d(2) > 0) || (c(2) > 0 && d(2) < 0) 
disp('is a saddle point') 
elseif (c(1)==0 || d(1)==0) 
disp('is degenerate') 
elseif (c(2)==0 || d(2)==0) 
disp('is degenerate') 
end 

私が手:

[  0,  0] 
[ 59/42, 295/588] 

is a maximum 
関連する問題