function [f1,f2] = tfunc3(f,x,a,b) 
% Funktion mit vier Input-Variablen und zwei Output-Variablen.
% Die Variable f dient dabei zur Fallunterscheidung.
% 
% Berechnet die Funktionen f1(x) = a * x^2 * f(x)
%                          f2(x) = a * x^2 * f(x) + b * x
%  
% Aufruf: [f1,f2] = tfunc3(f,x,a,b)
% Input:  f   char   array,  {'sin', 'cos', 'tan', 'cot'}, 
%                            default 'sin'
%         x   double array 
%         a   double scalar, optional, default a=1
%         b   double scalar, optional, default b=2
% Output: f1  double array   f1 = a * x.^2 .* f(x)
%         f2  double array   f2 = a * x.^2 .* f(x) + b * x

  if nargin<2, error('Aufruf: [f1,f2]=tfunc3(f,x,a,b)'); end
  if isempty(f), f = 'sin'; end;
  if nargin<3, a = 1; end; if isempty(a), a = 1; end;
  if nargin<4, b = 2; end; if isempty(b), b = 2; end;
  
  % Die Fallunterscheidung wird mit einer 
  %     switch-case-Konstruktion
  % durchgeführt, wobei die die String-Variable f als Schalter 
  % dient.
  switch f
   case 'sin'
    f1 = a * x.^2 .* sin(x);
   case 'cos'
    f1 = a * x.^2 .* cos(x);
   case 'tan'
    f1 = a * x.^2 .* tan(x);
   case 'cot'
    f1 = a * x.^2 .* cot(x);
   otherwise
    error(['Fall ',f,' existiert nicht!']);
  end
  if nargout>1, f2 = f1 + b * x; end