function [fk, Fk] = sine_f(k, xk, params)
n = size(xk, 1);
index = params.sine_f_index;
offset = params.sine_f_offset;
if (size(index, 1) ~= 2) | (size(index, 2) ~= 1)
size_index_1 = size(index, 1)
size_index_2 = size(index, 2)
error('sine_f: index is not a column vector with two elements')
end
if (size(offset, 1) ~= 2) | (size(offset, 2) ~= 1)
size_offset_1 = size(offset, 1)
size_offset_2 = size(offset, 2)
error('sine_f: offset is not a column vector with two elements')
end
if (max(index) > n) | (min(index) < 1)
max_index = max(index)
min_index = min(index)
error('sine_f: max(index) > size(xk, 1) or min(index) < 1')
end
fk = xk( index(2) ) - sin( xk( index(1) + offset(1) ) ) - offset(2);
Fk = zeros(1, n);
Fk(index(2)) = 1;
Fk(index(1)) = Fk(index(1)) - cos( xk( index(1) + offset(1) ) );
return
end