Equation Solving, solve()

Kategori: MATLAB , 07 Ağustos 2019 , JanFranco


solve() fonksiyonu ile denklemleri çözebiliriz. Denklemleri ise '==' karakterleri ile tanımlarız. Bir örnek yapalım:


syms a
equation1 = sin(a) == 1;
ans1 = solve(equation1, a);
Burada a ifadesine göre çöz dedik fakat tek parametre olduğundan demesek de olurdu. Eğer bu denklemde x, a, b gibi farklı değerler olsaydı ve parametre girmeseydik x ifadesine göre çözecekti. Burada sonuç pi/2 çıkacaktır. Daha detaylı çözümler için 'ReturnConditions' ve true şeklinde iki parametre gönderebiliriz:


equation2 = cos(a) == 1;
[ans2, params2, conds2] = solve(equation2, a, 'ReturnConditions', true);
Burada sonuç yani ans2 değişkeninin değeri 2*pi*k olur. params2 değişkeni k değerini alır. cons2 değişkeninde ise koşul saklanır. Bu koşul da in(k, 'integer') ifadesidir. solve() fonksiyonuna birden fazla denklem gönderirsek, bu denklemlerin ortak çözümünü bulabiliriz:


syms x
equations = [4*(x+3), 2*x+6];
ans3 = solve(equations, x);
Burada aslında 4x + 12 = 2x + 6 denklemini çözdük ve x değerini -3 bulduk. Bir örnek daha yapalım:


syms t
equation4 = cos(t) == 0;
[ans4, params4, conds4] = solve(equation4, t, 'ReturnConditions', true);
assume(conds4);
range = [ans4 > 0, ans4<2*pi];
ansk = solve(range, params4);
value = subs(ans4, params4, ansk);
cos(t) = 0 denklemi için t değerleri 90 ve 270 olabilir. Yani pi/2, 3pi/2. Şu şekilde yazalım, pi/2, pi/2 + pi. Burada pi/2 değerine ekstradan pi değerleri eklersek çözüm değişmez. Yani çözümümüz pi/2 + x ifadesidir aslında. MATLAB burada x değil de k değerini atar. Yani pi/2 + k. Fonksiyondan dönen conds4 koşulu in(k, 'integer') ifadesidir. assume() fonksiyonu ile bunu şart koşalım. Yani k değeri integer olmak zorunda dedik. range değişkenine iki denklem atadık. ans4 = pi/2 + k olduğundan range = [pi/2 + k > 0, pi/2 + k < 2*pi] olmuş oldu. Bu denklemleri de params4 değeri için yani k için hesaplarsak cevap 0 ve 1 çıkar. Daha sonra subs fonksiyona pi/2 + k, k, [0, 1] parametrelerini gönderdik ve bize pi/2 ve 3pi/2 değerlerini verdi. Yani burada belirli bir aralık için denklem çözümü yapmış olduk. Son olarak çoklu denklemleri aşağıdaki şekilde çözebiliriz:


syms a b
equations5 = [2*a^2 + b^2, a-1==b];
values = [a,b];
answers5 = solve(equations5, values);
answers5.a
answers5.b
Burada solve() fonksiyonu bir struct yapı return eder. Bu yapıda a ve b çözümlerine ayrı ayrı ulaşabiliriz. Sonucu görelim:


ans =
 
 - (2^(1/2)*1i)/3 - 2/3
   (2^(1/2)*1i)/3 - 2/3


Sonraki Yazı: Graphs in MATLAB
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın