Два неизвестных 3 уравнения

#math #linear-equation

#математика #линейное уравнение

Вопрос:

У меня есть 3 уравнения и 2 неизвестных Hb и Hbo2, они выглядят следующим образом:

Bxy = AB * HB AB * Hbo2

Rxy = AR * HB AR * Hbo2

Gxy = AG * HB AG * Hbo2

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

Кто-нибудь здесь знает, как решить n число уравнений с n-1 неизвестными.

Редактировать

Спасибо за ответы, они были замечательными.

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

Rxy, Gxy и Bxy, красный, зеленый или синий поглощаются в позиции x, y. (значение от 0 до 255)

AR, AG, AB — коэффициент поглощения света для красного геена и синих длин волн для крови. (ОДНАКО есть вероятность, что мне, возможно, придется определить разные коэффициенты поглощения для насыщенной кислородом и дезоксигенированной крови (поскольку они поглощают разное количество света)).

Hb и Hbo2 — это концентрация насыщенной кислородом и дезоксигенированной крови. (они неизвестны, поскольку я пытаюсь сопоставить значения RGB с этим)

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

Bxy = (ABhb * HB) (ABhbo2 * Hbo2)

Rxy = (ARhb * HB) (ARhbo2 * Hbo2)

Gxy = (AGhb * HB) (AGhbo2 * Hbo2)

Единственное различие в приведенном выше состоит в том, что коэффициенты различны для насыщенной кислородом и дезоксигенированной крови.

Все это часть моего проекта последнего курса в университете компьютерных наук, попытка создать функциональную визуализацию.

@Chris применяется ли то же самое, если есть разные коэффициенты, извините за непонимание, математика — не моя сильная сторона. Просто пытаюсь запрограммировать этот алгоритм.

Комментарии:

1. Разве это не лучше подходит для math.stackexchange.com ?

2. Если коэффициенты одинаковы по столбцам, то ответ @a72 — это то, что вы хотели бы сделать. Фактически у вас есть только 1 неизвестное в этом случае и нет способа определить вклад HB и Hbo2 по отдельности. Если у вас разные коэффициенты в каждом элементе вашей матрицы, то наименьшие квадраты, как я предписал, — это правильная вещь.

3. Извините, я компьютерный специалист, и это часть моего проекта, я не был уверен, где это опубликовать, и, учитывая, что это связано с компьютерным проектом, я решил опубликовать это здесь, извините за ошибку.

4. @ChrisA. похоже, мне придется поискать алгоритм наименьших квадратов, потому что знание различных концентраций важно для того, что я пытаюсь найти на изображениях. Спасибо за вашу помощь, я начну свои поиски, чтобы выяснить, как работает метод наименьших квадратов.

5. Я поместил ссылку в свой пост об этом.

Ответ №1:

Вероятно, вам нужно так называемое решение методом наименьших квадратов (см. Раздел, посвященный общей задаче). Подводя итог, вам не гарантировано точное решение в зависимости от вашего A и b того, когда вы пытаетесь решить A*x=b здесь.

Однако, путем вычислений xLS = inv(A'*A)*A'*b вы получите нечто, максимально приближенное к решению (в смысле наименьших квадратов). Обратите внимание, что A' это означает перенос A . Также обратите внимание, что если A'*A не является обратимым, то ваша система уравнений имеет недостаток ранга (это означает, что у вас фактически меньше уравнений, чем вы думаете.)

Если у вас есть:

  Bxy = (ABhb * HB)   (ABhbo2 * Hbo2)
 Rxy = (ARhb * HB)   (ARhbo2 * Hbo2)
 Gxy = (AGhb * HB)   (AGhbo2 * Hbo2)
  

Затем:

  A = [ ABhb  ABhbo2 
       ARhb  ARhbo2 
       AGhb  AGhbo2 ];

 x = [HB
      Hbo2];


 b = [Bxy
      Rxy
      Gxy];
  

Комментарии:

1. Краткий вопрос, что означают b и x в приведенном выше примере и вернет ли это вектор с двумя значениями, одно для Hb и одно для Hbo2? Редактировать Ооо, возможно, понял, x — это вектор Hb, Hbo2, а b — это вектор R, G, B?

2. Большое вам спасибо за прекрасную правку, Крис, вы так помогли.

Ответ №2:

Если у вас есть n уравнений и n-1 неизвестных, это означает, что вы можете исключить одно из уравнений, оно не имеет значения и зависит от двух других. Выясните, какое из них легче всего исключить, замените, и тогда у вас останется матрица (n-1) x (n-1)

предполагая, что существует решение для всех трех уравнений, то есть его можно найти, решив только два из них, чтобы получить два неизвестных.

В этом случае кажется, что все ваши уравнения более или менее равны, за исключением коэффициентов, поэтому я не думаю, что будет иметь значение, какое из трех вы решили исключить. Вы могли бы просто отбросить уравнение Gxy и в итоге получить пару 2×2:

Bxy = AB * HB AB * Hbo2

Rxy = AR * HB AR * Hbo2

в результате получается матрица

[AB AB]

[AR AR]

Комментарии:

1. Спасибо, Дэн, так что тогда безопасно удалить одно из уравнений, другими словами, если я решу для первых двух, то после третьего также будет выполнено.

2. @Dan F исключение уравнения не приводит вас к (n-1)x(n-1) оно приводит вас к (n-1)x(n-2) , поскольку устраняет уравнение и неизвестное. Это классовая задача, называемая наименьшими квадратами.

3. @Antony — конечно, нет! Третье не нуждается в удовлетворении! Но, как правило, невозможно удовлетворить 3 уравнения, используя только 2 неизвестные переменные!!! И поскольку это, как правило, невозможно, вы должны определить, чего вы действительно хотите — вы должны дополнительно указать свой вопрос.

4. @Chris A Это не устраняет неизвестное, в его примере оба неизвестных используются во всех трех уравнениях, поэтому исключение одного из уравнений не устраняет неизвестное

5. @Dan F Я рекомендую вам отредактировать свой ответ с помощью примера, потому что я не думаю, что вы правы в этом вопросе. Если вы пройдете через это для системы 3×2, вы поймете, о чем я говорю.

Ответ №3:

Выражение epx HB Hbo2 одинаково во всех 3 уравнениях, и его можно заменить, z=HB Hbo2 составив три уравнения

 B = AB*z
R = AR*z
G = AG*z
  

Чтобы решить для z, выполните метод наименьших квадратов, чтобы найти

 z = HB   Hbo2 = (AB*B AG*G AR*R)/(AB*AB AG*AG AR*AR)
  

и ошибка для каждого компонента в виде

 dB = B - AB*z
dR = R - AR*z
dG = G - AG*z
  

Это все, что вы можете сделать. Каким-то образом вы должны решить, как разделить z на HB и Hbo2 . В постановке задачи нет информации об этом.