首页 > 解决方案 > matlab显示表格格式的问题

问题描述

图片 我厌倦了像上面提到的那样显示价值f(x,y)和结论,但它似乎不起作用。这是我的代码

%% displaying table
clc
clear all
syms x y
f(x,y)=x^3-3*x*y+y^3;
fx=diff(f,x);
fy=diff(f,y);
fxx=diff(fx,x);
fyy=diff(fy,y);
fxy=diff(fx,y);
D=(fxx*fyy)-(fxy)^2;
eqns=[fx==0,fy==0];
vars=[x y];
[sol_x sol_y]=solve(fx==0,fy==0,'Real',true);
conclusion={};
f_val=[];
for i=1:length(sol_x)
    if( subs(D,{x,y},{sol_x(i),sol_y(i)})>0 && subs(fxx,{x,y},{sol_x(i),sol_y(i)})>0 )
        conclusion{end+1}='min';
        f_val(end+1)=f(sol_x(i),sol_y(i));
    elseif(subs(D,{x,y},{sol_x(i),sol_y(i)})>0 && subs(fxx,{x,y},{sol_x(i),sol_y(i)})<0)
        conclusion{end+1}='max';
        f_val(end+1)=f(sol_x(i),sol_y(i));
    elseif(subs(D,{x,y},{sol_x(i),sol_y(i)})<0)
        conclusion{end+1}='saddle';
        f_val(end+1)=f(sol_x(i),sol_y(i));
    else
        conclusion{end+1}='undetermine';
        f_val(end+1)=f(sol_x(i),sol_y(i));
    end
end
conclusion'
f_val'
result=[num2cell(f_val') conclusion']
f = figure;
uit = uitable(f,'ColumnName',{'function value'; 'conclusion'},'Data',result);

这给了我输出

图2

我很困惑如何(1,2)Critical points列中显示关键点。我的意思是如何编码以显示图片中的表格。有没有更好的方法来编码?

标签: matlab

解决方案


正如@Spri4L 建议的如何显示点。为避免subs您可以将其设为匿名函数。

clc
clear all
syms x y
f=@(x,y)x.^3-3.*x.*y+y.^3;
fxx(x,y)=diff(diff(f,x),x);
fyy(x,y)=diff(diff(f,y),y);
fxy(x,y)=diff(diff(f,x),y);
D(x,y)=fxx*fyy-(fxy).^2;
conclusion={};
f_val=[];
D_val=[];
fxx_val=[];
points={};
[solx,soly]=solve(diff(f,x)==0,diff(f,y)==0,'Real',true);
for i=1:length(solx)
    if(D(solx(i),soly(i))>0 && fxx(solx(i),soly(i))>0)
        conclusion{end+1}='   min';
    elseif(D(solx(i),soly(i))>0 && fxx(solx(i),soly(i))<0)
        conclusion{end+1}='   max';
    elseif(D(solx(i),soly(i))<0)
        conclusion{end+1}='   saddle';
    else
        conclusion{end+1}='   undetermine';
    end
    points{end+1} = ['(',num2str(double(solx(i))), ',', num2str(double(soly(i))), ')'];
    f_val(end+1)=f(solx(i),soly(i));
    fxx_val(end+1)=fxx(solx(i),soly(i));
    D_val(end+1)=D(solx(i),soly(i));
end
result=[points' num2cell(f_val') num2cell(fxx_val') num2cell(D_val') conclusion'];
f=figure;
uit=uitable(f,'ColumnName',{'points';'value of f'; 'fxx'; 'D'; 'conclusion';},'Data',result);

推荐阅读