Unrecognized function or variable 'x'.
조회 수: 2 (최근 30일)
이전 댓글 표시
I am having a difficult time understanding how to define "x" in this scenario.
Here's the Problem:

Here's my code:
%%%%% Problem 3.13 %%%%%
xi = 1; % given initial x value
yi = 1; % given initial y value
e = 0.001; % error/tolerance
i_max = 5; % max number of iterations
f1 = @(x,y) -2*x^3 + 3*y^2 + 42; % function 1
f2 = @(x,y) 5*x^2 + 3*y^3 - 69; % function 2
d_f1x = diff(f1,x); %partial derivative of f1 wrt x
d_f1y = diff(f1,y); %partial derivative of f1 wrt y
d_f2x = diff(f2,x); %partial derivative of f2 wrt x
d_f2y = diff(f2,y); %partial derivative of f2 wrt y
%Jacobian
J = @(x,y) -60*x*y - 54*x^2*y^2;
for i = 1:i_max
Ji = J(xi, yi);
del_x = (-f1(xi,yi)*d_f2y(yi) + f2(xi,yi)*d_f1y(yi))/Ji; %delta x
del_y = (-f2(xi,yi)*d_f1x(xi) + f1(xi,yi)*d_f2x(yi))/Ji; %delta y
x1 = xi + del_x;
y1 = yi + del_y;
e_x = abs((x1-xi)/xi);
e_y = abs((y1-yi)/yi);
if e_x < e & e_y < e
break
else
xi = x1;
yi = y1;
end
end
%x_Newton = []
%y_Newton = []
I get the error :
Unrecognized function or variable 'x'.
Error in solution (line 51)
d_f1x = diff(f1,x); %partial derivative of f1 wrt x
댓글 수: 0
답변 (1개)
Alan Stevens
2020년 9월 16일
To avoid your error message simply specify the derivatives directly (they are easy to obtain from polynomials). With both initial guesses at 1 the system diverges (perhaps that's why you are told only to do 5 iterations!). Setting y = -1 allows the system to converge). Try the following (modify as you see fit):
%%%%% Problem 3.13 %%%%%
xi = 1; % given initial x value
yi = -1; % given initial y value (diverges if both x and y = 1)
i_max = 5; % max number of iterations (use 7 iterations to get f1, f2 = 0)
f1 = @(x,y) -2*x^3 + 3*y^2 + 42; % function 1
f2 = @(x,y) 5*x^2 + 3*y^3 - 69; % function 2
d_f1x = @(x) -6*x.^2; %partial derivative of f1 wrt x
d_f1y = @(y) 6*y; %partial derivative of f1 wrt y
d_f2x = @(x) 10*x; %partial derivative of f2 wrt x
d_f2y = @(y) 9*y.^2; %partial derivative of f2 wrt y
%Jacobian
J = @(x,y) [d_f1x(x) d_f1y(y);
d_f2x(x) d_f2y(y)];
F = @(x,y) [f1(x,y);
f2(x,y)];
for i = 1:i_max
Ji = J(xi, yi);
Fi = F(xi, yi);
del = Ji\Fi;
xy = [xi;yi] - del;
xi = xy(1);
yi = xy(2);
end
disp([xi yi])
disp([f1(xi,yi) f2(xi,yi)])
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Elements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!