Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
125
Task/Numerical-integration/FreeBASIC/numerical-integration.basic
Normal file
125
Task/Numerical-integration/FreeBASIC/numerical-integration.basic
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
' version 17-09-2015
|
||||
' compile with: fbc -s console
|
||||
|
||||
#Define screen_width 1024
|
||||
#Define screen_height 256
|
||||
ScreenRes screen_width, screen_height, 8
|
||||
Width screen_width\8, screen_height\16
|
||||
|
||||
Function f1(x As Double) As Double
|
||||
Return x^3
|
||||
End Function
|
||||
|
||||
Function f2(x As Double) As Double
|
||||
Return 1/x
|
||||
End Function
|
||||
|
||||
Function f3(x As Double) As Double
|
||||
Return x
|
||||
End Function
|
||||
|
||||
Function leftrect(a As Double, b As Double, n As Double, _
|
||||
ByVal f As Function (ByVal As Double) As Double) As Double
|
||||
|
||||
Dim As Double sum, x = a, h = (b - a) / n
|
||||
|
||||
For i As UInteger = 1 To n
|
||||
sum = sum + h * f(x)
|
||||
x = x + h
|
||||
Next
|
||||
|
||||
leftrect = sum
|
||||
End Function
|
||||
|
||||
Function rightrect(a As Double, b As Double, n As Double, _
|
||||
ByVal f As Function (ByVal As Double) As Double) As Double
|
||||
|
||||
Dim As Double sum, x = a, h = (b - a) / n
|
||||
|
||||
For i As UInteger = 1 To n
|
||||
x = x + h
|
||||
sum = sum + h * f(x)
|
||||
Next
|
||||
|
||||
rightrect = sum
|
||||
End Function
|
||||
|
||||
Function midrect(a As Double, b As Double, n As Double, _
|
||||
ByVal f As Function (ByVal As Double) As Double) As Double
|
||||
|
||||
Dim As Double sum, h = (b - a) / n, x = a + h / 2
|
||||
|
||||
For i As UInteger = 1 To n
|
||||
sum = sum + h * f(x)
|
||||
x = x + h
|
||||
Next
|
||||
|
||||
midrect = sum
|
||||
End Function
|
||||
|
||||
Function trap(a As Double, b As Double, n As Double, _
|
||||
ByVal f As Function (ByVal As Double) As Double) As Double
|
||||
|
||||
Dim As Double x = a, h = (b - a) / n
|
||||
Dim As Double sum = h * (f(a) + f(b)) / 2
|
||||
|
||||
For i As UInteger = 1 To n -1
|
||||
x = x + h
|
||||
sum = sum + h * f(x)
|
||||
Next
|
||||
|
||||
trap = sum
|
||||
End Function
|
||||
|
||||
Function simpson(a As Double, b As Double, n As Double, _
|
||||
ByVal f As Function (ByVal As Double) As Double) As Double
|
||||
|
||||
Dim As UInteger i
|
||||
Dim As Double sum1, sum2
|
||||
Dim As Double h = (b - a) / n
|
||||
|
||||
For i = 0 To n -1
|
||||
sum1 = sum1 + f(a + h * i + h / 2)
|
||||
Next i
|
||||
|
||||
For i = 1 To n -1
|
||||
sum2 = sum2 + f(a + h * i)
|
||||
Next i
|
||||
|
||||
simpson = h / 6 * (f(a) + f(b) + 4 * sum1 + 2 * sum2)
|
||||
End Function
|
||||
|
||||
' ------=< main >=------
|
||||
|
||||
Dim As Double y
|
||||
Dim As String frmt = " ##.##########"
|
||||
|
||||
Print
|
||||
Print "function range steps leftrect midrect " + _
|
||||
"rightrect trap simpson "
|
||||
|
||||
Print "f(x) = x^3 0 - 1 100";
|
||||
Print Using frmt; leftrect(0, 1, 100, @f1); midrect(0, 1, 100, @f1); _
|
||||
rightrect(0, 1, 100, @f1); trap(0, 1, 100, @f1); simpson(0, 1, 100, @f1)
|
||||
|
||||
Print "f(x) = 1/x 1 - 100 1000";
|
||||
Print Using frmt; leftrect(1, 100, 1000, @f2); midrect(1, 100, 1000, @f2); _
|
||||
rightrect(1, 100, 1000, @f2); trap(1, 100, 1000, @f2); _
|
||||
simpson(1, 100, 1000, @f2)
|
||||
|
||||
frmt = " #########.###"
|
||||
Print "f(x) = x 0 - 5000 5000000";
|
||||
Print Using frmt; leftrect(0, 5000, 5000000, @f3); midrect(0, 5000, 5000000, @f3); _
|
||||
rightrect(0, 5000, 5000000, @f3); trap(0, 5000, 5000000, @f3); _
|
||||
simpson(0, 5000, 5000000, @f3)
|
||||
|
||||
Print "f(x) = x 0 - 6000 6000000";
|
||||
Print Using frmt; leftrect(0, 6000, 6000000, @f3); midrect(0, 6000, 6000000, @f3); _
|
||||
rightrect(0, 6000, 6000000, @f3); trap(0, 6000, 6000000, @f3); _
|
||||
simpson(0, 6000, 6000000, @f3)
|
||||
|
||||
' empty keyboard buffer
|
||||
While InKey <> "" : Wend
|
||||
Print : Print "hit any key to end program"
|
||||
Sleep
|
||||
End
|
||||
Loading…
Add table
Add a link
Reference in a new issue