0

Ich werde ein inverses Problem, AX=b, mit konjugierten Gradientenmethode in MATLAB lösen. Ich möchte pcg Funktion in MATLAB verwenden und wie ich weiß, anstelle von Matrix A kann ich eine Funktion verwenden.Verwendung von pcg mit einer Funktion in MATLAB

Ich habe eine Funktion zum Beispiel afun, die einige Einträge hat. In den Dokumenten habe ich gesehen, dass die afun Funktion in pcg Funktion ohne Einträge eingegeben wird, aber wenn ich das gleiche mache, erscheint der Fehler not enough input arguments. Ich benutze einen Code wie folgt:

b = afun(ent1,ent2); 
x = pcg(@afun,b,tol,max_iter); 

Wie soll ich meine Funktion in pcg verwenden?

Antwort

0

Gemäß der Dokumentation sollte die Funktion Handle die Signatur afun(x) haben und A*x zurückgeben.

Ihre Funktion nimmt offenbar zwei Eingänge ... Sie müssen eine anonyme Funktion verwenden, um den Anruf wickeln, so etwas wie:

% I dont know what these ent1/ent2 represent exactly, 
% so you must complete the ".." part first 
fcn = @(x) afun(x, ..) 

% now you can call PCG 
x = pcg(fcn, b, tol, maxiter); 

Es gibt eine doc-Seite erklärt, wie man parameterize functions zusätzliche args passieren mit function handles.

Verwandte Themen