hallo,
ich habe hier eine bestapproximation, die ich gerne in matlab umsetzen möchte. in mathematica ist das schon soweit eigentlich ganz gut geworden, allerdings zickt matlab aus verschiedenen gründen rum. ein grund scheint mir numerische instabilität zu sein. jedenfalls sind die ergebnisse alles andere als brauchbar und evtl kann jemand mal einen blick darauf werfen und mir sagen, ob das prinzipiell ok ist, oder wo da starker verbesserungsbedarf besteht.
xa = -2 ; % die funktion soll von xa bis xb approximiert werden
xb = 2 ; % wobei sie selbst nur einen träger haben soll auf dem % intervall [-1,1]
n=50; %Number of approximating Gaussians
sigma = (xb-xa)/(2*n) %Variance
tol=10e-20; %Toleranz bei quadl
%das folgende ist ein beispiel für eine diskretisierte, zu approximierende funktion, hier die charakteristische fkt von [-1,1]
%for k = 1:1:num_samples
% if(abs(x(k))<a) modo(k) = A; % else modo(k)=0; % end
%end
%festlegung der erwartungswerte (bzw zentren)
for k=1:1:n
mu(k)=xa-(1-k)/(n-1)*(xb-xa);
%mu(k) = xa+(xb-xa)*(2*k-1)/(2*n);
end
%allgemein hier die definition der einzelnen gaussfunktionen
% for k=1:1:n % Gauss=@(k) (@(z) exp(-(z-mu(k))^.2 /sigma^2) ); % end
%definition der integranden für die einträge der gram-matrix
for k=1:1:n
for m=1:1:n
Gram(k,m) =@(z)exp((-(z-mu(k)).^2-(z-mu(m)).^2)/sigma^2);
end end
%F soll komponentenweise aus dem skalarprodukt der k-ten gaussfkt mit der zu approximierenden fkt bestehen (die hier gerade 1 ist), daß sie außerhalb des trägers 0 ist, berücksichtige ich, indem ich nur über den träger integriere
irgendwie scheint die berechnung der gram-matrix nicht wirklich gescheit zu funktionieren. die sieht sehr singulär aus, obwohl sie das nicht sein darf.
könnte das der grund für die probleme sein? falls ja, wie bekomme ich das problem in den griff?
die toleranz habe ich schon sehr hoch und sehr niedrig gesetzt. ohne wirkliche verbesserung. den integrationsbereich habe ich auch hinreichend groß gewählt, denke ich (infinity oder so scheints ja nicht zu tun).
danke im voraus
gruß
daniel
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.