вычисление системы произвольных уравнений в octave(matlab)

я пишу универсальный скрипт для решения определённых задач и столкнулся с проблемой, я получаю набор функций(которые можно составить в систему уравнений) и хочу найти все переменные которые возможно, как это сделать? вот пример моего кода:

pkg load symbolic

% запишите значения из дано, а если значение не известно обозначте его как []
g_c = 9.8;
Va_c = [];
Vb_c = [];
_a_c = pi/6;
l_c = [];
tb_c = 0.5;
tc_c = [];
f_c = 0.1;
d_c = 2;
h_c = 3;
_b_c = [];

syms N0 m _a f g t tb tc Va C1 C2 C3 C4 C5 C6 real;
Ftr = f*N0;

Fx1 = m*g*sin(_a) - Ftr;%     <- укажите все силы в проэкции на ость x1 влияющие на тело на участке AB, для силы трения используйте `Ftr` а для силы реакции опоры используйте `N0`
Fy1 = m*g*cos(_a) - N0;%      <- укажите все силы в проэкции на ость y1 влияющие на тело на участке AB, для силы трения используйте `Ftr` а для силы реакции опоры используйте `N0`

x1_0 = 0;
dx1_0 = Va;

ddx1 =  Fx1/m;
ddy1 =  Fy1/m;
N = solve(0 == ddy1, N0);

w = simplify(subs(ddx1, N0, N));
ddx1 = w;
dx1 = int(ddx1, t) + C1;
x1 = int(dx1, t) + C2;

C1f = solve(dx1_0 == dx1, C1);
C1f = subs(C1f, t, 0);
C2f = solve(x1_0 == x1, C2);
C2f = subs(C2f, t, 0);
dx1 = subs(dx1, C1, C1f);
x1 = subs(x1, C1, C1f);
x1 = subs(x1, C2, C2f)

l = subs(x1, t, tb);
Vb = subs(dx1, t, tb);

ddx = 0;%       <- укажите все силы в проэкции на ость x1 влияющие на тело на участке BC
ddy = -g;%      <- укажите все силы в проэкции на ость y1 влияющие на тело на участке BC

x_0 = 0;
dx_0 = Vb*cos(_a);
y_0 = 0;
dy_0 = Vb*sin(_a);

dx = int(ddx, t) + C3;
x = int(dx, t) + C4;

C3f = solve(dx_0 == dx, C3);
C3f = subs(C3f, t, 0);
C4f = solve(x_0 == x, C4);
C4f = subs(C4f, t, 0);
x = subs(x, C3, C3f);
x = subs(x, C4, C4f)

dy = int(ddy, t) + C5;
y = int(dy, t) + C6;

C5f = solve(dy_0 == dy, C5);
C5f = subs(C5f, t, 0);
C6f = solve(y_0 == y, C6);
C6f = subs(C6f, t, 0);
y = subs(y, C5, C5f);
y = subs(y, C6, C6f)

h = -subs(y, t, tc);
d = subs(x, t, tc);
_b = atan(h/d);
fprintf("[=============]\n");

foo =   {l,   Vb,   h,   d  , _b  };
foo_c = {l_c, Vb_c, h_c, d_c, _b_c};
foo_s = {"l", "Vb", "h", "d", "_b"};

v =   {g,   tb,   f,   _a,   Va,   tc  };
v_c = {g_c, tb_c, f_c, _a_c, Va_c, tc_c};
v_s = {"g", "tb", "f", "_a", "Va", "tc"};

for k = 1:length(foo)
    for i = 1:length(foo)
        for j = 1:length(v)
            if ~isempty(v_c{j})
                foo{i} = subs(foo{i}, v{j}, sym(v_c{j}, 'r'));
            end
        end
    end

    for i = 1:length(foo)
        if isempty(foo_c{i})
            try
                foo_c{i} = double(foo{i});
                fprintf("%s = %f\n", foo_s{i}, foo_c{i});
            catch e
            end
        else
            for j = 1:length(v)
                if isempty(v_c{j})
                    try
                        v_c{j} = double(solve(foo_c{i} == foo{i}, v{j}));
                        fprintf("%s = %f\n",v_s{j}, v_c{j});
                    catch e
                    end
                end
            end
        end
    end
end

необходимая система уравнений выглядит примерно так:

l = l_c
Vb = Vb_c
h = h_c
d = d_c
_b = _b_c

Ответы (0 шт):