تبلیغات
مطالب علمی-پزشکی-دانلود-و... . - محاسبات عددی با کامپیوتر (++C)
 
مطالب علمی-پزشکی-دانلود-و... .
شنبه 2 بهمن 1389 :: نویسنده : هادی مالک

ریشه یابی به روش نصف کردن (دو بخشی):

 

 

#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
long double function(long double);
int main()
{
long double a,b,p;
long double eps=pow(10,-3);
int c=0;
cout<<"enter a: ";
cin>>a;
cout<<"now enter b: ";
cin>>b;
cout<<" how mouch then Error will be?:";
cin>>eps;
do
{
 if(c%2==0)
cout<<'\n';
 c++;
p=(a+b)/(long double)2;
cout<<c<<setprecision(10)
<< setiosflags(ios::left | ios::fixed | ios::showpoint )
<<"-->"<<p<<'\t';
if(function(p)==0)
{
cout<<"the root is:"<<p;
break;
}
else if((function(p)*function(a))>0)
a=p;
else b=p;
}
while((b-a)>=(2*eps));
p=(a+b)/2;
cout<<"\n\tthe root is: "<<setprecision(17)
<< setiosflags(ios::fixed | ios::showpoint)<<p;
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++
long double function(long double x)
{
long double result;
result=cosl(x)-x;
return (result);
}
 
ریشه یابی به روش نابجایی:
 
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
long double f(long double);
int main()
{
long double a,b,Xn;
long double eps=pow(10,-3);
long double result;
int n=1;
cout<<"enter a: ";
cin>>a;
cout<<"now enter b: ";
cin>>b;
cout<<" how mouch then Error will be?:";
cin>>eps;
do
{
Xn=(a*f(b)-b*f(a))/(f(b)-f(a)) ;
if(f(a)*f(Xn)<0)
b=Xn;
else if(f(a)*f(Xn)>0)
a=Xn;
else if(f(a)*f(Xn)==0)
{
cout<<"the root exactly is: "<<Xn ;
break;
}
result=f(Xn);
if(result<0)     result*=-1;
n++;
}
while(result>=eps);
cout<<"\n\tthe root is: "<<setprecision(17)
<< setiosflags(ios::fixed | ios::showpoint)<<Xn;    
cout<<"n= "<<(n-1);
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++
long double f(long double x)
{
return (cosl(x)-x);
}
 
حل دستگاه (ماتریس) به روش نیوتون - رفسان:
 
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
long double f(long double);
long double f1(long double);
int main()
{
long double a,b,pn,pnn,ft;
long double eps=pow(10,-3);
long double result;
int n=1;
cout<<"enter a: ";
 cin>>a;
cout<<"now enter b: ";
 cin>>b;
cout<<" how mouch then Error will be?:";
 cin>>eps;
pn=(a+b)/2;
 do
 {
ft=f1(pn);
if (ft==0)
{
cout<<"we can't use it.there is a fatal error...";
break;
}
pnn=pn-(f(pn)/ft) ;
result=f(pnn);
if(result<0)  result*=-1;
pn=pnn;      
n++;
}
while(result>=eps);
cout<<"\n\tthe root is: "<<setprecision(17)
<< setiosflags(ios::fixed | ios::showpoint)<<pnn;    
gotoxy(22,3);
cout<<"n= "<<(n-1);
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++
long double f(long double x)
{
return (cosl(x)-x);
}
//++++++++++++++++++++++++++++++++++++++++++
long double f1(long double x)
{
return (-sinl(x)-1);
}
 
محاسبه انتگرال به روش سیمپسون
 
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
double f(double);
//++++++++++++++++++++++++
int main()
{
double A,B,h,n,xi,RESULT=0; 
cout << "Enter A:";
cin >> A; 
cout << "Enter B:";
cin >> B;
cout << "Enter h:";
cin >> h;
n=(B-A)/(2*h);
cout << "\nn = " << n <<"\n";
for(int long i=0;i<=(2*n);i++)
{
xi=A+i*h;
if(i==0 || (i==2*n))     RESULT+=f(xi) ;
else if((i%2==0) && (i!=0 || i!=2*n))  RESULT+=2*f(xi);
else if(i%2!=0)   RESULT+=4*f(xi);
}
RESULT*=(h/3.0) ;
cout<<"the result is : "<<setw(12)<<setprecision(20)<<RESULT;
getch();
return 0;
}
//++++++++++++++++++++++++++++++++++++++++
double f(double x)
{
return cos(exp(x)) ;
}
 




نوع مطلب :
برچسب ها :


صفحات جانبی
آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :