Matlab,无法将sym变为双

时间:2018-04-09 04:20:22

标签: matlab

我正在尝试解决方程中的变量(syms x),我已经简化了方程式。我试图将值存储在P_9,1x1000矩阵,通过从符号转换为double,我得到下面的错误。它给我一个0x0的符号,这是我认为我的错误所在。

请帮我解决我的代码问题。非常感谢!

number = 1000;
P_9 = zeros(1,number);
A_t=0.67;
A_e = linspace(0,10,number);


for n=1:number
    %% find p9
    syms x
    eqn = x + 5 == A_t/A_e(n);
    solx = solve(eqn,x);

    P_9(n) = double(solx);
end 

警告:找不到明确的解决方案。

  

在179处解决     在HW4在74   在赋值A(I)= B中,B和I中的元素数必须相同。

HW4出错(第76行)     P_9(n)= double(solx);

1 个答案:

答案 0 :(得分:1)

你当然有一个等式,x无法隔离。

例如,在tan(x) + x == 1中隔离x是不可能的。因此,如果你尝试解析这个方程,matlab会告诉你x不能被隔离,因此没有明确的解析解。

因此,您不需要使用分析方法来解决方程式,而是需要使用数值方法,而不是“性感”和#34;但这次你将能够解决你的等式。

生活做得很好,matlab已经集成了一个数值求解器:vpasolve

所以你的代码看起来像是:

for n=1:number
    %% find p9
    syms x
    eqn = x + 5 == A_t/A_e(n); 
    solx = vpasolve(eqn,x);
    P_9(n) = double(solx);
end