0% found this document useful (0 votes)
10 views6 pages

Bisection 2

All codes of numerical analysis sem-4

Uploaded by

forquizlet777
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views6 pages

Bisection 2

All codes of numerical analysis sem-4

Uploaded by

forquizlet777
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Bisection method

Bisection[a0_,b0_,e0_,n_]:=
Module[{},
a=N[a0];
b=N[b0];
e=N[e0];
i=0;
output={{a,b,i,}};
While[i<n,
c=(a+b)/2;
output=Append[output,{i+1,a,b,c}];
If[Sign[f[b]]==Sign[f[c]],b=c,a=c];
If[(b-a)/2<e,Print["Condition exists at ",i+1," . "];Break[]];
i=i+1;
];
Print[NumberForm[TableForm[output,TableHeadings->{None,{"i","a{i}","b{i}","c{i}"}}],16]];
Print[" Root p = ", NumberForm[c,16]];
]

Newton method
NewtonMethod[p0_,e0_,n_]:=
Module[{},
p=N[p0];
e=N[e0];
i=0;
output={{i,p}};
While[i<n,
p1=p-f[p]/f'[p];
output=Append[output,{i+1,p1}];
If[Abs[p1-p]<e,Print["Condition exists at ",i+1," . "];Break[]];
p=p1;
i=i+1;
];
Print[NumberForm[TableForm[output,{"i","p"}],18]];
Print[" p = ",NumberForm[p1,18]];
]

Secant method
SecantMethod[a0_,b0_,e0_,n_]:=
Module[{},
p=N[a0];
p1=N[b0];
e=N[e0];
i=0;
output={{i,p}};
While[i<n,
p2=p1-f[p1]*(p1-p)/(f[p1]-f[p]);
output=Append[output,{i+1,p2}];
If[Abs[p2-p1]<e,Print["Condition exists at ",i+1," . "];Break[]];
p=p1;
p=p2;
i=i+1;
];
Print[NumberForm[TableForm[output,{"i","p"}],18]];
Print[" p = ",NumberForm[p2,18]];
]

LUDecomposition(DooLittle and Crouts)


LUDoolittle[Data_]:=Module[{},
ClearAll;
U={{0,0,0},{0,0,0},{0,0,0}};
L={{1,0,0},{0,1,0},{0,0,1}};
n=Length[Data];
For[i=1,i<=n,i++,U[[1,i]]=Data[[1,i]]];
For[j=2,j<=n,j++,L[[j,1]]=Data[[j,1]]/U[[1,1]]];
For[k=2,k<=n-1,k++,
For[i=k,i<=n,i++,
U[[k,i]]=Data[[k,i]]-Sum[L[[k,j]]*U[[j,i]],{j,1,k-1}]
]
]
For[k=2,k<=n,k++,
For[j=k+1,j<=n,j++,
L[[j,k]]=(Data[[j,k]]-Sum[L[[j,i]]*U[[i,k]],{i,1,k-1}])/U[[k,k]]
]
]
For[k=3,k<=n,k++,
For[i=k,i<=n,i++,
U[[k,i]]=Data[[k,i]]-Sum[L[[k,j]]*U[[j,i]],{j,1,k-1}]
]
]
Print["L = ",MatrixForm[L]];
Print["U = ",MatrixForm[U]];
Print["Result Verification : ",MatrixForm[L],MatrixForm[U]," = ",MatrixForm[L.U]];
]

LUCrout[Data_]:=Module[{},
ClearAll;
L={{0,0,0},{0,0,0},{0,0,0}};
U={{1,0,0},{0,1,0},{0,0,1}};
n=Length[Data];
For[i=1,i<=n,i++,L[[i,1]]=Data[[i,1]]];
For[j=2,j<=n,j++,U[[1,j]]=Data[[1,j]]/L[[1,1]]];
For[k=2,k<=n-1,k++,
For[i=k,i<=n,i++,
L[[i,k]]=Data[[i,k]]-Sum[L[[i,j]]*U[[j,k]],{j,1,k-1}]
]
]
For[k=2,k<=n,k++,
For[j=k+1,j<=n,j++,
U[[k,j]]=(Data[[k,j]]-Sum[L[[k,i]]*U[[i,j]],{i,1,k-1}])/L[[k,k]]
]
]
For[k=3,k<=n,k++,
For[i=k,i<=n,i++,
L[[i,k]]=Data[[i,k]]-Sum[L[[i,j]]*U[[j,k]],{j,1,k-1}]
]
]
Print["L = ",MatrixForm[L]];
Print["U = ",MatrixForm[U]];
Print["Result Verification : ",MatrixForm[L],MatrixForm[U]," = ",MatrixForm[L.U]];
]

Gauss-Jacobi method
GaussJacobi[a0_,b0_,x0_,e0_,m0_]:=
Module[{},
A=a0;
B=b0;
X=x0;
n=Length[X];
e=N[e0];
m=N[m0];
k=0;
X1=X;
Print["Given System is : ",MatrixForm[A],"X = ",MatrixForm[B]];
output={{k,NumberForm[X1,10]}};
While[k<m,
For[i=1,i<=n,i++,
X1[[i]]=N[(1/A[[i,i]])*(B[[i]]-Sum[A[[i,j]]*X[[j]],{j,1,i-1}]-Sum[A[[i,j]]*X[[j]],{j,i+1,n}])];
];
output=Append[output,{k+1,NumberForm[X1,10]}];
If[Norm[X1-X]<e,Print["Condition Exists at ",k+1," . "];Break[]];
X=X1;
k++
];
Print[NumberForm[TableForm[output, TableHeadings->{None,{"k","X[]"}}],16]];
Print["X = ",NumberForm[X1,10]];
]
Gauss-Seidel method

GaussSeidel[a0_,b0_,x0_,e0_,m0_]:=
Module[{},
A=a0;
B=b0;
X=x0;
n=Length[X];
e=N[e0];
m=N[m0];
k=0;
X1=X;
Print["Given System is : ",MatrixForm[A],"X = ",MatrixForm[B]];
output={{k,NumberForm[X1,10]}};
While[k<m,
For[i=1,i<=n,i++,
X1[[i]]=N[(1/A[[i,i]])*(B[[i]]-Sum[A[[i,j]]*X1[[j]],{j,1,i-1}]-Sum[A[[i,j]]*X[[j]],{j,i+1,n}])];
];
output=Append[output,{k+1,NumberForm[X1,10]}];
If[Norm[X1-X]<e,Print["Condition Exists at ",k+1," . "];Break[]];
X=X1;
k++
];
Print[NumberForm[TableForm[output,TableHeadings->{None,{"k","X[]"}}],16]];
Print["X = ",NumberForm[X1,10]];
]

Lagrange and NDD


Lagrange[Data_]:=Module[{},
X[k_]:=Transpose[Data][[1,k+1]];
Y[k_]:=Transpose[Data][[2,k+1]];
n=Length[Data]-1;
For[k=0,k<=n,k++,
L[n,k,x_]:=Expand[Product[(x-X[j])/(X[k]-X[j]),{j,0,k-1}]*Product[(x-X[j])/(X[k]-X[j]),{j,k+1,n}]]
];
Return[Expand[Sum[Y[k]*L[n,k,x],{k,0,n}]]];
]

NDD[Data_,i_,j_]:=Module[{},
X[k_]:=Transpose[Data][[1,k+1]];
Y[k_]:=Transpose[Data][[2,k+1]];
If[i==j,Return[Y[i]],
Return[(NDD[Data,i+1,j]-NDD[Data,i,j-1])/(X[j]-X[i])]];
];
NewtonInterpolation[Data_]:=Module[{},
X[k_]:=Transpose[Data][[1,k+1]];
Y[k_]:=Transpose[Data][[2,k+1]];
n=Length[Data]-1;
Return[Expand[Sum[NDD[Data,0,k]*Product[(x-X[i]),{i,0,k-1}],{k,0,n}]]];
];

Trapezoidal Rule Code


a=1;
b=2;
h=(b-a)/2;
f[x_]:=x^5+2x^4+x+1;
SI=(h)*(f[a]+f[b]);
Print["Integration by Trapezoidal rule : ",N[SI]];
DI=Integrate[f[x],{x,1,2}];
Print["Integration by direct rule : ",N[DI]];
Print["Error : ",Abs[N[SI]-N[DI]]]

Simpson’s 1/3 rule


a=1;
b=2;
h=(b-a)/2;
f[x_]:=Exp[x^2]+Exp[-x];
SI=(h/3)*(f[a]+4f[a+h]+f[a+2h]);
Print["Integration by Simpson's 1/3rd rule : ",N[SI]];
DI=Integrate[f[x],{x,1,2}];
Print["Integration by direct rule : ",N[DI]];
Print["Error : ",Abs[N[SI]-N[DI]]]

Simpson’s 3/8 rule


a=1;
b=2;
h=(b-a)/3;
f[x_]:=x^5+2x^4+x+1;
SI=(3h/8)*(f[a]+3f[a+h]+3f[a+2h]+f[a+3h]);
Print["Integration by Simpson's 3/8th rule : ",N[SI]];
DI=Integrate[f[x],{x,1,2}];
Print["Integration by direct rule : ",N[DI]];
Print["Error : ",Abs[N[SI]-N[DI]]]

Euler’s method
Eulermethod[a0_,b0_,h0_,f_,alpha_]:=Module[{a=N[a0],b=N[b0],h=N[h0],n,x},
n=(b-a)/h;
y[0]=alpha;
For[i=0,i<=n,i++,
x[i]=a+h*i;
y[i+1]=y[i]+h*f[x[i],y[i]];
Print["value at x[",i,"] = ",x[i]," is ",y[i]];
];
]

Runge-Kutta Code
RungeKutta[a0_,b0_,n0_,f_,alpha_]:=Module[{a=N[a0],b=N[b0],n=N[n0],h,ti,k1},
h=(b-a)/n;
ti=Table[a+(j-1)h,{j,1,n+1}];
wi=Table[0,{n+1}];
wi[[1]]=alpha;
outputdetails={{0,ti[[i]],alpha}};
For[i=1,i<=n,i++,
k1=wi[[i]]+(h/2)*f[ti[[i]],wi[[i]]];
wi[[i+1]]=wi[[i]]+h*f[ti[[i]]+h/2,k1];
outputdetails=Append[outputdetails,{i,N[ti[[i+1]]],N[wi[[i+1]]]}];];
Print[NumberForm[TableForm[outputdetails,TableHeadings->{None,{"i","ti","wi"}}],6]];]

You might also like