Возьмите вектор неизвестных и примените некоторую обобщенную дифференцируемую функцию . Затем якобиан задается такой матрицей , что:
Например, предположим, m=3
и n=2
. Затем (с использованием индексации на основе 0)
Якобиан f
тогда
Цель этой задачи - напечатать эту матрицу Якоби.
вход
Ваша программа / функция должна принимать в качестве входных данных два натуральных числа m
и n
, которые представляют количество компонентов f
и u
соответственно. Вход может поступать из любого источника (stdio, функциональный параметр и т. Д.). Вы можете диктовать порядок, в котором они получены, и это должно быть согласовано для любого ввода в ваш ответ (пожалуйста, укажите в своем ответе).
Вывод
Нечто, представляющее матрицу Якоби. Это представление должно явно указывать все элементы матрицы Якоби, но точной формой каждого термина является реализация, определяемая до тех пор, пока однозначно то, что дифференцируется и относительно чего, и каждая запись выводится в логическом порядке. Пример допустимых форм для представления матрицы:
- Список списков, где каждая запись внешнего списка соответствует строке якобиана, а каждая запись внутреннего списка соответствует столбцу якобиана.
- Строка или текстовый вывод, где каждая строка является строкой якобиана, а каждая разделенная разделителем запись в строке соответствует столбцу якобиана.
- Некоторое графическое / визуальное представление матрицы. Пример: что показывает Mathematica при использовании
MatrixForm
команды - Некоторый другой объект с плотной матрицей, где каждая запись уже хранится в памяти и может быть запрошена (т.е. вы не можете использовать объект генератора). Примером может быть то, как Mathematica внутренне представляет объект Matrix.
Примеры форматов ввода:
- Строка вида
d f_i/d u_j
, гдеi
иj
являются целыми числами. Пример:d f_1/d u_2
. Обратите внимание, что эти пробелы междуd
иf_1
илиx_2
являются необязательными. Кроме того, подчеркивания также не являются обязательными. - Строка формы
d f_i(u_1,...,u_n)/d u_j
илиd f_i(u)/d u_j
. То есть входные параметры компонента функцииf_i
являются необязательными и могут быть явно прописаны или оставлены в компактной форме. - Форматированный графический вывод. Пример: что печатает Mathematica при оценке выражения
D[f_1[u_,u_2,...,u_n],u_1]
Вы можете выбрать то , что исходный индекс u
и f
является (пожалуйста , укажите в ответе). Выходом может быть любой желаемый приемник (stdio, возвращаемое значение, выходной параметр и т. Д.).
Контрольные примеры
Следующие тесты используют соглашение m,n
. Индексы показаны с нуля.
1,1
[[d f0/d u0]]
2,1
[[d f0/d u0],
[d f1/d u0]]
2 2
[[d f0/d u0, d f0/d u1],
[d f1/d u0, d f1/d u1]]
1,2
[[d f0/d u0, d f0/d u1]]
3,3
[[d f0/d u0, d f0/d u1, d f0/d u2],
[d f1/d u0, d f1/d u1, d f1/d u2],
[d f2/d u0, d f2/d u1, d f2/d u2]]
счет
Это код гольф; выигрывает самый короткий код в байтах. Стандартные лазейки запрещены. Вам разрешено использовать любые встроенные модули по вашему желанию.
f=
Е. Это обычная практика. R также возвращает последнюю вещь, оцененную в функции, так что вы можете просто использоватьv
вместоreturn(v)
.