Change a variable in a function.

10 次查看(过去 30 天)
Anas Albizreh
Anas Albizreh 2019-11-28
评论: Nicolas B. 2019-11-29
Im using the fsolve function inside a loop and there is an integer inside the fsolve function that will change the solution of the fsolve, i want to increment that number each time the loop is conducted, i defined the term in global and gave it a value of 1 intially, then i tried using A=A+1 inside the loop but the fsolve gave me the final answer only to that equation and i tried putting the A=A+1 inside the function but it gave me an error.

回答(1 个)

Nicolas B.
Nicolas B. 2019-11-28
I never tried with global variables but, in your case, I would recommend you to set your A has an input. What I understand, all variables which are not inputs of the function_handle are set as constant in the function_handle when you define it (but I could be wrong). So I would recommand to define your function handle as:
A = 1;
f = @(in1, in2, A) you_function(in1, in2, A);
while your_condition
f(in1, in2, A);
A = A + 1;
end
  9 个评论
Anas Albizreh
Anas Albizreh 2019-11-29
Can you tell me how to do it, i tried doing it but it didn't work.
Nicolas B.
Nicolas B. 2019-11-29
I don't have the optimization toolbox, so I cannot test it, but it should work like that (only the necessary code is shown:
global U Lg L2 L3 L4 L1 Th1 Th2
...
x0 = [deg2rad(145), deg2rad(20)];
x = fsolve(@(x) myfunc(x, A),x0);
...
function F = myfunc(X, A)
global U Lg
thA = X(1);
th2 = X(2);
F(1) = real( U*exp(1i*th2)-A*exp(1i*thA)-Lg );
F(2) = imag( U*exp(1i*th2)-A*exp(1i*thA)-Lg );
end

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Solver Outputs and Iterative Display 的更多信息

产品


版本

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by