آموزش متلب قسمت 23 : روش نیوتن رافسون
هدف از این تمرین این است که با یک مثال ابتدایی به شما نشان دهیم که چگونه از روش نیوتن رافسون در متلب استفاده کنید.
در مثال زیر از تابع ode45 , و شرایط مرزی استفاده می کنیم
با شرایط مرزی
که در اینجا ریشه بدست میاید
روش نیوتن رافسون در متلب
در کد زیر با استفاده از تابع ode45 مشگل مقدار اولیه (IVP) را حل میکنیم
در این کد برای رسیدن به راه حل دقیق در فرایند تکرار از روش نیوتن رافسون استفاده می کنیم و سرانجام هنگامی که y(1) به سه رقم اعشار برسد فرایند تکرار را پایان میدهیم.
در ابتدای مسئله، ODE (معادله دیفرانسیل معمولی) را به مجموعه ای از معادلات مرتبه اول تقسیم می کنیم و از 1 به عنوان حدس اولیه برای y'(0) استفاده می کنیم.
کد نویسی بصورت زیر است:
ua=0;
s(1)=1; %First guess for the derivative
s(2)=1.1; %second guess for the derivative
tb=1; %Second time
target_ub=0; % target
f=@(t,y) [y(2); 1./(1+y(1))^2]; % set of 1st order ODE
rb=@(v) (v-target_ub) % boundary conditions at b
[t,y]=ode45(f,[0 tb],[ua; s(1)]);
ub(1)=y(end,1);
for (j=2:50) % stop after 50 iteration even if the accuracy is not reached
[t,y]=ode45(f,[0 tb],[ua; s(j)]);
ub(j)=y(end,1);
if abs(rb(ub(j)))<0.001 % quit the for loop if accuracy reached
break
end
s(j+1)=s(j)-rb(ub(j))*(s(j)-s(j-1))/(rb(ub(j))-rb(ub(j-1)));
end
plot(t,y(:,1)) % plot the last solution
xlabel('t')
ylabel('y')
grid on