Skip to main content
added 567 characters in body
Source Link
flinty
  • 26.3k
  • 2
  • 23
  • 98

RemoveYou could use FindRoot like so:

sol = FindRoot[rr, Thread[{list, ConstantArray[0, Length[list]]}]] (* {Subscript[a, 0] -> 18.9824, Subscript[b, 0] -> 0.43251, Subscript[a, 1] -> -33.3436, Subscript[b, 1] -> 0.65013, Subscript[a, 2] -> 27.5785, Subscript[b, 2] -> 0.279464, Subscript[a, 3] -> -22.0304, Subscript[b, 3] -> 0.0771869, Subscript[a, 4] -> 16.5283, Subscript[b, 4] -> 0.0177385, Subscript[a, 5] -> -11.0201, Subscript[b, 5] -> 0.00270039, Subscript[a, 6] -> 5.51, Subscript[b, 6] -> 0.000329395} *) 

Another way is to remove the Solve and instead do a minimization. Transform the equations lhs == rhs into lhs - rhs == 0 if they aren't like this already, then minimize the total square error from zero:

{err, sol} = NMinimize[Total[(rr /. Equal -> Subtract)^2], list] (* {1.00027*10^-26, {Subscript[a, 0] -> 18.9824, Subscript[b, 0] -> 0.43251, Subscript[a, 1] -> -33.3436, Subscript[b, 1] -> 0.65013, Subscript[a, 2] -> 27.5785, Subscript[b, 2] -> 0.279464, Subscript[a, 3] -> -22.0304, Subscript[b, 3] -> 0.0771869, Subscript[a, 4] -> 16.5283, Subscript[b, 4] -> 0.0177385, Subscript[a, 5] -> -11.0201, Subscript[b, 5] -> 0.00270039, Subscript[a, 6] -> 5.51, Subscript[b, 6] -> 0.000329395}} *) rr[[All, 1]] /. sol (* {0., -3.46945*10^-18, 2.22045*10^-16, -2.34188*10^-16, 2.22045*10^-15, 5.55112*10^-17, -1.66533*10^-15, 1.77636*10^-15, -4.32987*10^-15, 3.55271*10^-15, -1.9984*10^-15, 0., -5.88418*10^-15, -8.52651*10^-14} *) 

As you can see, substituting these values satisfies all equations at an error under 10^-13.

Remove the Solve and instead do a minimization. Transform the equations lhs == rhs into lhs - rhs == 0 if they aren't like this already, then minimize the total square error from zero:

{err, sol} = NMinimize[Total[(rr /. Equal -> Subtract)^2], list] (* {1.00027*10^-26, {Subscript[a, 0] -> 18.9824, Subscript[b, 0] -> 0.43251, Subscript[a, 1] -> -33.3436, Subscript[b, 1] -> 0.65013, Subscript[a, 2] -> 27.5785, Subscript[b, 2] -> 0.279464, Subscript[a, 3] -> -22.0304, Subscript[b, 3] -> 0.0771869, Subscript[a, 4] -> 16.5283, Subscript[b, 4] -> 0.0177385, Subscript[a, 5] -> -11.0201, Subscript[b, 5] -> 0.00270039, Subscript[a, 6] -> 5.51, Subscript[b, 6] -> 0.000329395}} *) rr[[All, 1]] /. sol (* {0., -3.46945*10^-18, 2.22045*10^-16, -2.34188*10^-16, 2.22045*10^-15, 5.55112*10^-17, -1.66533*10^-15, 1.77636*10^-15, -4.32987*10^-15, 3.55271*10^-15, -1.9984*10^-15, 0., -5.88418*10^-15, -8.52651*10^-14} *) 

As you can see, substituting these values satisfies all equations at an error under 10^-13.

You could use FindRoot like so:

sol = FindRoot[rr, Thread[{list, ConstantArray[0, Length[list]]}]] (* {Subscript[a, 0] -> 18.9824, Subscript[b, 0] -> 0.43251, Subscript[a, 1] -> -33.3436, Subscript[b, 1] -> 0.65013, Subscript[a, 2] -> 27.5785, Subscript[b, 2] -> 0.279464, Subscript[a, 3] -> -22.0304, Subscript[b, 3] -> 0.0771869, Subscript[a, 4] -> 16.5283, Subscript[b, 4] -> 0.0177385, Subscript[a, 5] -> -11.0201, Subscript[b, 5] -> 0.00270039, Subscript[a, 6] -> 5.51, Subscript[b, 6] -> 0.000329395} *) 

Another way is to remove the Solve and instead do a minimization. Transform the equations lhs == rhs into lhs - rhs == 0 if they aren't like this already, then minimize the total square error from zero:

{err, sol} = NMinimize[Total[(rr /. Equal -> Subtract)^2], list] (* {1.00027*10^-26, {Subscript[a, 0] -> 18.9824, Subscript[b, 0] -> 0.43251, Subscript[a, 1] -> -33.3436, Subscript[b, 1] -> 0.65013, Subscript[a, 2] -> 27.5785, Subscript[b, 2] -> 0.279464, Subscript[a, 3] -> -22.0304, Subscript[b, 3] -> 0.0771869, Subscript[a, 4] -> 16.5283, Subscript[b, 4] -> 0.0177385, Subscript[a, 5] -> -11.0201, Subscript[b, 5] -> 0.00270039, Subscript[a, 6] -> 5.51, Subscript[b, 6] -> 0.000329395}} *) rr[[All, 1]] /. sol (* {0., -3.46945*10^-18, 2.22045*10^-16, -2.34188*10^-16, 2.22045*10^-15, 5.55112*10^-17, -1.66533*10^-15, 1.77636*10^-15, -4.32987*10^-15, 3.55271*10^-15, -1.9984*10^-15, 0., -5.88418*10^-15, -8.52651*10^-14} *) 

As you can see, substituting these values satisfies all equations at an error under 10^-13.

Source Link
flinty
  • 26.3k
  • 2
  • 23
  • 98

Remove the Solve and instead do a minimization. Transform the equations lhs == rhs into lhs - rhs == 0 if they aren't like this already, then minimize the total square error from zero:

{err, sol} = NMinimize[Total[(rr /. Equal -> Subtract)^2], list] (* {1.00027*10^-26, {Subscript[a, 0] -> 18.9824, Subscript[b, 0] -> 0.43251, Subscript[a, 1] -> -33.3436, Subscript[b, 1] -> 0.65013, Subscript[a, 2] -> 27.5785, Subscript[b, 2] -> 0.279464, Subscript[a, 3] -> -22.0304, Subscript[b, 3] -> 0.0771869, Subscript[a, 4] -> 16.5283, Subscript[b, 4] -> 0.0177385, Subscript[a, 5] -> -11.0201, Subscript[b, 5] -> 0.00270039, Subscript[a, 6] -> 5.51, Subscript[b, 6] -> 0.000329395}} *) rr[[All, 1]] /. sol (* {0., -3.46945*10^-18, 2.22045*10^-16, -2.34188*10^-16, 2.22045*10^-15, 5.55112*10^-17, -1.66533*10^-15, 1.77636*10^-15, -4.32987*10^-15, 3.55271*10^-15, -1.9984*10^-15, 0., -5.88418*10^-15, -8.52651*10^-14} *) 

As you can see, substituting these values satisfies all equations at an error under 10^-13.