2016-04-02 7 views
3

У меня есть система, которая выглядит примерно так:Matlab обратного преобразования (не линейная) система

z1 = 5*x1 + x2*cos(x3) 
z2 = x1*sin(x3) + 3*x2 
z3 = 3*x1 - 2*x2 

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

x1 = ...(stuff with z1, z2, z3)... 
x2 = ... 
x3 = ... 

теперь я предполагаю, что с помощью этой системы относительно легко найти его вручную, но я должен сделать то же самое с 7 переменными 7, и было бы довольно утомительно.
Я не могу найти способ заставить Matlab сделать это, может ли кто-нибудь помочь?

+0

Я не думаю, что в большинстве случаев это неизбежно математически возможно. Даже с помощью только одного уравнения, такого как 'z1 = cos (x1)', вы не можете найти функцию 'x1 = f (z1)', потому что в исходном уравнении многие значения 'x1' дают одинаковое значение' z1'. (т. е. cos (0) = 1 и cos (2 * pi) = 1) –

+0

Очень верно, но в этом случае 'x1, x2 ...' и 'z1, z2 ...' не имеют определенного значения, поэтому вы может найти обратную функцию, она может иметь другой домен. Также я предполагаю, что, поскольку все они являются динамикой физической системы, всегда нужно найти обратное, иначе вы бы тормозили физику ... – Skipjack3

ответ

0

Может быть, это может работать:

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

Гаусса может быть сделано с помощью Rref в Matlab, если проблема может быть поставлен на виде (с использованием случайных чисел):

х + 3y + 4z = 5

2x + у + 6z = 4

8x + 2y + 7z = 3

Тогда Ах = Ь, а = [1 3 4; 2 1 6; 8 2 7], Ь = [5; 4; 3]

К найти x do: E = [A b] x = rref (E)

EDIT: Извините, теперь я вижу, что у вас нет номеров для z1, z2 .. так что это не решение для вашего дела.