/ / ako definovať symbolickú a numerickú funkciu v matlab - matlab

ako definovať symbolické a numerické funkcie v MATLAB - MATLAB

Chcem písať funkciu, ako je sqrt v matlab čarodejnice, či som prejsť symbol alebo odovzdať číselnú hodnotu návratu, ako je tento kód:

>> syms x;
>> y = sqrt(x)

y =

x^(1/2)

>> y = sqrt(4)

y =

2

moja funkcia je:

function [ y ] = fx(x)

if -1<=x && x<=0
y=-2;
elseif 2<=x && x<=3
y=2;
else
y=0;
end
end

v skutočnosti chcem, aby moja funkcia bola aj symbolická

odpovede:

1 pre odpoveď č. 1

Môžete skontrolovať triedu svojich vstupov pomocou isnumeric a ISA (x, "sym"), Možno budete potrebovať isfloat a môžete tiež chcieť zistiť symbolické funkcie ISA (x, "symfun"), Takže príklad sqrt funkcia môže vyzerať takto:

function y=sqrt(x)
if isfloat(x)
y = sqrt(x);
elseif isa(x,"sym")
y = sqrt(x); % Same but this might be something else
else
error("sort:InvalidDatatype","Input must be floating point or symbolic.");
end

Samozrejme Matlab "s sqrt už funguje dobre pre pohyblivé čiarky asymbolické vstupy. V skutočnosti používa inú schému, ktorú by ste mohli tiež použiť: preťaženie vytvorením samostatných funkcií pre každú triedu a vložením každého do priečinka @classname (napr. @Double alebo @sym) na ceste.