# KnitR/Computeralgebrasystem in R
## Einleitung

Diese Seite zum Thema KnitR/Computer Algebra in R kann als Wiki2Reveal Folien angezeigt werden. Einzelne Abschnitte werden als Folien betrachtet und Änderungen an den Folien wirken sich sofort auf den Inhalt der Folien aus. Dabei werden die folgenden Teilaspekte im Detail behandelt:
* (1) Grundlegende Ausführung von Befehlen von Computer-Algebra-Systemen in R,
* (2) Digitale Lernumgebungen in der Mathematik für die Computer-Algebra-System für adaptive Übungsblätter im Kontext mit Lösungshilfen erstellt werden können

## Zielsetzung

Diese Lernressource zu Thema "KnitR und Computeralgebrasysteme in R" in der Wikiversity hat das Ziel, den grundlegenden Einsatz von Computer-Algebra-Systemen (CAS) in KnitR zu behandeln und die Einsatzfelder im Kontext von Digitalen Lernumgebungen und individualisierten Übungsblättern zu behandeln.

## Voraussetzungen

Als Voraussetzungen für der Lernressource zum Thema KnitR und Computer Algebra in R'' ist empfohlen eine funktionierende OpenSource-Installation von R und RStudio auf Ihrem Rechner zu installieren und ein Basis R-Markdown-Dokument, in dem Sie Ihre Übungen eintragen können.

## Aufgaben für Lernende / Studierende

Mit den folgenden Aufgaben zum Thema KnitR/Computer Algebra in R wird zunächst ein Computer-Algebra-System (hier YACAS ausgewählt, die CAS-Befehle in R ausführt.
* Analysieren Sie zunächst das YACAS-Tutorial in einem mathematischen Bereich, für den Sie digitale Übungsblätter erstellen wollen, bzw. mit dem Sie CAS-Werkzeuge für Berechnung von Lösungen und Lösungshilfen verwenden möchten.
* Erzeugen Sie Aufgabe in KnitR zum Vereinfachen von Termen, bei dem ein Term mit zufällig erzeugten ganzzahligen Koeffizienten vereinfacht werden soll und erzeugen Sie zu dem Aufgabenblatt eine Lösung unter Verwendung des CAS.

## CAS in R verwenden

Um Computer Algebra in R in KnitR nutzen zu können muss man zunächst das Paket ryacas installieren. Danach steht das Computer-Algebra-System YACAS in R zur Verfügung. Betrachten Sie dann zunächst die Einbettung von YACAS-Befehlen in R und integrieren Sie dann das Werkzeug in KnitR-Code-Chunks (Befehlsfolgen in einem R-Markdown-Dokument).

### Begriff - Code-Chunk

Der Begriff "Code-Chunk" bezeichnet Programmiercode (i.d.R. in der Programmiersprache R), der in den Text ausführbar integriert wird.

### Bibliothek Ryacas - Installation

Wenn man die Bibliothek Ryacas verwenden möchte, muss man zunächst das Paket Ryacas installieren.

### Bibliothek Ryacas einbinden

Nach der Installation erfolgt die Nutzung in einem KnitR-Dokument über die Eingabe des folgenden Befehls in dem ersten Code-Chunk des KnitR-Dokumentes, das in der Regel alle Bibliotheken listet, die in dem KnitR-Dokument für die Berechnung benötigt werden.

### Bemerkung - Einbindung in ersten Code-Chunk

Generell kann man YACAS erst nach Einbindung der Ryacas-Bibliothek verwenden. Daher ist die Einbindung in dem ersten Code-Chunk sinnvoll, der mit echo=FALSE in erzeugte Dokument nicht dargestellt wird

### Ableitungen über YACAS berechnen

In einem ersten Schritt werden Ableitungen mit installiertem Ryacas berechnet. Beispielsweise ist liefert der YACAS-Befehl
die Ableitung eines Funktionsterms $f(x):=\sin(x\cdot y)$ nach $x$. Mit der Funktion yac_str sendet man den CAS-Befehl an YACAS und man erhält als Ergebnis die Ableitung zurück. Diese wird in dem folgenden Beispiel in der Variablen ableitung gespeichert:

### Ableitungen als Funktion in R über YACAS

In einem zweiten Schritt definiert man eine Ableitung über YACAS als Funktion in R, die das Rückgabewert die Ableitung ausgibt.

### Aufruf der Funktion - Ableitungsoperator

Wurde der YACAS-Ableitungsoperator als Funktion in R definiert, kann man nach der Definition den Ableitungsoperator "diff(...)" wie folgt verwenden.

### Bestimmtes Integral über YACAS berechnen

Ein bestimmtes Integral benötigt in YACAS als Eingabe die Integrationsvariable und die unter und obere Integrationsgrenze. Der YACAS-Befehl
integriert den Funktionsterm $\cos(x)$ nach $x$ in den Integralgrenzen $a$ und $b$. Als Ergebnis erhält man $\int _{a}^{b}\cos(x)\,dx=\sin(b)-\sin(a)$.

### Bestimmtes Integral als Funktion in R über YACAS

Ein bestimmtes Integral als Funktion in R 4 Parameter. Neben dem Integrationsterm noch die Integrationsvariablen und die untere und obere Intervallgrenze. Eine solche Funktion kann in R wie folgt definiert werden:

### Aufruf der Funktion - Bestimmtes Integral

Wurde die YACAS-Integration als Funktion in R definiert, kann man nach der Definition den Ableitungsoperator "integral_best(...)" wie folgt verwenden.

### Stammfunktion - Unbestimmtes Integral über YACAS berechnen

Eine Stammfunktion von einem Funktionsterm kann in YACAS wie folgt berechnet werden.
Als Ergebnis in YACAS erhält man $Sin(x)$.

### Stammfunktion - Unbestimmtes Integral in R berechnen

Eine Stammfunktion kann in R über den Aufruf von yac_str(...) an YACAS gesendet werden. Dabei muss die Integrationvariable festgelegt werden.
Als Ergebnis in YACAS erhält man $Sin(x)$.

### Stammfunktion - Unbestimmtes Integral in Variable speichern

Eine Stammfunktion kann in R über den Aufruf von yac_str(...) an YACAS gesendet werden. Dabei muss die Integrationvariable festgelegt werden.
Die Variable "stammfunktion" enthält als Ergebnis von YACAS die Zeichenkette $Sin(x)$.

## Aufgabe - R-Funktion zur Berechnung der Stammfunktion

Definieren Sie analog zu dem obigen Beispiel ein Funktion zur Berechnung einer Stammfunktion zu einem gegebenen als Term und einer gegebenen Integrationsvariable in R über YACAS

## LaTeX-Ausgabe

Bei der Verwendung von KnitR möchte man in der Regel berechnet algebraische Terme in mathematischer Standardschreibweise (und nicht in CAS-Syntax) ausgeben. Dazu kann man die obigen Funktionen so verändern, dass die berechneten Ergebnisse dann in LaTeX-Syntax ausgegeben werden. Dabei wird der eigentliche Ausgabe des YACAS-Befehls noch an die Funktion TexForm(...) gesendet und in LaTeX-Syntax konvertiert.

### Aufruf einer R-Funktion mit LaTeX-Ausgabe

Wurde die YACAS-Integration als Funktion in R für die Ausgabe von LaTeX erweitert, kann man nach der Definition den LaTeX-Ausgabe mit "integral_best4latex(...)" wie folgt verwenden.

### Ausgabe im RMarkdown

Mit der folgenden Syntax kann man die LaTeX-Formel im Fließtext einbetten
Die Ausgabe im Text sieht dann wie folgt aus:
    ${\frac {1}{3}}\cdot b^{3}-{\frac {1}{3}}\cdot a^{3}$
In folgenden Beispiel werden statische LaTeX-Formelbestandteile mit den dynamisch berechneten in YACAS verbunden.
Die Ausgabe der generierten Formel hat dann folgende Gestalt:
    $\int _{a}^{b}x^{2}\,dx={\frac {1}{3}}\cdot b^{3}-{\frac {1}{3}}\cdot a^{3}$

## Literatur/Quellennachweise

* ↑ Pinkus, A. Z., & Winitzki, S. (2002, June). YACAS: A do-it-yourself symbolic algebra environment. In International Conference on Artificial Intelligence and Symbolic Computation (pp. 332-336). Berlin, Heidelberg: Springer Berlin Heidelberg.
* ↑ Ryacas-Codebeispiele (2020) GitHub-Repository: https://github.com/r-cas/ryacas URL: http://r-cas.github.io/ryacas/
* ↑ YACAS-Tutorial (2020) Version 1.9 - URL: https://yacas.readthedocs.io/en/latest/tutorial/ (access 2024/05/12)