Professional Documents
Culture Documents
Lineer Olmayan Denklem Sistemleri
Lineer Olmayan Denklem Sistemleri
Lineer olmayan denklem ve denklem sistemlerinin zm iin Newton-Raphson, Secant, Bisection (ikiye
blme kural), Regula Falsi (yer deitirme) gibi birok nmerik yntem vardr. Matlab ortamnda bu
yntemlerin program kodlar kullanlabilecei gibi hazr baz fonksiyonlarla zm yaplabilmektedir.
Bunlardan fzero, fsolve, solve, optimset vb en yaygn kullanlanlardandr.
eklindedir. Burada fonk, fonksiyonu, xo ise kkn bulunaca say civardr. fonk ifadesi, string, anonim
(anonymous) ya da fonksiyon m-dosya eklinde olmaldr. fzero ile kullanlan fonksiyon f(x)=0 eklinde
olmaldr.
2.yol: m-dosya kullanm: nce ifadeyi m-dosya eklinde yaznz ve ayn adla (burada fun1.m gibi)
kaydediniz.
function f = fun1(x)
f = x.^3-2*x-5;
>> y = fzero(@fun1,2)
y =
2.0946
Not: Bu konuda fzeroda kullanlan @ iareti Matlabde fonksiyon tutamac (function handle) olarak
adlandrlr ve iki trl kullanm vardr:
veya
> fzero('x.^3-2*x-5',2)
ans =
2.0946
>> f = fzero('x^2-exp(x)',0)
f =
-0.7035
>> fzero('x-exp(2*x)+2',5)
ans =
0.4475
>> fzero('x-exp(2*x)+2',-5)
ans =
-1.9810
Kk bulma ileminde balang deerini doru veremezseniz sonu alamazsnz. Aadaki rnekte
iterasyon ilemlerinin adm adm nasl olduu da gsterilmitir. nce 0.5 civarnda sonra da 2 civarnda
kk aranmtr.
>> ops=optimset('Display','iter')
>> [x,fx]=fzero('x-x^(1/3)-2',0.5,ops)
Grld gibi sonu vermedi. imdi x = 2 balang deeri ile ilem yapalm.
>> [x,fx]=fzero('x-x^(1/3)-2',2,ops)
Grlecei gibi lineer olmayan denklemlerde farkl balang deerleri iin farkl kkler bulabilirsiniz.
Kk bulma ilemini grafiksel olarak grmek iin aadaki kodu grafn2.m olarak kaydedip altrnz.
Grafik ekranndaki steki grafik normal izim, alttaki ise fonksiyonun sfr olduu yerin bytlm
grafiidir.
x = 0:0.01:5;
f = 0.1*exp(x) + sin(x) - 5 - x;
subplot(2,1,1)
plot(x,f)
xlabel('x'); ylabel('f(x)');
grid on
subplot(2,1,2)
plot(x,f)
axis([4.6,4.7, -1, 1])
xlabel('x'); ylabel('f(x)');
grid on
8.5.2. fsolve Fonksiyonu
fsolve fonksiyonu, birka deikenli lineer olmayan denklem ve denklem sisteminin zmn yapar.
Genel yazm format
fsolve(fonk,xo)
eklindedir. Burada fonk, fonksiyonu, xo ise kk bulmak iin balang deeridir. fonk ifadesi, anonim
(anonymous) ya da fonksiyon m-dosya eklinde olmaldr. Fonksiyonlar f(x)=0 eklinde olmaldr; burada f
ve x vektr eklinde olabilir.
rnek-1: 0.1ex + sin(x) - 5 = x eklindeki lineer olmayan denklemin kkn xo=5 balang deerini
temel alarak bulunuz
>> [x,fx] = fsolve('0.1*exp(x) + sin(x) -5 - x',5)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
4.6699
fx =
2.2615e-011
Bu tr denklem zmlerinde ezplot('fonk') ile fonksiyonun grafiini izdirerek kklerin yani grafik
izgisinin x-eksenini kestii noktalar grebilirsiniz. rnek-1 iin
>> ezplot('0.1*exp(x) + sin(x) -5 - x')
rnek-2: Aadaki lineer olmayan denklem sisteminin kkn xo=[-5 -5 ] balang deerlerini temel
alarak bulunuz
f1(x1,x2) = 2x1-x2-e-x1
f2(x1,x2) = -x1+2x2-e-x2
Cevap:
nce denklem sistemini bir fonksiyon m-dosyas eklinde yazarak nlinf1.m adyla kaydediniz.
function F = nlinf1(x)
F = [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];
>> x0 = [-5; -5]; % zm iin balang tahmini
>> [x,fval] = fsolve(@nlinf1,x0)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
0.5671
0.5671
fval =
1.0e-006 *
-0.4059
-0.4059
Cevap:
nce denklem sistemini f (x,y) = 0 ekline getiriniz ve bir fonksiyon m-dosyas eklinde yazarak nlinf2.m
adyla kaydediniz.
function F = nlinf2(x)
F = [x(2)+x(1)+3 ; x(1)^2+x(2)^2-17];
>> x0 = [0;0]; % zm iin balang tahmini
>> [ck,fval] = fsolve(@nlinf2,x0)
Optimizer appears to be converging to a minimum that is not a root:
Sum of squares of the function values is > sqrt(options.TolFun).
Try again with a new starting point.
ck =
-2.8742
-2.8742
fval =
-2.7484
-0.4781
eklindedir. Denklem ifadeleri f(x)=0 eklinde olmak zorunda deildir. Her ne kadar sembolik denklem
zmleri sunmasyla beraber nmerik sonu ta vermektedir.
rnek-1: 0.1ex + sin(x) - 5 = x denkleminin kkn bulunuz.
>> eq1 = '0.1*exp(x)+sin(x)-5=x';
>> [x] = solve(eq1)
x =
-4.1515936788037046341400951202097
! Ancak grlecei gibi negatif kkn buldu oysa yukardaki zmde grdnz zere bir de pozitif
kk vardr. Denklemin grafiini izdirerek sfr geii civarndaki kkn fsolve ya da fzero bulmak
gerekir.
>> [x,y]=solve('x^2+2*x*y=0','x^2-x+y=2')
x =
0
3/4+1/4*41^(1/2)
3/4-1/4*41^(1/2)
y =
2
-3/8-1/8*41^(1/2)
-3/8+1/8*41^(1/2)
>> double([x,y])
ans =
0 2.0000
2.3508 -1.1754
-0.8508 0.4254
y =
-.2549571848750966919825951949202
>> double([x,y])
ans =
2.2550 -0.2550
>> double(ans)
ans =
1.0000
3.5129
-0.4777
={1, 3.5, -0.47}
Cevap:
>> [x1,x2]=solve('x1^2-x2=0.25','-x1^2+x2^2=1')
x1 =
-1.4052561586385554955493348980068
1.4052561586385554955493348980068
-.68901732299818779599728492840056*i
.68901732299818779599728492840056*i
x2 =
1.7247448713915890490986420373529
1.7247448713915890490986420373529
-.72474487139158904909864203735294
-.72474487139158904909864203735294
>> double([x1,x2])
ans =
-1.4053 1.7247
1.4053 1.7247
0 - 0.6890i -0.7247
0 + 0.6890i -0.7247