Borrar filtros
Borrar filtros

solving non linear equation

2 visualizaciones (últimos 30 días)
RAFFAELE CANTERI
RAFFAELE CANTERI el 20 de En. de 2021
Respondida: Yash el 13 de Feb. de 2024
for i = 1:10
vv = vectorize('(tpiu)*((S/(2*xpiu))+((S/(4*xpiu))*sqrt(1+16*((S/xpiu)^2)))+((1/16)*log((4*S/xpiu)+sqrt(1+16*(S/xpiu)^2))))-t');
myfun = @(S,t) (tpiu).*((S./(2.*xpiu))+((S./(4.*xpiu)).*sqrt(1+16.*((S./xpiu).^2)))+((1./16).*log((4.*S./xpiu)+sqrt(1+16.*(S./xpiu).^2))))-t;
t = linspace(0, tinj, 20);
for k = 1:numel(t)
S(k) = fzero(@(S) myfun(S,t(k)),0.03);
end
end
I have this code where tinj is a vector with (i) elements and i'd like to exit with a matrix (i, k), but as I wrote the code I only get a vector relative to the last tinj.

Respuestas (1)

Yash
Yash el 13 de Feb. de 2024
To obtain a matrix (i, k) instead of a vector, you can preallocate the matrix S before the loop and assign the values inside the loop. Since you have not provided your complete code, you may refer to the below snippet and make the changes accordingly in your code.
S = zeros(numel(tinj), numel(t)); % Preallocate matrix S with dimensions (numel(tinj), numel(t))
for i = 1:numel(tinj)
t = linspace(0, tinj(i), 20);
for k = 1:numel(t)
S(i, k) = fzero(@(S) myfun(S,t(k)),0.03); % Find the root of myfun(S,t(k)) and store it in S(i, k)
end
end
This will give you a matrix S with dimensions (i, k), where i corresponds to the elements of tinj and k corresponds to the elements of t.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by