MigrosJET
80+ Bronze
- Katılım
- 9 Ocak 2021
- Mesajlar
- 686
Dahası
- Reaksiyon skoru
- 227
- İsim
- Martyn McMillan
Bisection metodu ile verilen fonksiyonun belirli bölgelerdeki kökünü bulmaya çalışıyorum. Kökünü doğru şekilde buluyor ancak her adımda hesapladığı xnew değerlerini fonksiyonun kendi grafiği üzerinde göstermek istiyorum. Nasıl yapabilirim?
Hallettim, plot yerine bunları yazdım:
ezplot(f)
hold on
plot(xnew,fnew,'b--*')
Kod:
function [xnew,step]=kokbulma(xleft,xright)
f=inline('x*(exp(x))-cos(x)','x');
a=xleft; b=xright; step=1;
xnew=(a+b)/2; fa=f(a);
error=100;
while (error>0.005)
fnew=f(xnew);
if sign(fnew) == sign(fa)
a = xnew;
fa = fnew;
else
b = xnew;
fb = fnew;
end
step=step+1; x_old=xnew; xnew=(a+b)/2;
error=abs(xnew-x_old)/xnew*100;
plot(xnew,f)
end
return;
end
Mesaj otomatik birleştirildi:
18. satıra plot(xnew,f) yazdığımda hata veriyor, ezplot(f) yazdığımda sadece fonksiyonun grafiğini çiziyor. Benim bu grafiğin üstünde hesaplanılan her yeni xnew değerini göstermem gerekiyor.Bisection metodu ile verilen fonksiyonun belirli bölgelerdeki kökünü bulmaya çalışıyorum. Kökünü doğru şekilde buluyor ancak her adımda hesapladığı xnew değerlerini fonksiyonun kendi grafiği üzerinde göstermek istiyorum. Nasıl yapabilirim?
Kod:function [xnew,step]=kokbulma(xleft,xright) f=inline('x*(exp(x))-cos(x)','x'); a=xleft; b=xright; step=1; xnew=(a+b)/2; fa=f(a); error=100; while (error>0.005) fnew=f(xnew); if sign(fnew) == sign(fa) a = xnew; fa = fnew; else b = xnew; fb = fnew; end step=step+1; x_old=xnew; xnew=(a+b)/2; error=abs(xnew-x_old)/xnew*100; plot(xnew,f) end return; end
Mesaj otomatik birleştirildi:
Hallettim, plot yerine bunları yazdım:
ezplot(f)
hold on
plot(xnew,fnew,'b--*')
Son düzenleme: