2016-02-17 5 views
0

У меня есть 4 уравнения, и я знаю x и y и ans1 для ans4. но я хочу, чтобы Matlab решил эти 4 уравнения и дал мне a, b, c, d. что мне делать?Как решить многоуровневое уравнение с известной и нековатой переменной в matlab

ans1 = I(x,y); 
    ans2=I(x+1,y); 
    ans3=I(x,y+1); 
    ans4=I(x+1,y+1); 

a*x+b*y+c*x*y+d==ans1 
a*(x+1)+b*y+c*(x+1)*y+d==ans2 
a*x+b(y+1)+c*x*(y+1)+d==ans3 
a*(x+1)+b*(y+1)+c*(x+1)*(y+1)+d==ans4 
+0

Боковое замечание: не используйте MATLAB для этой задачи, но Mathematica, если у вас есть к ней доступ. – rst

+0

@RobertStettler, но это код обработки изображений, и нельзя использовать другое приложение. как насчет использования преобразователя строк в число, чтобы указать matlab x, является числовым и не является пассивным? – patra

+0

@patra У меня вопрос не возникает. Когда вы говорите, что вы «знаете» 'ans1' для' ans4', значит ли это, что мы можем рассматривать их как константы? или 'I' в этом случае является некоторой известной функцией' x' и 'y'? не ясно. если 'ans1',' ans2', 'ans3',' ans4' и 'x' и' y' являются константами, то это просто решение простой линейной системы –

ответ

2

Путь вопрос сформулирован, я думаю, что ответ

[x y x*y 1; (x+1) y (x+1)*y 1; x (y+1) x*(y+1) 1; (x+1) (y+1) (x+1)*(y+1) 1]*[a b c d]'=[ans1 ans2 ans3 ans4]' 

Или

A = [x  y  x*y   1 
    (x+1) y  (x+1)*y  1 
    x  (y+1) x*(y+1)  1 
    (x+1) (y+1) (x+1)*(y+1) 1]; 

x = [a 
    b 
    c 
    d]; 

b = [ans1 
    ans2 
    ans3 
    ans4]; 

A*x == b; 

значит решить для x:

[x y x*y 1; (x+1) y (x+1)*y 1; x (y+1) x*(y+1) 1; (x+1) (y+1) (x+1)*(y+1) 1]\[ans1 ans2 ans3 ans4]' 

Или

A\b;