FuncDesigner é uma fonte aberta CAS (Computer & nbsp; Algebra System) escrito em Python. Abaixo estão três exemplos, para que você possa entender como funciona o projeto.
Exemplo:
de FuncDesigner import *
a, b, c = oovars («a», «b», «c»)
f1, f2 = sin (a) + cos (b) - log2 (c) + sqrt (b), soma (c) + c * cosh (b) / arctan (a) + c [0] * c [1] + C [-1] / (a * c.size)
f3 = f2 + f1 * 2 * a + sen (b) * (1 + 2 + 3 * c.size * f2.size)
f = 2 * f1 * b * c * f2 + + f3 + dot (a + c, b + c)
ponto = {a: 1, b: 2, c: [3, 4, 5]} # no entanto, é melhor você usar arrays numpy em vez de listas de Python
print (f (ponto))
print (f.D (ponto))
print (f.D (ponto, a))
print (f.D (point, [b]))
impressão (f.D (point, fixedVars = [a, c]))
Resultado esperado:
[140.9337138 110.16255336 80.67870244]
{A: array ([69,75779959, 88,89020412, 109,93551537]), b: array ([- 23,10565554, -39,41138045, -59,08378522]),
c: array ([[6,19249888, 38,261221, 38,261221],
[29.68377935, -0,18961959, 29,68377935],
[23.03059873, 23.03059873, -6,22406763]])}
[69.75779959 88.89020412 109.93551537]
{B: array ([- 23,10565554, -39,41138045, -59,08378522])}
{B: array ([- 23,10565554, -39,41138045, -59,08378522])}
& Nbsp; * Você pode usar "para o" ciclo em código FuncDesigner
Exemplo:
de FuncDesigner import *
a, b, c = oovars («a», «b», «c»)
f1, f2 = sin (a) + cos (b) - log2 (c) + sqrt (b), soma (c) + c * cosh (b) / arctan (a) + c [0] * c [1] + C [-1] / (a * c.size)
f3 = f2 + f1 * 2 * a + sen (b) * (1 + 2 + 3 * c.size * f2.size)
F = sin (f2) * + 1 f3
M = 15
for i in range (M): F = 0.5 * F + 0,4 * F3 * cos (F1 + 2 * F2)
ponto = {a: 1, b: 2, c: [3, 4, 5]} # no entanto, é melhor você usar arrays numpy em vez de listas de Python
print (F (ponto))
print (F.D (ponto))
print (F.D (ponto, a))
print (F.D (point, [b]))
impressão (F.D (point, fixedVars = [a, c]))
[4.63468686 0.30782902 1.21725266]
{A: array ([- 436,83015952, 204,25331181, 186,38788436]), b: array ([562,63390316, -273,23484496, -256,32464645]),
c: array ([[395,96975635, 167,24928464, 55,74976155],
& Nbsp; [-74,80518167, -129,34496329, -19,94804845],
& Nbsp; [-57,42472654, -45,93978123, -66,30049589]])}
[-436,83015952 204,25331181 186,38788436]
{B: array ([562,63390316, -273,23484496, -256,32464645])}
{B: array ([562,63390316, -273,23484496, -256,32464645])}
Exemplo:
de FuncDesigner import *
de openopt NLP importação
a, b, c = oovars («a», «b», «c»)
f = soma (a * [1, 2]) ** 2 + b ** 2 + c ** 2
startPoint = {a: [100, 12], b: 2, c: 40} # no entanto, é melhor você usar arrays numpy em vez de listas de Python
p = PNL (f, startPoint)
p.constraints = [(2 * c + a-10) ** 2 <1,5 + 0,1 b *, (a-10) ** 28,9, a + b> [7,97999836, 7,8552538],
um <9, (c-2) ** 2 <1, b <-1,02, c> 1,01, ((b + c * log10 (a) .sum () - 1) ** 2) .eq (0) ]
r = p.solve ('ralg')
impressão r.xf
Resultado esperado:
...
objFunValue: 717,75631 (viável, restrição max = 7.44605e-07)
{A: array ([8,99999792, 8,87525277]), b: array ([- 1,01999971]), c: array ([1,0613562])}
O que é novo , neste release:
- Interalg agora trabalha muitas vezes (às vezes mais rápido em ordens) (possivelmente multidimensionais) problemas de integração (IP) e sobre alguns problemas de otimização
- Adicionar densa modelagem (MI) (QC) QP em FuncDesigner (alfa-versão, a renderização pode trabalhar lentamente até o momento)
- Bugfix para CPLEX invólucro
- Algumas melhorias para análise intervalo FuncDesigner (e interalg assim)
- Adicionar análise intervalo FuncDesigner para tan no intervalo (-pi / 2, pi / 2)
- Algumas outras correções de bugs e melhorias
- (Proprietary) FuncDesigner estocástico addon agora está disponível como autônomo pyc-file, tornou-se disponível para Python3 assim
O que é novo na versão 0.45:
- melhorias essenciais para a análise intervalo FuncDesigner (portanto, afetar interalg)
- walkaround temporária para um bug grave no kernel do FD automática diferenciação devido a um bug em algumas versões do Python ou NumPy, pode afetar problemas de otimização, incluindo (MI) LP, (MI) PNL, TSP etc
- Algumas outras pequenas correções de bugs e melhorias.
O que é novo na versão 0.43:
- interalg agora pode resolver SNLE no segundo modo (parâmetro dataHandling = & quot; cru & quot ;, antes - apenas & quot; classificadas & quot;)
- Muitas outras melhorias para interalg
- Algumas melhorias para o kernel FuncDesigner
- FuncDesigner ODE agora tem três argumentos em vez de 4 (incompatibilidade para trás!), Por exemplo, {T: np.linspace (0,1,100)} ou mera np.linspace (0,1,100) se o seu ODE lado direito é time-independend
- FuncDesigner estocástico addon agora pode lidar com alguns problemas com PNL baseado em gradiente / solucionadores NSP
- Muitas pequenas melhorias e algumas correções de bugs
O que é novo na versão 0.39:
- interalg: adicionar variáveis categóricas e restrições lógicas gerais, muitos outros melhorias
- Algumas melhorias para a diferenciação automática
- DerApproximator e algumas funcionalidades OpenOpt / FuncDesigner agora trabalha com PyPy
- New lsmr solver para densa LLSP / escasso
- construtores oovar agora pode lidar com parâmetros lb e ub, por exemplo, a = oovar ('a', lb = -1, ub = [1,2,3]) (este oovar deve ter tamanho 3) ou x = oovars (10, lb = -1, ub = 1)
- função New FuncDesigner hstack, sintaxe semelhante à numpy.hstack, por exemplo, f = hstack ((a, b, c, d))
- Algumas correções de bugs
O que é novo na versão 0.36:
- análise Interval agora pode envolver min, max e 1-d splines monótonos R - & gt; R da 1ª e 3ª ordem
- Algumas correções de bugs e melhorias
O que é novo na versão 0.21:
- Novos recursos: Integração, tradutor
- Alguns speedup para avaliação funções, diferenciação automática, problemas de otimização com algumas variáveis fixos
- New useSparse parâmetro para probs de otimização e diferenciação automática (por vezes autoselect funciona prematuramente)
- New exactShape parâmetro para diferenciação automática (evita operações lisonjeiras)
- Algumas correções de erros (principalmente wrt usando matrizes esparsas) e limpeza de código
O que é novo na versão 0.18:
- Adicionar operador FuncDesigner ifThenElse
- tolerâncias pessoais para limitações FuncDesigner
- agora para definir restrição de igualdade você pode usar expressão_1 == expressão_2, possivelmente com tolerância, bem como: (xpression_1 == expressão_2) (tol = 0,0001)
- algumas melhorias na diferenciação automática (ainda um pouco mais ainda de ser feito)
- & quot; tolerâncias negativas & quot; para restrições (para ser rigoroso com a escala apropriada). No entanto, talvez, no futuro, ele será substituído por algo como myConstr (estrito = True) para melhor compreensão.
- nomeado () marcado como obsoleto
Requisitos :
- Python
- NumPy
Comentários não encontrado