added a sentence
This commit is contained in:
parent
e7367cf50f
commit
e145a4db9f
6
.ipynb_checkpoints/Untitled-checkpoint.ipynb
Normal file
6
.ipynb_checkpoints/Untitled-checkpoint.ipynb
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"cells": [],
|
||||
"metadata": {},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
1070
Untitled.ipynb
Normal file
1070
Untitled.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
401
examples.ipynb
401
examples.ipynb
@ -1,5 +1,12 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"In this notebook there are presented examples of usage of shiroin, a python library for proving inequalities of multivariate polynomials."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
@ -16,7 +23,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The first line obviously loads this package. The second one sets a seed for proving functions. If you don't write it, you can get slightly different proof each time you run a function. The next two lines\n",
|
||||
"The first line obviously loads this package. The second one sets a seed for proving functions. If you don't write it, you can get a slightly different proof each time you run a function. The next two lines provide a nicer display of proofs, i.e. formulas will be shown instead of LaTeX code of these formulas. Note that this works on Jupyter, but not on the git page.\n",
|
||||
"\n",
|
||||
"Now let's make some proofs. We will use problems from https://www.imomath.com/index.php?options=593&lmm=0."
|
||||
]
|
||||
@ -89,16 +96,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -208,7 +205,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ab \\le a^2+b^2$$$$2ac \\le a^2+c^2$$$$2bc \\le b^2+c^2$$"
|
||||
"$$2ab \\le a^2+b^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ac \\le a^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2bc \\le b^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -312,16 +333,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -436,7 +447,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ab \\le a^2+b^2$$$$2ac \\le a^2+c^2$$$$2ad \\le a^2+d^2$$"
|
||||
"$$2ab \\le a^2+b^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ac \\le a^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ad \\le a^2+d^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -559,7 +594,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$28ab \\le 14a^2+14b^2$$$$28ac \\le 14a^2+14c^2$$$$28ad \\le 14a^2+14d^2$$"
|
||||
"$$28ab \\le 14a^2+14b^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$28ac \\le 14a^2+14c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$28ad \\le 14a^2+14d^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -661,16 +720,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -710,7 +759,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"prove(makesubs(S(\"-x**3*y + 2*x**2*y**2 - x**2 - x*y**3 + 2*x*y - y**2\"),[('y', 'inf')])"
|
||||
"prove(makesubs(S(\"-x**3*y + 2*x**2*y**2 - x**2 - x*y**3 + 2*x*y - y**2\"),[('y', 'oo')])"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -824,7 +873,43 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$12x^2y^2 \\le 6x^3y+6xy^3$$$$3x^2y \\le 2x^3+y^3$$$$3xy^2 \\le x^3+2y^3$$$$6xy \\le 3x^2+3y^2$$"
|
||||
"$$12x^2y^2 \\le 6x^3y+6xy^3$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$3x^2y \\le 2x^3+y^3$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$3xy^2 \\le x^3+2y^3$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$6xy \\le 3x^2+3y^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -984,7 +1069,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2x^3y \\le x^4y^2+x^2$$$$4x^2y \\le x^3y^2+2x^2+xy^2$$$$2xy \\le x^2+y^2$$"
|
||||
"$$2x^3y \\le x^4y^2+x^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$4x^2y \\le x^3y^2+2x^2+xy^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2xy \\le x^2+y^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -1101,7 +1210,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ab \\le a^2+b^2$$$$2ac \\le a^2+c^2$$$$2bc \\le b^2+c^2$$"
|
||||
"$$2ab \\le a^2+b^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ac \\le a^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2bc \\le b^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -1201,16 +1334,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -1310,16 +1433,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -1356,7 +1469,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"prove(makesubs('(x-1)^4','(1,inf)'))"
|
||||
"prove(makesubs('(x-1)^4','(1,oo)'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1414,16 +1527,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -1460,7 +1563,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"prove(makesubs('(x-1)^4','(-inf,1)'))"
|
||||
"prove(makesubs('(x-1)^4','(-oo,1)'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1540,16 +1643,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -1673,16 +1766,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -1719,7 +1802,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"prove(makesubs(formula,'[c,inf],[d,inf]'))"
|
||||
"prove(makesubs(formula,'[c,oo],[d,oo]'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1847,7 +1930,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"prove(makesubs(formula,'[c,inf],[d,inf]')*2)"
|
||||
"prove(makesubs(formula,'[c,oo],[d,oo]')*2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -1937,7 +2020,19 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2a^2b^2c^3d \\le a^3bc^2d^2+ab^3c^4$$$$2a^2c^3d \\le a^3c^2d^2+ac^4$$"
|
||||
"$$2a^2b^2c^3d \\le a^3bc^2d^2+ab^3c^4$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2a^2c^3d \\le a^3c^2d^2+ac^4$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -2082,16 +2177,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -2165,16 +2250,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -2379,16 +2454,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -2574,7 +2639,19 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ab \\le a^2+b^2$$$$2bc \\le b^2+c^2$$"
|
||||
"$$2ab \\le a^2+b^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2bc \\le b^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -2683,7 +2760,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2abc^3 \\le a^2bc^3+bc^3$$$$2ab \\le a^2+b^2$$$$2bc \\le b^2+c^2$$"
|
||||
"$$2abc^3 \\le a^2bc^3+bc^3$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2ab \\le a^2+b^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2bc \\le b^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -2804,7 +2905,19 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$4abc \\le a^2c^2+2ab^2+c^2$$$$2bc \\le b^2+c^2$$"
|
||||
"$$4abc \\le a^2c^2+2ab^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$2bc \\le b^2+c^2$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
@ -2886,16 +2999,6 @@
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
@ -3091,7 +3194,31 @@
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$21f(1, 2, 3) \\le 11f(-1, 4, 3)+8f(3, -1, 4)+2f(4, 3, -1)$$$$21f(2, 3, 1) \\le 8f(-1, 4, 3)+2f(3, -1, 4)+11f(4, 3, -1)$$$$21f(3, 1, 2) \\le 2f(-1, 4, 3)+11f(3, -1, 4)+8f(4, 3, -1)$$"
|
||||
"$$21f(1, 2, 3) \\le 11f(-1, 4, 3)+8f(3, -1, 4)+2f(4, 3, -1)$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$21f(2, 3, 1) \\le 8f(-1, 4, 3)+2f(3, -1, 4)+11f(4, 3, -1)$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/latex": [
|
||||
"$$21f(3, 1, 2) \\le 2f(-1, 4, 3)+11f(3, -1, 4)+8f(4, 3, -1)$$"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Latex object>"
|
||||
|
@ -26,7 +26,7 @@ for phrase in translationList:
|
||||
sVars.translation[phrase]=phrase
|
||||
from scipy.optimize import linprog
|
||||
import random
|
||||
from sympy import S,cancel,fraction,Pow,expand,solve,latex
|
||||
from sympy import S,cancel,fraction,Pow,expand,solve,latex,oo
|
||||
import re
|
||||
def _remzero(coef,fun):
|
||||
#coef, fun represents an expression.
|
||||
@ -76,7 +76,7 @@ def Sm(formula):
|
||||
#Adds multiplication signs and sympifies a formula.
|
||||
#For example, Sm('(2x+y)(7+5xz)') -> S('(2*x+y)*(7+5*x*z)')
|
||||
if type(formula)==str:
|
||||
formula.replace(' ','')
|
||||
formula=formula.replace(' ','')
|
||||
for i in range(2):
|
||||
formula=re.sub(r'([0-9a-zA-Z)])([(a-zA-Z])',r'\1*\2',formula)
|
||||
formula=S(formula)
|
||||
@ -156,7 +156,7 @@ def _list2proof(lcoef,lfun,rcoef,rfun,variables,itermax,linprogiter,_writ2=_writ
|
||||
#them from the original one.
|
||||
#If LHS is empty, then break.
|
||||
localseed=sVars.seed
|
||||
bufer=''
|
||||
bufer=[]
|
||||
itern=0
|
||||
if len(lcoef)==0: #if LHS is empty
|
||||
sVars.print(sVars.translation['status:']+' 0')
|
||||
@ -210,13 +210,13 @@ def _list2proof(lcoef,lfun,rcoef,rfun,variables,itermax,linprogiter,_writ2=_writ
|
||||
#step back
|
||||
lcoef,lfun=oldlcoef,oldlfun
|
||||
rcoef,rfun=oldrcoef,oldrfun
|
||||
bufer=''
|
||||
bufer=[]
|
||||
continue
|
||||
if status==0:#if found a solution with real coefficients
|
||||
if bufer:
|
||||
sVars.print(bufer)
|
||||
for ineq in bufer:
|
||||
sVars.print(ineq)
|
||||
foundreal=1
|
||||
bufer=''
|
||||
bufer=[]
|
||||
oldlfun,oldrfun=lfun,rfun
|
||||
oldlcoef,oldrcoef=lcoef[:],rcoef[:]
|
||||
for i in range(m):
|
||||
@ -231,20 +231,22 @@ def _list2proof(lcoef,lfun,rcoef,rfun,variables,itermax,linprogiter,_writ2=_writ
|
||||
isok=_check(lcoef[i],lfun[i],res.x[i*n:i*n+n],rfun)
|
||||
if not isok:
|
||||
continue
|
||||
bufer+='$$'+_writ2(lcoef[i],lfun[i],variables)+' \\le '
|
||||
bufer+=['']
|
||||
bufer[-1]+='$$'+_writ2(lcoef[i],lfun[i],variables)+' \\le '
|
||||
lcoef[i]=0
|
||||
for j in range(n):
|
||||
rcoef[j]-=int(round(res.x[i*n+j]))
|
||||
for j,k in zip(res.x[i*n:i*n+n],rfun):
|
||||
if j<0.0001:
|
||||
continue
|
||||
if(c):bufer+='+'
|
||||
if(c):bufer[-1]+='+'
|
||||
else:c=1
|
||||
bufer+=_writ2(int(round(j)),k,variables)
|
||||
bufer+='$$'
|
||||
bufer[-1]+=_writ2(int(round(j)),k,variables)
|
||||
bufer[-1]+='$$'
|
||||
lcoef,lfun=_remzero(lcoef,lfun)
|
||||
rcoef,rfun=_remzero(rcoef,rfun)
|
||||
sVars.print(bufer)
|
||||
for ineq in bufer:
|
||||
sVars.print(ineq)
|
||||
lhs='+'.join([_writ2(c,f,variables) for c,f in zip(lcoef,lfun)])
|
||||
if lhs=='':
|
||||
lhs='0'
|
||||
@ -295,7 +297,7 @@ def prove(formula,values=None,variables=None,niter=200,linprogiter=10000):
|
||||
"You can assume without loss of generality that "]+
|
||||
' >= '.join([str(x) for x in fs])+'. '+sVars.translation['Try'])
|
||||
sVars.print('prove(makesubs(S("'+str(num)+'"),'+
|
||||
str([(str(x),'inf') for x in variables[1:]])+')')
|
||||
str([(str(x),'oo') for x in variables[1:]])+')')
|
||||
return st
|
||||
def powerprove(formula,values=None,variables=None,niter=200,linprogiter=10000):
|
||||
#This is a bruteforce and ineffective function for proving inequalities.
|
||||
@ -339,17 +341,17 @@ def makesubs(formula,intervals,values=None,variables=None,numden=False):
|
||||
equations=[]
|
||||
for var,interval in zip(variables,intervals):
|
||||
end1,end2=interval
|
||||
if end1 in {S('-inf'),S('inf')}:
|
||||
if end1 in {S('-oo'),S('oo')}:
|
||||
end1,end2=end2,end1
|
||||
if {end1,end2}=={S('-inf'),S('inf')}:
|
||||
if {end1,end2}=={S('-oo'),S('oo')}:
|
||||
formula=formula.subs(var,var-1/var)
|
||||
equations=[equation.subs(var,var-1/var) for equation in equations]
|
||||
sVars.print(sVars.translation['Substitute']+' $'+str(var)+'\\to '+var-1/var+'$')
|
||||
elif end2==S('inf'):
|
||||
elif end2==S('oo'):
|
||||
formula=formula.subs(var,end1+var)
|
||||
equations=[equation.subs(var,end1+var) for equation in equations]
|
||||
sVars.print(sVars.translation['Substitute']+' $'+str(var)+'\\to '+sstr(end1+var)+'$')
|
||||
elif end2==S('-inf'):
|
||||
elif end2==S('-oo'):
|
||||
formula=formula.subs(var,end1-var)
|
||||
equations=[equation.subs(var,end1-var) for equation in equations]
|
||||
sVars.print(sVars.translation['Substitute']+" $"+str(var)+'\\to '+sstr(end1-var)+'$')
|
||||
@ -359,7 +361,7 @@ def makesubs(formula,intervals,values=None,variables=None,numden=False):
|
||||
equations=[equation.subs(var,end2+(end1-end2)/var) for equation in equations]
|
||||
num,den=fractioncancel(formula)
|
||||
for var,interval in zip(variables,intervals):
|
||||
if {interval[0],interval[1]} & {S('inf'),S('-inf')}==set():
|
||||
if {interval[0],interval[1]} & {S('oo'),S('-oo')}==set():
|
||||
num=num.subs(var,var+1)
|
||||
den=den.subs(var,var+1)
|
||||
equations=[equation.subs(var,var+1) for equation in equations]
|
||||
|
Loading…
Reference in New Issue
Block a user