Bonjour,

j´ai écrit le code suivant pour résoudre une équation basique. Mais le fait est qu´il est extrêmement lent. Quelqu´un aurait-il une solution pour l´optimiser ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
function [ result ] = SolveEq( data )
%SOLVEEQ Summary of this function goes here
%   Detailed explanation goes here
syms x
[l,~] = size(data);
result = zeros(l,1);
 
for i = 1:1:l
result(i,1) = solve(sprintf('(x+50)/(x-50)=%.5d',data(i,1)));
end
 
end
D´autre part mon principal probleme est que le vecteur data contient un nombre complexe et si j´essaye ce code là :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
result(i,1) = solve(sprintf('(x+50)/(x-50)=%8.3f + %8.3f*1i',real(data(i,1)),imag(data(i,1))));
j´obtiens l´erreur suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
??? Error using ==> solve>getEqns at 178
' (x+50)/(x-50)=   0.927 +    0.148*1i ' is not a valid expression or equation.
 
Error in ==> solve at 67
[eqns,vars] = getEqns(varargin{:});
La fonction solve ne peut elle résoudre des équations complexes ?


MATLAB Version 7.9.0.529 (R2009b)