2017-12-01 5 views
-1

Ich habe ein Problem mit der unten gezeigten Gleichung. Ich möchte einen Vektor in t2 eingeben und die Wurzeln der Gleichung aus verschiedenen Werten in t2 finden."Lösen" Befehl mit einem Vektor in Matlab

t2=[10:10:100] 
syms x 
p = x^3 + 3*x - t2; 
R = solve(p,x) 
R1 = vpa(R) 

Antwort

0

Test >> syms xp

Test >> Equs = p == x^3 + 3 * x - T2

Es ist nicht bekannt, dass man eine Gleichung oder ein System lösen wollen . Angenommen, Sie möchten ein System lösen.

Test >> SOLX = lösen (Gleichungen, x)

Aber ich glaube nicht, Sie Wurzeln finden. Sie können eine Gleichung lösen.

Test >> SOLX = lösen (Gleichungen (3), x)

Soweit ich weiß, kann Maple diesen Teig tun.

0

Im Allgemeinen sollten Schleifen vermieden werden, aber dies ist die einzige Lösung, die mein Gehirn im Moment trifft.

t2=[10:10:100]; 
    pp=repmat([1,0,3,0],[10,1]); 
    pp(:,4)=-t2; 
    for i=1:10 
    R(i,:) =roots(pp(i,:))'; 
    end 
0

ich versuchte, den Hinweis, aber mit dem folgenden Code anzeigt, den Wert 30 in t2, werden nicht alle Werte im Array. In diesem Fall wollte ich verschiedene Werte der Wurzeln für t2 = 10, t2 = 20, t2 = 30 ... Sukzessiv.

t2=[10:10:1000] 
syms x p 
EQUS = p == x^3 + 3*x - t2 
solx = solve(EQUS,x) 
solx = solve(EQUS(3),x) 
z = vpa(solx) 
1

Einfach! Verwenden Sie syms nicht und verwenden the general formula:

t2 = [10:10:100]; 

%p = x^3 + 3*x - t2; 
a = 1; 
b = 0; 
c = 3; 
d = -t2; 

D0 = b*b - 3*a*c; 
D1 = 2*b^3 - 9*a*b*c + 27*a^2*d; 
C = ((D1+sqrt(D1.^2 - 4*D0.^3))/2).^(1/3); 

C1 = C*1; 
C2 = C*(-1-sqrt(3)*1i)/2; 
C3 = C*(-1+sqrt(3)*1i)/2; 

f = -1/(3*a); 
x1 = f*(b + C1 + D0./C1); 
x2 = f*(b + C2 + D0./C2); 
x3 = f*(b + C3 + D0./C3); 

Seit b = 0, können Sie diese ein wenig vereinfachen:

% ... polynomial is the same 

D0 = -3*a*c; 
D1 = 27*a^2*d; 

% ... the different C's are the same 

f = -1/(3*a); 
x1 = f*(C1 + D0./C1); 
x2 = f*(C2 + D0./C2); 
x3 = f*(C3 + D0./C3); 
+0

Nizza Befehl, danke! –