Posted to tcl by arjen at Thu Dec 09 14:55:22 GMT 2021view pretty

# temperature.tcl --
#     Simulate a temperature series
#
proc temp {alpha mean min max number} {
    set result {}

    set mean  [expr {(1.0 - $alpha) * $mean}]
    set range [expr {($max - $min) / 4.0}]
    set t1 [expr {$mean + $range * (rand() - 0.5)}]
    set t1 [expr {min($max,max($min,$t1))}]
    for {set i 0} {$i < $number} {incr i}  {
        set t2 [expr {$alpha * $t1 + $mean + $range * (rand() - 0.5)}]
        set t2 [expr {min($max,max($min,$t2))}]

        lappend result $t2
        set t1 $t2
    }

    return $result
}

package require Plotchart
pack [canvas .c -width 600 -height 600]
set p [::Plotchart::createXYPlot .c {0 100 20} {-10 10 5}]

incr x 0
foreach t [temp 0.5 4.0 -8.0 8.0 100] {
    $p plot data $x $t
    incr x
}