#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
. В постановке задачи нет информации об этом.