Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
36
Task/Runge-Kutta-method/PowerShell/runge-kutta-method.psh
Normal file
36
Task/Runge-Kutta-method/PowerShell/runge-kutta-method.psh
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
function Runge-Kutta (${function:F}, ${function:y}, $y0, $t0, $dt, $tEnd) {
|
||||
function RK ($tn,$yn) {
|
||||
$y1 = $dt*(F -t $tn -y $yn)
|
||||
$y2 = $dt*(F -t ($tn + (1/2)*$dt) -y ($yn + (1/2)*$y1))
|
||||
$y3 = $dt*(F -t ($tn + (1/2)*$dt) -y ($yn + (1/2)*$y2))
|
||||
$y4 = $dt*(F -t ($tn + $dt) -y ($yn + $y3))
|
||||
$yn + (1/6)*($y1 + 2*$y2 + 2*$y3 + $y4)
|
||||
}
|
||||
function time ($t0, $dt, $tEnd) {
|
||||
$end = [MATH]::Floor(($tEnd - $t0)/$dt)
|
||||
foreach ($_ in 0..$end) { $_*$dt + $t0 }
|
||||
}
|
||||
$time, $yn, $t = (time $t0 $dt $tEnd), $y0, 0
|
||||
foreach ($tn in $time) {
|
||||
if($t -eq $tn) {
|
||||
[pscustomobject]@{
|
||||
t = "$tn"
|
||||
y = "$yn"
|
||||
error = "$([MATH]::abs($yn - (y $tn)))"
|
||||
}
|
||||
$t += 1
|
||||
}
|
||||
$yn = RK $tn $yn
|
||||
}
|
||||
}
|
||||
function F ($t,$y) {
|
||||
$t * [MATH]::Sqrt($y)
|
||||
}
|
||||
function y ($t) {
|
||||
(1/16) * [MATH]::Pow($t*$t + 4,2)
|
||||
}
|
||||
$y0 = 1
|
||||
$t0 = 0
|
||||
$dt = 0.1
|
||||
$tEnd = 10
|
||||
Runge-Kutta F y $y0 $t0 $dt $tEnd
|
||||
Loading…
Add table
Add a link
Reference in a new issue