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