Filter löschen
Filter löschen

handles for functions of several variables

12 Ansichten (letzte 30 Tage)
Stina Ravdna Lorås
Stina Ravdna Lorås am 18 Mär. 2021
Im trying to make function handles that make it possible to calculate functions with different values for x1 and x2, but I cannot make it work. Please help?
(This is not the entire code, and it is split into two files)
syms x1 x2
x0 = [-1; -1];
f = @f_function;
J = @J_function;
X = NewtonsMethod(f, J, x0, lim, N)
function f = f_function(x)
f=[(x1*x2-2);
((x1.^4/4) + (x2.^3/3) -1)];
end
function J = J_function(x)
J = jacobian(f, [x1,x2]);
end
File:NewtonsMethod
xn = x0; % initial estimate
n = 1; % iteration number
fn = f(xn); % save calculation
iterate = norm(fn,Inf) > tol;
while iterate
xn = xn - J(xn)\fn;
n = n+1;
X(:,n) = xn;
fn = f(xn);

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 19 Mär. 2021
syms x1 x2
x0 = [-1; -1];
fsym = f_function(x1,x2);
f = matlabFunction(fsym, 'vars', {[x1, x2]})
f = function_handle with value:
@(in1)[in1(:,1).*in1(:,2)-2.0;in1(:,1).^4./4.0+in1(:,2).^3./3.0-1.0]
J = matlabFunction(jacobian(fsym), 'vars', {[x1, x2]})
J = function_handle with value:
@(in1)reshape([in1(:,2),in1(:,1).^3,in1(:,1),in1(:,2).^2],[2,2])
X = NewtonsMethod(f, J, x0, lim, N)
Unrecognized function or variable 'lim'.
function f = f_function(x1,x2)
f=[(x1*x2-2);
((x1.^4/4) + (x2.^3/3) -1)];
end

Weitere Antworten (1)

Jan
Jan am 18 Mär. 2021
Bearbeitet: Jan am 18 Mär. 2021
Do you get an error message?
What is x1 and x2 in your functions "f_function" and "J_function"? Do you mean: x(1) and x(2) ?
Be careful with the unary minus in vectors:
f=[(x1*x2-2);
((x1.^4/4) + (x2.^3/3) -1)];
% ^
This can confuse the parser. See:
[1 1] % [1, -1]
[1 -1] % [1, -1]
[1 - 1] % [2]
  2 Kommentare
Stina Ravdna Lorås
Stina Ravdna Lorås am 19 Mär. 2021
x1 and x2 is x(1) and x(2) = x.
I used parathesis to avoid the misunderstanding between row or function.
I've now changed my handles into this:
f = @(x)[(x(1)*x(2)-2);
((x(1).^4/4)+(x(2).^3/3)-1)];
J = @(x)jacobian(f, x);
But it is still wrong...
Stina Ravdna Lorås
Stina Ravdna Lorås am 19 Mär. 2021
Thank you for answering though! :)

Melden Sie sich an, um zu kommentieren.

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by