vpasolve возвращает пустую переменную sym 0x1, в то время как система явно имеет решение (Matlab) - PullRequest
0 голосов
/ 24 мая 2018

Когда я запускаю этот код, я получаю пустые строки, для которых при установке диапазона для vpasolve, когда я не устанавливаю диапазон, я получаю только одно решение, даже при случайном включении.Диапазон установлен так, что он включает в себя одно решение, которое мне дает matlab, x = 2, y = 0 и b = 1.5.для диапазона я пробовал -Inf Inf и NaN NaN, чтобы он попробовал все числа.Поэтому, пожалуйста, не дайте мне ответа, сказав, что у моей системы нет решения, оно явно есть.Это также не решит это символически (та же самая проблема с решает), в то время как я могу дать 1 возможное решение0,5 * (x + y) = 1, b * (x + y) = 3 ---> x + y = 2 и b = 1,5

Так что что-то еще должно быть не так, я был бы признателен, если быВы даете мне знать, что я делаю здесь не так.

clear all; %just to be safe
syms x y b 
a=0.5;
somevalue=1;
someothervalue=3;
eq1= a*x+a*y == somevalue; %this is your first equation
eq2= b*x+b*y == someothervalue; %this is your 2nd equation
eqs=[eq1,eq2]; %use this for vpasolve and set range in range
vars=[x,y,b]; %these are the variable you want to solve for
range = [-1 3; -2 5; -Inf Inf]; %NaN means you set no range

%you can use solve or vpasolve, second one being numeric, which is the one you'll probably want
sol=zeros(5,3);
for i = 1:5 
    temp = vpasolve(eqs, vars, range, 'random', true);
    temp = solve(eqs2, vars);
    sol(i,1) = temp.x;
    sol(i,2) = temp.y;
    sol(i,3) = temp.b;
end
sol
temp1.x 
temp1.y
temp1.b

Теперь у меня есть другая явная проблема / ошибка при использовании опции решения, очевидно, ответ здесь должен быть 9:

syms x
eq12 = -3 == sqrt(x);
solve(eq12)
ans =
Empty sym: 0-by-1

а также:

syms x
eq12 = -3 == (x)^(1/2);
solve(eq12)
ans =
Empty sym: 0-by-1

Очевидно, что ответ здесь будет 9, так что я могу изменить, чтобы позволить Matlab решить эту проблему, и прежде чем вы скажете мне изменить уравнение, это уравнение, которое я хотел бы получитьизменить вручную, и не один раз, а 100 раз или около того.

Точнее, мне нужно решить что-то более сложное, имеющее решение;отрицательное и положительное, отрицательное значение физически нереально, но это единственный Matlab, который я могу дать.

              93659574124777211691008 H
H + ---------------------------------------------
    1208925819614629174706176 H + 762832192176831
              1
   == -----------------
      100000000000000 H
                             29250045579840375 #1
   - --------------------------------------------------------------------
     H (922337203685477580800 H + 927343445063259249) 4611686018427387904
                                                   2
                            12879770070323045125 #1
   + ----------------------------------------------------------------------
                                                                          2
     55340232221128654848 H (922337203685477580800 H + 927343445063259249)

, где

                                     /         2
                                     | 181939 H    852912375078609598437 H
   #1 == 9223372036854775808 H - sqrt| --------- + -----------------------
                                     \    5539     25544128856069301600256
                                               \
           39917248404619332215368770561441    |
      + -------------------------------------- | 9223372036854775808 + 6318009845245521
        85070591730234615865843651857942052864 /

Проблема заключается в том, что минус перед sqrt я предполагаю

...