<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def sync_ik_robot(self, joint_positions, simulate=False, sync_last=True):
 """ Force the internal robot model to match the provided joint angles. Args: joint_positions (list):
 a list or flat numpy array of joint positions. simulate (bool):
 If True, actually use physics simulation, else write to physics state directly. sync_last (bool):
 If False, don't sync the last joint angle. This is useful for directly controlling the roll at the end effector. """

        num_joints = len(joint_positions)
        if not sync_last:
            num_joints -= 1
        for i in range(num_joints):
            if simulate:
                p.setJointMotorControl2(
                    self.ik_robot,
                    self.actual[i],
                    p.POSITION_CONTROL,
                    targetVelocity=0,
                    targetPosition=joint_positions[i],
                    force=500,
                    positionGain=0.5,
                    velocityGain=1.,
                )
            else:
                # Note that we use self.actual[i], and not i
                p.resetJointState(self.ik_robot, self.actual[i], joint_positions[i])