I have two equations with two variables each is a function of another, so I'm using ''fsolve'' for solving two nonlinear equations. but if I have an equation with a specific constant which I want to give it a range (e.g. 1:50)
2 次查看(过去 30 天)
显示 更早的评论
function F = root2d(x,n)
F(1)= x(1)-1+((1-x(2))^n);
F(2)= (x(2)*(33*(1-2*x(1))+32*x(1)*(1-(2*x(1))^3)))-2*(1-(2*x(1)));
%%%%%%%
I want to obtain the values of two variables x(1),x(2) at each value of n which takes a range (i.e. 1--->50).
How can I do that?
采纳的回答
Stephan
2018-9-3
Hi,
i guess you are searching for this (rename the outer function or save it as some_stuff_with_n.m in your matlab search path:
function some_stuff_with_n
sol = zeros(50,2);
for k = 1:50
n = k;
sol(k,1:2) = fsolve(@root2d,[1, 1]);
end
function F = root2d(x,~)
F(1) = x(1)-1+((1-x(2))^n);
F(2) = (x(2)*(33*(1-2*x(1))+32*x(1)*(1-(2*x(1))^3)))-2*(1-(2*x(1)));
end
end
This calculates the function root2d 50x for n=1...50, calculates the x(1) and x(2) values corresponding to this n and saves it in the variable you want. Use:
sol = some_stuff_with_n
to call it.
Best regards
Stephan
7 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Systems of Nonlinear Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!