2011-05-28 17 views
7

I s^2 = b/a elde etmek için, s^​​2 çözmek istiyoruzDeğişkenin karesi için bir denklem çözme?

a s^2+b = 0 

gibi bir ifade (polinom veya genel olarak herhangi bir denklemi) göz önüne alındığında. Hepimiz s^2 bir 'değişken' olmadığı için kimse sadece

Solve[eq==0,s^2] 

yazamazsınız biliyoruz. sadece s bir 'değişken' dir. Yani ne

eq = a s^2+b; 
sol = [email protected][eq==0/.s^2->z,z]; 
z/.sol 

-(b/a) 

yukarıdaki yapmak için bir yol olup olmadığını merak ediyorum ara değişken değişimi olmadan mı? Pek çok komutu denedim, ama başarıya ulaşmadım (azaltmak, toplamak, ortadan kaldırmak, faktörü vb.).

sayesinde --Nasser

+1

Ara değişkende sorun nedir? Benim için iyi bir çözüm gibi görünüyor - 2 satır olsa bile. –

+0

@Sam, bir şeylerin yanlış olduğunu hiç söylemedim mi? Sadece ara subs olmadan yapabilecek bir komut olup olmadığını merak ediyordum. – Nasser

cevap

3

Tek yön

eq=a s^2+b; 
sol=#^2 &@ (s/.Solve[eq==0,s])//DeleteDuplicates 

Out[1]= {-(b/a)} 
+3

Biraz daha doğrudan, sanırım, DeleteDuplicates [s^2 /. Çöz [a * s^2 + b == 0, s]] Çıkış [89] = {- (b/a)} –

2

Sen Notation package kullanabilirsiniz ... karesini sonra s için çözmek ve, ama diğer konularda yol açar.

o 2 gerçekten olarak kabul edilir^s
In[1]:= Solve[b + a s^2 == 0, s^2] 
During evaluation of In[1]:= Solve::ivar: s^2 is not a valid variable. >> 
Out[1]= Solve[b + a s^2 == 0, s^2] 

Şimdi Symbolize s^2 o kadar normal Mathematica değerlendirici diğer sembollerin gibi davranır o

In[2]:= Needs["Notation`"] 
In[3]:= Symbolize[ParsedBoxWrapper[SuperscriptBox["s", "2"]]] 

In[4]:= Solve[b + a s^2 == 0, s^2] 

Out[4]= {{s^2 -> -(b/a)}} 

sorun olduğu: Yani burada orijinal denklem sadece başka sembol, örneğin

In[6]:= Sqrt[s^2] // PowerExpand 
Out[6]= Sqrt[s^2] 

Ara çözüm Symbolize sadece kullanıcı girişinin yapılıp eski etki etmesi nedeniyle s * s ile s^2 değiştirmektir baskılar (yani, girilmiş Kutu yapılarının yorumlanması seviyesinde)

+1

Not: Yukarıdaki [3] 'de Notation Palet ile oluşturulduğunu unutmayın - Mathematica defterinde tüm 'Box' şeylerini gör. – Simon

+1

Simon, eğer “Symbolize” işlemini “Block” veya “Module” deki gibi geçici yapabilirseniz, bunun için oy kullanacağım. Aksi takdirde, bir balyozla çivi vurmak gibi görünüyor. –

+0

@ Mr.Wizard: Ben bunun iyi bir çözüm olduğunu söylemedim. – Simon

İlgili konular