Polynomial regression: Difference between revisions
Content added Content deleted
Alpha bravo (talk | contribs) (Added AutoHotkey) |
m (→{{header|FreeBASIC}}: fixed indent + removed empty lines) |
||
Line 750: | Line 750: | ||
=={{header|FreeBASIC}}== |
=={{header|FreeBASIC}}== |
||
General regressions for different polynomials, here it is for degree 2, (3 terms). |
General regressions for different polynomials, here it is for degree 2, (3 terms). |
||
<lang FreeBASIC> |
<lang FreeBASIC>#Include "crt.bi" 'for rounding only |
||
#include "crt.bi" 'for rounding only |
|||
Type vector |
Type vector |
||
Line 769: | Line 766: | ||
'mult operators |
'mult operators |
||
Operator *(m1 As matrix,m2 As matrix) As matrix |
Operator *(m1 As matrix,m2 As matrix) As matrix |
||
Dim rows As Integer=Ubound(m1.element,1) |
Dim rows As Integer=Ubound(m1.element,1) |
||
Dim columns As Integer=Ubound(m2.element,2) |
Dim columns As Integer=Ubound(m2.element,2) |
||
If Ubound(m1.element,2)<>Ubound(m2.element,1) Then |
If Ubound(m1.element,2)<>Ubound(m2.element,1) Then |
||
Print "Can't do" |
Print "Can't do" |
||
Exit Operator |
Exit Operator |
||
End If |
End If |
||
Dim As matrix ans |
Dim As matrix ans |
||
Redim ans.element(rows,columns) |
Redim ans.element(rows,columns) |
||
Dim rxc As Double |
Dim rxc As Double |
||
For r As Integer=1 To rows |
For r As Integer=1 To rows |
||
For c As Integer=1 To columns |
For c As Integer=1 To columns |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
Next c |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
rxc=0 |
rxc=0 |
||
For k As Integer = 1 To Ubound(m1.element,2) |
For k As Integer = 1 To Ubound(m1.element,2) |
||
rxc=rxc+m1.element(r,k)*m2.element(k |
rxc=rxc+m1.element(r,k)*m2.element(k) |
||
Next k |
Next k |
||
ans.element(r |
ans.element(r)=rxc |
||
Next |
Next r |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
Next r |
|||
⚫ | |||
End Operator |
End Operator |
||
Line 826: | Line 823: | ||
Dim As matrix b=This |
Dim As matrix b=This |
||
#macro pivot(num) |
#macro pivot(num) |
||
For p1 As Integer = num To n - 1 |
For p1 As Integer = num To n - 1 |
||
For p2 As Integer = p1 + 1 To n |
For p2 As Integer = p1 + 1 To n |
||
If Abs(b.element(p1,num))<Abs(b.element(p2,num)) Then |
If Abs(b.element(p1,num))<Abs(b.element(p2,num)) Then |
||
Swap r.element(p1),r.element(p2) |
Swap r.element(p1),r.element(p2) |
||
For g As Integer=1 To n |
For g As Integer=1 To n |
||
Swap b.element(p1,g),b.element(p2,g) |
Swap b.element(p1,g),b.element(p2,g) |
||
Next g |
Next g |
||
End If |
End If |
||
Next p2 |
Next p2 |
||
Next p1 |
Next p1 |
||
#endmacro |
#endmacro |
||
For k As Integer=1 To n-1 |
For k As Integer=1 To n-1 |
||
Line 926: | Line 923: | ||
If n<3 Then g="" Else g="^"+Str(n-1) |
If n<3 Then g="" Else g="^"+Str(n-1) |
||
if val(cround(a(n),places))<>0 then |
if val(cround(a(n),places))<>0 then |
||
s+= Iif(Sgn(a(n))>=0,"+","")+cround(a(n),places)+ Iif(n=Lbound(a),"","*x"+g)+" " |
s+= Iif(Sgn(a(n))>=0,"+","")+cround(a(n),places)+ Iif(n=Lbound(a),"","*x"+g)+" " |
||
end if |
end if |
||
Next n |
Next n |
||
Line 937: | Line 934: | ||
Redim As Double ans() |
Redim As Double ans() |
||
regress(x(),y(),ans(),3) |
|||
print show(ans()) |
|||
sleep</lang> |
|||
</lang> |
|||
{{out}} |
{{out}} |
||
⚫ | |||
<pre> |
|||
⚫ | |||
</pre> |
|||
=={{header|GAP}}== |
=={{header|GAP}}== |