gibi cebirsel ifadeleri basitleştirebilecek açık kaynaklı veya erişimi kolay bir yazılım var mı?


17

İşleri her zaman elle hesaplıyorum, ama şimdi yoldaşlarım kötüye gidiyor ve sadece yukarıdaki ifade gibi şeyleri takmayı içeren çok sayıda tekrarlı egzersiz yapıyorlar. Bu tür denklemleri basitleştirmek için özellikle Python veya R gibi açık kaynaklı yazılımlarla ilgileniyorum. Ben Wolfram Alfa kullanmaya çalıştı ama başarısız oldu. Hangi açık kaynaklı yazılım paketleri x = ifadesinin yerini alabilirdenkleminex 2 +2x+3ve sonucu basitleştirir? Özellikle,komutgibi bir şey olan bir yazılım paketi arıyorum.x=2t1x2+2x+3simplify

Yanıtlar:


28

İstediğiniz basitleştir komutuyla bir Python kütüphanesi olan SymPy'ye bakmak isteyebilirsiniz .

>>> from sympy.abc import t
>>> import sympy
>>> x = t*2**(1/2) - 1
>>> x**2 + 2*x + 3
2*t + (t - 1)**2 + 1
>>> sympy.simplify(x**2 + 2*x + 3)
t**2 + 2

2
Sage'yi önerecektim , ancak henüz sembolik yeteneklere sahip olmadığı görülüyor, ancak sonunda Maple ve Mathematica'ya açık kaynaklı bir alternatif olmayı amaçladığı için sembolik bir yetenek içereceğini düşünecekti.
Geoff Oxberry

1
Sage sembolik yeteneklere sahiptir (sembolik integraller yapmak için kullandım), ancak aramadığınız sürece bunu nasıl yapacağınız özellikle net değildir. A'yı bir sembol olarak kullanmak istiyorsanız, önceden olduğu gibi önceden bildirmeniz gerekir var('a'). En azından bu 3 ya da 4 yıl önce bilge en son kullandığımda doğruydu. Genel olarak, mathematica sembolik bir sonuç istediğinizi, adaçayı ise sayısal bir sonuç istediğinizi varsayar.
Dan

1
@hhh: Yanılmıyorsam, kod parçanız değerlendirmek ve basitleştirmek istediğiniz ifadeye karşılık gelmiyor.
Geoff Oxberry

@GeoffOxberry: Orijinal sorunu LaTeX'te olduğu gibi bu sorunu da düzeltmeye çalıştım.
Jack Poulson

1
Anladığım kadarıyla Sage aslında SymPy kod tabanının çoğunu içeriyor.
MRocklin

9

Sage bunu yapabilir (sadeleştirme kısmına ulaşmak için sayfadan aşağıya doğru kaydırmanız gerekecek).

Ayrıca, Sage'deki sembolik matematiğe genel girişi okuduğunuzdan emin olun. Anlambilim ve sözdizimi, çoğu insanın aşina olduğu Mathematica'dan oldukça farklıdır .

Sizi bağladığım belgelerden bir örnek:

sage: var('x,y,z,a,b,c,d,e,f')
(x, y, z, a, b, c, d, e, f)
sage: t = a^2 + b^2 + (x+y)^3
# substitute with keyword arguments (works only with symbols)
sage: t.subs(a=c)
(x + y)^3 + b^2 + c^2

Sizin durumunuz için, bu işe yaramalıdır:

var(f,x,t)
f=x^2+2*x+3
f.subs(x=(sqrt(2)*t-1))
f.simplify()

Dokümantasyon arama motorunun iyileştirilmesi gerekiyor. Ben "basitleştirmek" yazdığınız ve o sayfayı alamadım hiç . Güzel bulmak!
Geoff Oxberry

Google'a "adaçayı basitleştirin" yazdım.
Dan

8

Yüksek kaliteli gelişmiş açık kaynaklı paketlerle birçok iyi cevabınız var.

Ben noktaya istiyorum http://www.mathics.net/ (bunu indirmek istiyorsanız http://mathics.org/) aşina olabileceğiniz Mathematica sözdizimi (kullanarak bir açık kaynak CAS olan WolramAlpha kullanıyorsanız birazcık). Aldığınız diğer önerilerin neredeyse tamamı kadar eksiksiz değil. Ancak, sorunuzda bahsettiğiniz (çok basit) işlemleri yapabilir.

Sorunuzda bahsettiğiniz şey gerçekten basitleştirme değil, ikame ve genişleme (daha karmaşık basitleştirmenin aksine, en temel CAS'da bile mevcut işlemleri uygulamak için çok kolaydır):

Matematikte şöyle görünecektir:

eq = x^2 + 2x + 3

eq /. x -> Sqrt[2] t - 1

Expand[%]

Bir sadeleştirme işlevine ihtiyacınız varsa, çağrılır Simplify[]ve Expand[]yukarıdaki örnekte de çalışır .


8

As Akid önerdi wxMaxima saygıdeğer için büyük bir grafik ön sonudur lisp tabanlı Bilgisayar Cebir Sistemi denilen Maxima .

Örneğinizi kullanarak şöyle bir şey elde edersiniz:

(% i1) eq1: x=t*2**(1/2)-1;
(% o1)x=2t-1
(% i2) eq2: x**2+2*x+3;
(% o2)x2+2x+3
(% i3) eq3: subst(eq1, eq2);
(% o3)(2t-1)2+2(2t-1)+3
(% i4) ratsimp(eq3);
(% o4)2t2+2

ya da doğrudan yapabilirsiniz:

(% i5) ratsimp(subst(x=t*2**(1/2)-1, x**2+2*x+3));
(% o5)2t2+2

Maxima'nın basitleştirmenin birkaç farklı yolu vardır, ancak ratsimpiyi bir ilk adımdır.





Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.