تبلیغات
انجمن علمی ریاضی بسیج دانشجویان دانشگاه یاسوج - برنامه های اولیه ی مطلب(آنالیز عددی)
سه شنبه 14 فروردین 1386
برنامه های اولیه ی مطلب(آنالیز عددی)
برای دیدن ، یه صلوات بفرستید و به ادامه ی مطلب بروید


******************************************************************************
javad Ravaei         Department of Mathematics             Yasuj University
******************************************************************************

function f=f1(x)
f=x^3-x^2-1;

function f =df1(x)
f=3*x^2-2*x


*****************************************************************

function bisect(f,a,b,tol,n)
%bisection method for solving the nonlinear f(x)=0
a0=a;
b0=b;
iter=0;
u=feval(f,a);
v=feval(f,b);
c=(a+b)*0.5;
err=abs(b-a)*0.5;
disp('--------------------------------------------------------');
disp('iter     a         b        c        f(c)      |b-a|/2');
disp('--------------------------------------------------------');
fprintf('\n');
if(u*v<=0)
    while(err>tol)&(iter<=n)
        w=feval(f,c);
        fprintf('%2.0f%10.4f%10.4f%12.6f%10.6f%10.6f\n',iter,a,b,c,w,err);
        if(w*u<0)
            b=c;
            v=w;
        end
        if(w*u>0)
            a=c;
            u=w;
        end
        iter=iter+1;
        c=(a+b)*0.5;
        err=abs(b-a)*0.5;
    end
    if(iter>n)
        disp('method failed to converge');
    end
else
    disp('the method can not be applied f(a)f(b)>0');
end
%plot f(x)in the interval [a,b]
%fplot(f,[a0,b0]);
%xlabel('x');
%ylabel('f(x)');
%grid

**********************************************************

function false(f,a,b,tol,n)
%false position method for solving the nonlinear f(x)=0
a0=a;
b0=b;
iter=0;
u=feval(f,a);
v=feval(f,b);
c=(v*a-u*b)/(v-u);
w=feval(f,c);
disp('------------------------------------------');
disp('iter    a     b     c      f(c)    |b-a|/2');
disp('------------------------------------------');
fprintf('\n');
if(u*v<=0)
    while(abs(w)>tol)&(abs(b-a)>tol)&(iter<=n)&((v-u)~=0)
        w=feval(f,c);
        fprintf('%2.0f%10.4f%10.4f%12.6f%10.6f%10.6f\n',iter,a,b,c,w,abs(b-a));
        if(w*u<0)
            b=c;
            v=w;
        end
        if(w*u>0)
            a=c;
            u=w;
        end
        iter=iter+1;
        c=(v*a-u*b)/(v-u);
        err=abs(b-a)*0.5;
    end
    if(iter>n)
        disp('method failed to converge');
    end
    if(v-u==0)
        disp('division by zero');
    end
else
    disp('the method can not be applied f(a)f(b)>0');
end
%plot f(x)in the interval [a,b]
%fplot(f,[a0,b0]);
%xlabel('x');
%ylabel('f(x)');
%grid

**************************************************************

function fixed(g,x0,tol,n)
%the fixed point iteration method for solving the nonlinear f(x)=0
iter=0;
u=feval(g,x0);
err=abs(u-x0);
disp('----------------------------------------');
disp('iter    xn      g(xn)       |x(n+1)-xn| ');
disp('----------------------------------------');
fprintf('%2.0f%12.6f%12.6f\n',iter,x0,u);
while(err>tol)&(iter<=n)&(v~=0)
    x1=u;
    err=abs(x1-x0);
    x0=x1;
    u=feval(g,x0);
    iter=iter+1;
    fprintf('%2.0f%12.6f%12.6f%12.8f\n',iter,x0,u,err);
end
if(iter>n)
    disp('method failed to converge');
end;

************************************************************

clc , clear all ;
n = input('enter n= ')
r = input('enter r= ')
a = input('enter a= ')
disp('0.')
i=0;
    while i<=n
        b=fix(r*a);
        disp(b)
        a=(r*a)-b;
        if a==0
            break
           
        end
        i=i+1;
    end

************************************************************


function newton(f,df,x0,tol,n)
%newton method for solving the nonlinear f(x)=0
iter=0;
u=feval(f,x0);
v=feval(df,x0);
err=abs(u/v);
disp('---------------------------------------------------');
disp('iter    xn     f(xn)     df(xn)      |x(n+1)-xn| ');
disp('---------------------------------------------------');
fprintf('%2.0f%12.6f%12.6f%12.6f\n',iter,x0,u,v);
while(err>tol)&(iter<=n)&(v~=0)
    x1=x0-u/v;
    err=abs(x1-x0);
    x0=x1;
    u=feval(f,x0);
    v=feval(df,x0);
    iter=iter+1;
    fprintf('%2.0f%12.6f%12.6f%12.6f%12.6f\n',iter,x0,u,v,err);
end;
if(v==0)
    disp('division by zero');
end;
if(iter>n)
    disp('method failed to converge');
end;

***************************************************************

function secant(f,x0,x1,tol,n)
%the secant method for solving the nonlinear f(x)=0
iter=0;
u=feval(f,x0);
v=feval(f,x1);
err=abs(x1-x0);
disp('-------------------------------------------------------------');
disp('iter    xn     f(xn)     f(x(n+1))-f(xn)      |x(n+1)-xn|');
disp('-------------------------------------------------------------');
fprintf('%2.0f%12.6f%12.6f\n',iter,x0,u);
fprintf('%2.0f%12.6f%12.6f%12.6f%12.6f\n',iter,x1,v,v-u,err);
while(err>tol)&(iter<=n)&((v-u)~=0)
    x=x1-v*(x1-x0)/(v-u);
    x0=x1;
    u=v;
    x1=x;
    v=feval(f,x1);
    err=abs(x1-x0);
    iter=iter+1;
    fprintf('%2.0f%12.6f%12.6f%12.6f%12.6f\n',iter,x1,v,v-u,err);
end
if((v-u)==0)
    disp('division by zero');
end
if(iter>n)
    disp('method failed to converge');
end   


[+] نوشته شده توسط جواد روائی در ساعت 10:04 ق.ظ | موضوع: اخبار ریاضی , | نظر |