2015-07-28 2 views
0

У меня около 1000 измерений, которые связывают три переменные друг с другом: x, y и z. Другими словами, у меня есть 1000 значений измерения для x, y и z. Отношения между ними заключается в следующем:Решение системы нелинейных уравнений

enter image description here

Может кто-то любезно скажите мне, как я могу найти коэффициенты c1, c2 и c3 с использованием MATLAB? Если не было взаимодействия между x и y (c3=0), то c1 и c2 могут быть легко найдены оператором обратной косой черты в MATLAB наименее квадратным способом (A\b).

+0

это просто базовая алгебра ... –

+1

Нелинейные уравнения не являются базовой алгеброй @MarcB. –

+1

как да. пропустил часть 'xy' ... –

ответ

3

Используйте fminunc, fmincon, или fminsearch и анонимную функцию. Например,

fminunc(@(c) norm(c(1)*x + c(2)*y + c(3)*x.*y - z), c0) 

для некоторых разумных начальных значений c0 (зависит от проблемы). Исправлено благодаря @TroyHaskin.

+2

Функция должна возвращать скаляр, поэтому цель должна быть« нормой ». Также можно использовать ['fminsearch'] (http://www.mathworks.com/help/matlab/ref/fminsearch.html). – TroyHaskin

+1

Хороший улов @ Трой Хаскин, спасибо! Вы защищаете «fminsearch» просто потому, что размер проблемы настолько низок? Я использовал решатель на основе градиента, потому что функция квадратична. –

+1

О, я не защищал. Я хотел включить его, поскольку это ванильный Matlab, и не у всех есть панель оптимизации. – TroyHaskin

Смежные вопросы