73 lines
2.2 KiB
Typst
73 lines
2.2 KiB
Typst
|
|
#import "@preview/cetz:0.4.2"
|
|
#import "@preview/cetz-plot:0.1.3": plot
|
|
|
|
#cetz.canvas(length: 1.25cm,{
|
|
import cetz.draw: *
|
|
plot.plot(
|
|
//definitionen
|
|
name: "plot",
|
|
size: (6, 6),
|
|
x-tick-step: none,
|
|
y-tick-step: none,
|
|
axis-style: "school-book",
|
|
x-label: $x$,
|
|
y-label: $y$,
|
|
x-ticks: ((0.5, $1/2$),(1.25, $x$),),
|
|
y-ticks: ((0.25, $1/4$),(1.5625, $x^2$),),
|
|
{
|
|
//berechnungen und plot
|
|
let f = x => calc.pow(x, 2)
|
|
let x0 = 0.5
|
|
let y0 = f(x0)
|
|
let x1 = 1.25
|
|
let y1 = f(x1)
|
|
// Berechnung der Steigung m = (y1 - y0) / (x1 - x0)
|
|
let m = (y1 - y0) / (x1 - x0)
|
|
|
|
|
|
// Sekantenfunktion: s(x) = m * (x - x0) + y0
|
|
let s = x => m * (x - x0) + y0
|
|
|
|
let x1_1 = x1 + 0.1
|
|
let x0_1 = x0 - 0.2
|
|
let y0_1 = y0 + 0.2
|
|
let x2 = ((x1 - x0)/2) + x0
|
|
let y3 = ((y1 - y0)/2) +y0
|
|
|
|
plot.add(x => calc.pow(x, 2), domain: (-1.4, 1.8))
|
|
//Sekante
|
|
plot.add(s, domain: (0.3, 1.7), style: (stroke: red))
|
|
plot.add-anchor("pt1", (-1.4,y1))
|
|
plot.add-anchor("P", (x1_1,y1))
|
|
plot.add-anchor("P0", (x0_1,y0_1))
|
|
|
|
plot.add-anchor("F1", (x2,0.14))
|
|
plot.add-anchor("F2", (x1+0.1,y3))
|
|
|
|
|
|
plot.add(((x0, 0), (x0, y0)), style: (stroke: (dash: "dashed", paint: gray, thickness: 0.75pt)))
|
|
plot.add(((x1, 0), (x1, y1)), style: (stroke: (dash: "dashed", paint: gray, thickness: 0.75pt)))
|
|
plot.add(((0, y1), (x1, y1)), style: (stroke: (dash: "dashed", paint: gray, thickness: 0.75pt)))
|
|
plot.add(((0, y0), (x0, y0)), style: (stroke: (dash: "dashed", paint: gray, thickness: 0.75pt)))
|
|
|
|
plot.add(((x0, y0), (x1, y0)), style: (stroke: ( paint: gray.darken(80%), thickness: 0.5pt)))
|
|
plot.add(((x1, y0), (x1, y1)), style: (stroke: ( paint: gray.darken(80%), thickness: 0.5pt)))
|
|
|
|
|
|
plot.add(((x0, y0),), mark: "o")
|
|
plot.add(((x1, y1),), mark: "o")
|
|
|
|
|
|
|
|
}
|
|
)
|
|
//Der Plot muss einen Namen haben
|
|
content("plot.pt1", text(0.85em)[$y=x^2$], anchor: "east", name: "pt")
|
|
content("plot.P", text(0.75em)[$P$], anchor: "west", name: "p")
|
|
content("plot.P0", text(0.75em)[$P_0$], anchor: "west", name: "p0")
|
|
content("plot.F1", text(0.75em)[$x- 1/2$], anchor: "center", name: "f1")
|
|
content("plot.F2", text(0.75em)[$x^2- 1/4$], anchor: "west", name: "f2")
|
|
})
|
|
|