Sunteți pe pagina 1din 15

1.

METODA DIRECTA DE REZOLVARE A SISTEMELOR ALGEBRICE LINIARE TRIUNGHIULARE SUPERIOR


#include<iostream>
using namespace std;
int main()
{
float a[20][20],x[20],b[20],S;
int i,j,n;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
cout<<"Dati termenii liberi"<<endl;
for(j=1;j<=n;j++)
{
cout<<"b"<<j<<"=";
cin>>b[j];
}
x[n]=b[n]/a[n][n];
for(i=n-1;i>=1;i--)
{
S=0;
for(j=i+1;j<=n;j++)
S=S+a[i][j]*x[j];
x[i]=(b[i]-S)/a[i][i];
}
cout<<"Solutiile sunt:"<<endl;
for(i=1;i<=n;i++)
cout<<"x"<<i<<"="<<x[i]<<" ";
system("PAUSE");
}
2. METODA DIRECTA DE REZOLVARE A SISTEMELOR ALGEBRICE LINIARE TRIUNGHIULARE INFERIOR
#include<iostream>
using namespace std;
int main()
float a[20][20],x[20],b[20],S;
int i,j,n;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
cout<<"Dati termenii liberi"<<endl;
for(j=1;j<=n;j++)
{
cout<<"b"<<j<<"=";
cin>>b[j];
}
x[1]=b[1]/a[1][1];
for(i=2;i<=n;i++)
{
S=b[i];
for(j=1;j<=i-1;j++)
S=S-a[i][j]*x[j];
x[i]=S/a[i][i];
}
cout<<"Solutiile sunt:"<<endl;
for(i=1;i<=n;i++)
cout<<"x"<<i<<"="<<x[i]<<" ";
system("PAUSE");
}

3.GAUSS
#include<iostream>
#include<math.h>
using namespace std;
int main(){
double a[100][100],b[100],x[100],M,aux,S;
int n,i,j,k,p;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i];
a[i][n+1]=b[i];
}
for(k=1;k<=n-1;k++)
{
M=fabs(a[k][k]);
p=k;
for(i=k;i<=n;i++)
if(fabs(a[i][k])>M)
{
M=fabs(a[i][k]);
p=i;
}
if(a[p][k]!=0)
{
if(p!=k){
for(j=1;j<=n;j++)
{
aux=a[p][j];
a[p][j]=a[k][j];
a[k][j]=aux;}}
for(i=k+1;i<=n;i++){
for(j=k+1;j<=n+1;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j]/a[k][k];
a[i][k]=0;
}
}}
x[n]=a[n][n+1]/a[n][n];
for(i=n-1;i>=1;i--){
S=0;
for(k=i+1;k<=n;k++)
S=S+a[i][k]*x[k];
x[i]=(a[i][n+1]-S)/a[i][i];
}
for(i=1;i<=n;i++)
cout<<"x["<<i<<"]="<<x[i]<<endl;}

4.LU
#include<iostream>
using namespace std;
int main()
{
double a[100][100],l[100][100],u[100][100],b[100],x[100],y[100],s;
int n,i,j,r,k;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i]; }
for(i=1;i<=n;i++){
cout<<"u["<<i<<"]["<<i<<"]=";
cin>>u[i][i];}
for(i=1;i<=n;i++){
l[i][1]=a[i][1]/u[1][1];}
for(j=1;j<=n;j++)
u[1][j]=a[1][j]/l[1][1];
for(r=2;r<=n;r++){
for(i=r;i<=n;i++)
{
s=0;
for(k=1;k<=r-1;k++)
s+=l[i][k]*u[k][r];
l[i][r]=(a[i][r]-s)/u[r][r];
for(j=r;j<=n;j++)
{
s=0;
for(k=1;k<=r-1;k++)
s+=l[r][k]*u[k][j];
u[r][j]=(a[r][j]-s)/l[r][r];
y[1]=b[1]/l[1][1];
for(i=2;i<=n;i++){
s=0;
for(j=1;j<=i-1;j++)
s+=l[i][j]*y[j];
y[i]=(b[i]-s)/l[i][i];}
x[n]=y[n]/u[n][n];
for(i=n-1;i>=1;i--){
s=0;
for(j=i+1;j<=n;j++)
s+=u[i][j]*x[j];
x[i]=(y[i]-s)/u[i][i];}
cout<<"Elementele matricei L:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<l[i][j]<<" ";
cout<<endl; }
cout<<"Elementele matricei U:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<u[i][j]<<" ";
cout<<endl; }
cout<<"Solutia sistemului Ax=b :"<<endl;
for(i=1;i<=n;i++)
cout<<"x["<<i<<"]="<<x[i]<<endl;}

}}

5.CROUT
#include<iostream.h>
int main()
{
double a[100][100],l[100][100],u[100][100],b[100],x[100],y[100],s;
int i,j,n,r,k;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i]; }
for(i=1;i<=n;i++)
u[i][i]=1;
for(i=1;i<=n;i++)
{
l[i][1]=a[i][1];
u[1][i]=a[1][i]/l[1][1];
}
for(r=2;r<=n;r++)
{
for(i=r;i<=n;i++)
{
s=0;
for(k=1;k<=r-1;k++)
s+=l[i][k]*u[k][r];
l[i][r]=a[i][r]-s;
}
for(j=r;j<=n;j++)
{
s=0;
for(k=1;k<=r-1;k++)
s+=l[r][k]*u[k][j];
u[r][j]=(a[r][j]-s)/l[r][r];
}
}
y[1]=b[1]/l[1][1];
for(i=2;i<=n;i++) {
s=0;
for(j=1;j<=i-1;j++)
s+=l[i][j]*y[j];
y[i]=(b[i]-s)/l[i][i];
}
x[n]=y[n];
for(i=n-1;i>=1;i--)
{
s=0;
for(j=i+1;j<=n;j++)
s+=u[i][j]*x[j];
x[i]=y[i]-s; }
cout<<"Elementele matricei L:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<l[i][j]<<" ";
cout<<endl; }
cout<<"Elementele matricei U:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<u[i][j]<<" ";
cout<<endl; }
cout<<"Solutia sistemului Ax=b :"<<endl;
for(i=1;i<=n;i++)
cout<<"x["<<i<<"]="<<x[i]<<endl;
system("PAUSE")}

6.DOOLITTE
#include<iostream>
using namespace std;
int main(){
double a[100][100],l[100][100],u[100][100],b[100],x[100],y[100],s;
int n,i,j,r,k;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i]; }
for(j=1;j<=n;j++)
u[1][j]=a[1][j];
for(i=1;i<=n;i++){
l[i][1]=a[i][1]/u[1][1];}
for(r=2;r<=n;r++){
for(j=r;j<=n;j++){
s=0;
for(k=1;k<=r-1;k++)
s+=l[r][k]*u[k][j];
u[r][j]=a[r][j]-s;
for(i=r;i<=n;i++){
s=0;
for(k=1;k<=r-1;k++)
s+=l[i][k]*u[k][r];
l[i][r]=(a[i][r]-s)/u[r][r];}}}
y[1]=b[1];
for(i=2;i<=n;i++){
s=0;
for(j=1;j<=i-1;j++)
s+=l[i][j]*y[j];
y[i]=b[i]-s;}
x[n]=y[n];
for(i=n-1;i>=1;i--){
s=0;
for(j=i+1;j<=n;j++)
s+=u[i][j]*x[j];
x[i]=(y[i]-s)/u[i][i];}
cout<<"Elementele matricei L:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<l[i][j]<<" ";
cout<<endl;
}
cout<<"Elementele matricei U:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<u[i][j]<<" ";
cout<<endl; }
cout<<"Solutia sistemului Ax=b :"<<endl;
for(i=1;i<=n;i++)
cout<<"x["<<i<<"]="<<x[i]<<endl;}

7.CHOLESKY
#include<iostream>
#include<math.h>
using namespace std;
int main(){
double a[100][100],l[100][100],b[100],x[100],y[100],s;
int i,j,n,r,k;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i]; }
l[1][1]=sqrt(a[1][1]);
for(i=2;i<=n;i++)
l[i][1]=a[i][1]/l[1][1];
for(r=2;r<=n;r++) {
s=0;
for(j=1;j<=r-1;j++)
s+=l[r][j]*l[r][j];
l[r][r]=sqrt(a[r][r]-s);
for(i=r+1;i<=n;i++)
{
s=0;
for(k=1;k<=r-1;k++)
s+=l[i][k]*l[r][k];
l[i][r]=(a[i][r]-s)/l[r][r]; }}
y[1]=b[1]/l[1][1];
for(i=2;i<=n;i++){
s=0;
for(j=1;j<=i-1;j++)
s+=l[i][j]*y[j];
y[i]=(b[i]-s)/l[i][i]; }
x[n]=y[n]/l[n][n];
for(i=n-1;i>=1;i--)
{
s=0;
for(j=i+1;j<=n;j++)
s+=l[i][j]*x[j];
x[i]=(y[i]-s)/l[i][i];
}
cout<<"Elementele matricei L:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<l[i][j]<<" ";
cout<<endl;
}
cout<<endl<<"Elementele matricei L transpus:"<<endl;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
cout<<l[j][i]<<" ";
cout<<endl; }
cout<<endl<<"Solutia sistemului Ax=b :"<<endl;
for(i=1;i<=n;i++)
cout<<"x["<<i<<"]="<<x[i]<<endl;}

8.APROXIMARI SUCCESIVE
#include<iostream>
#include<math.h>
using namespace std;
int main(){
double a[100][100],l[100][100],u[100][100],b[100],x[100],y[100],s;
int n,i,j,k,m;
float eps,M,q,S;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i];}
cout<<"eroare admisibila=";
cin>>eps;
q=0;
for(i=1;i<=n;i++){
M=fabs(1-a[i][i]);
for(j=1;j<=n;j++)
if(j!=i) M=M+fabs(a[i][j]);
if(M>q) q=M ;}
if(q<1){
for(i=1;i<=n;i++){
S=0;
for(j=1;j<=n;j++)
S+=a[i][j]*x[j];
y[i]=x[i]+b[i]-S;}
M=0;
for(i=1;i<=n;i++)
if(fabs(x[i]-y[i])>M)
M=fabs(x[i]-y[i]);
k=log(eps*(1-q)/M)/log(q)+1;
for(m=2;m<=k;m++){
for(i=1;i<=n;i++)
x[i]=y[i];
for(i=1;i<=n;i++){
S=0;
for(j=1;j<=n;j++)
S+=a[i][j]*x[j];
y[i]=x[i]+b[i]-S; }}}
else
cout<<"Nu este asigurata convergenta";
cout<<"Ultima aproximatie calculata:"<<endl;
for(i=1;i<=n;i++)
cout<<"x["<<i<<"]="<<y[i]<<endl;
cout<<"Nr. iteratii calculate="<<k;}

9.JACOBI
#include<iostream.h>
#include<math.h>
int main(){
double p,s,a[100][100],b[100],eps,x[100],y[100],q,max1,t,k;
int n,i,j,m;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) {
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i]; }
cout<<"EPS=";cin>>eps;
for(i=1;i<=n;i++){
cout<<"x["<<i<<"]=";
cin>>x[i];}
for(i=1;i<=n;i++){
s=0;
max1=fabs(x[1]-y[1]);
for(j=1;j<=n;j++)
if(j!=i)
s+=fabs(a[i][j]);
t=s/fabs(a[i][i]);
if(t>max1)
max1=t; }
q=max1;
if(q<1){
m=1;
for(i=1;i<=n;i++) {
s=0;
for(j=1;j<=n;j++)
if(j!=i)
s+=a[i][j]*x[j];
y[i]=(b[i]-s)/a[i][i];}
max1=fabs(x[1]-y[1]);
for(i=1;i<=n;i++){
t=fabs(x[i]-y[i]);
if(t>max1)
max1=t;}
k=1;
p=q*max1/(1-q);
while(p>=eps){
p=p*q;
k++;}
for(m=2;m<=k;m++){
for(i=1;i<=n;i++)
x[i]=y[i];
for(i=1;i<=n;i++) {
s=0;
for(j=1;j<=n;j++)
if(j!=i)
s+=a[i][j]*x[j];
y[i]=(b[i]-s)/a[i][i]; }}
}else cout<<"Nu este asigurata convergenta ";
for(i=1;i<=n;i++)
cout<<"y["<<i<<"]="<<y[i]<<endl;
cout<<"Nr iteratii calculate="<<k;}

10.GAUSS-SEIDEL
#include<iostream.h>
#include<math.h>
int main(){
double p,s,a[100][100],b[100],eps,x[100],y[100],q,max1,t,k;
int n,i,j,m;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for(i=1;i<=n;i++){
cout<<"b["<<i<<"]=";
cin>>b[i];}
cout<<"EPS=";cin>>eps;
for(i=1;i<=n;i++){
cout<<"x["<<i<<"]=";
cin>>x[i];}
for(i=1;i<=n;i++){
s=0;
max1=fabs(x[1]-y[1]);
for(j=1;j<=n;j++)
if(j!=i)
s+=fabs(a[i][j]);
t=s/fabs(a[i][i]);
if(t>max1)
max1=t;}
q=max1;
if(q<1){
m=1;
for(i=1;i<=n;i++){
s=0;
for(j=1;j<=n;j++)
if(j<=i-1)
s+=a[i][j]*x[j];
else if(j>=i+1)
s+=a[i][j]*x[j];
y[i]=(b[i]-s)/a[i][i];}
max1=fabs(x[1]-y[1]);
for(i=1;i<=n;i++){
t=fabs(x[i]-y[i]);
if(t>max1)
max1=t; }
k=1;
p=q*max1/(1-q);
while(p>=eps){
p=p*q;
k++;}
for(m=2;m<=k;m++){
for(i=1;i<=n;i++)
x[i]=y[i];
for(i=1;i<=n;i++) {
s=0;
for(j=1;j<=n;j++)
if(j<=i-1)
s+=a[i][j]*y[j];
else if(j>=i+1)
s+=a[i][j]*x[j];
y[i]=(b[i]-s)/a[i][i];}}
}else cout<<"Nu este asigurata convergenta ";
for(i=1;i<=n;i++)
cout<<y[i]<<endl;
cout<<"nr iteratii calculate="<<k; }

11.AITKEN
#include<iostream.h>
#include<math.h>
int main()
{
double f[100][100],a,b,x[100],y[100],c,eps,s,faprox,grad;
int n,i,j,m;
cout<<"Dati intervalul ";cout<<"a=";cin>>a;cout<<"b=";cin>>b;
cout<<"n=";cin>>n;
x[0]=4.2749850;
x[1]=4.2749851;
x[2]=4.2749852;
x[3]=4.2749854;
x[4]=4.2749855;
x[5]=4.2749856;
x[6]=4.2749857;
x[7]=4.2749858;
y[0]=1.452780594;
y[1]=1.452780617;
y[2]=1.452780640;
y[3]=1.452780687;
y[4]=1.452780711;
y[5]=1.452780734;
y[6]=1.452780757;
y[7]=1.452780781;
/* for(i=1;i<=n;i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}
for(i=1;i<=n;i++)
{
cout<<"y["<<i<<"]=";
cin>>y[i];
}*/
cout<<"EPS=";cin>>eps;
cout<<"c=";cin>>c;
for(i=0;i<=n;i++)
f[i][0]=y[i];
for(j=0;j<=n-1;j++)
for(i=j+1;i<=n;i++)
f[i][j+1]=((c-x[i])*f[i-1][j]-(c-x[i-j-1])*f[i][j])/(x[i-j-1]-x[i]);
i=1;
while(fabs(f[i][i]-f[i-1][i-1])>eps && i<=n)
i++;
if(i<=n)
{
faprox=f[i][i];
grad=i;
}
else
cout<<"Nu s-a putut determina valoarea aproximativa
a functiei f in punctul "<<c<<" cu precizia admisibila "<<eps;
cout.precision(10);
cout<<" valoarea aproximativa a functiei f in punctul "
<<c<<" cu precizia admisibila "<<endl;
cout<<eps<<" este "<<faprox<<" si gradul este "<<grad<<endl;
system("PAUSE");
}

12.TRAPEZ
#include<math.h>
#include<iostream>
using namespace std;
double f(double x){
return exp(-x*x);
}
int main(){
double a,b,n,x[101],s,h,Iaprox;
int i;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"n="; cin>>n;
h=(b-a)/n;
for(i=1;i<n;i++)
x[i]=a+i*h;
s=0;
for(i=1;i<n;i++)
s+=f(x[i]);
Iaprox=(h/2)*(f(a)+2*s+f(b));
cout<<"Solutia="<<Iaprox;
system("Pause");
}

13.SIMPSON
#include<math.h>
#include<iostream>
using namespace std;
double f(double x){
return exp(-x*x);
}
int main(){
double a,b,n,x[101],y[101],s1,s2,h,Iaprox;
int i;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"n="; cin>>n;
h=(b-a)/n;
for(i=1;i<n;i++)
x[i]=a+i*h;
for(i=1;i<=n;i++)
y[i]=a+(i-1/2)*h;
s1=0;
for(i=1;i<n;i++)
s1+=f(x[i]);
s2=0;
for(i=1;i<n;i++)
s2+=f(y[i]);
Iaprox=(h/6)*(f(a)+2*s1+4*s2+f(b));
cout<<"Solutia="<<Iaprox;
system("Pause");
}

14.DREPTUNGHI
#include<math.h>
#include<iostream>
using namespace std;
double f(double x){
return exp(-x*x);
}
int main(){
double a,b,n,y[101],s,h,Iaprox;
int i;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"n="; cin>>n;
h=(b-a)/n;
for(i=1;i<=n;i++)
y[i]=a+(i-1/2)*h;
s=0;
for(i=1;i<=n;i++)
s+=f(y[i]);
Iaprox=h*s;
cout<<"Solutia="<<Iaprox;
system("Pause");

15.BISECTIEI
#include<iostream.h>
#include<math.h>
double f(double x)
{
return (x*x*x+(x-1));
}
int main()
{
int A,B,n,k;
double saprox,eps,a[100],b[100],c[100],t;
cout<<"a=";cin>>A;
cout<<"b=";cin>>B;
cout<<"eps=";cin>>eps;
n=0;
t=B-A;
while(t/pow(2,n)>=eps)
n++;
a[0]=A;
b[0]=B;
c[0]=(a[0]+b[0])/2;
for(k=1;k<=n;k++)
if(f(A)*f(c[k-1])<=0)
{
a[k]=a[k-1];
b[k]=c[k-1];
c[k]=(a[k]+b[k])/2;
}
else
{
a[k]=c[k-1];
b[k]=b[k-1];
c[k]=(a[k]+b[k])/2;
}
saprox=c[n];
cout<<"solutia aproximativa a ecuatiei="<<saprox;
cout<<"nr iteratii efectuate="<<n;
saprox=c[n];
cout<<"solutia aprox a ecuatiei este "<<saprox;
cout<<"numar interatii="<<n;
}
16.TANGENTEI
#include<iostream.h>
#include<math.h>
double f(double x)
{
return (x*x*x+x*x+(x-1));
}
double fderiv(double x)
{
return (3*x*x+2*x+1);
}
int main()
{
int a,b,k;
double saprox,eps,x[100];
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"eps=";cin>>eps;
if(f(a)*(fderiv(a)-fderiv(b))<0)
x[0]=a;
else x[0]=b;
k=0;
while(fabs(f(x[k]))>=eps)
{
k++;
x[k]=x[k-1]-(f(x[k-1])/fderiv(x[k-1]));
}
saprox=x[k];
cout<<"solutia aprox a ecuatiei este "<<saprox;
cout<<"numar interatii="<<k;
}

17.COARDEI
#include<iostream.h>
#include<math.h>
double f(double x)
{
return (x*x*x+x-1);
}
int main()
{
int A,B,k;
double saprox,eps,a[100],b[100],c[100];
cout<<"A=";cin>>A;
cout<<"B=";cin>>B;
cout<<"eps=";cin>>eps;
a[0]=A;
b[0]=B;
c[0]=(a[0]*f(b[0])-b[0]*f(a[0]))/(f(b[0])-f(a[0]));
k=0;
while(fabs(f(c[k]))>=eps)
{
if(f(A)*f(c[k])<=0)
{
k++;
a[k]=a[k-1];
b[k]=c[k-1];
c[k]=(a[k]*f(b[k])-b[k]*f(a[k]))/(f(b[k])-f(a[k]));
}
else
{
k++;
a[k]=c[k-1];
b[k]=b[k-1];
c[k]=(a[k]*f(b[k])-b[k]*f(a[k]))/(f(b[k])-f(a[k]));
}
}
saprox=c[k];
cout<<"solutia aprox a ecuatiei este "<<saprox<<endl;
cout<<"numar interatii= "<<k<<endl;
system("PAUSE");
}
18.COARDA-TANGENTA
#include<iostream.h>
#include<math.h>
double f(double x)
{
return (x*x*x+x*x+(x-1));
}
double fderiv(double x)
{
return (3*x*x+2*x+1);
}
int main()
{
int a,b,k;
double saprox,eps,x[100],s[100],t[100];
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"eps=";cin>>eps;
if(f(a)*fderiv(a)<0)
{
s[0]=a;
t[0]=b;
}
else
{
s[0]=b;
t[0]=a;
}
k=0;
while(fabs(s[k]-t[k])>=eps)
{
k++;
s[k]=(s[k-1]*f(t[k-1])-t[k-1]*f(s[k-1]))/(f(t[k-1])-f(s[k-1]));
t[k]=t[k-1]-f(t[k-1])/fderiv(t[k-1]);
x[k]=(s[k]+t[k])/2;
}
saprox=x[k];
cout<<"solutia aprox a ecuatiei este "<<saprox;
cout<<"numar interatii="<<k;
}

19.EULER
a#include<iostream>
using namespace std;
double f(double x,double y){
return x*x-y;
}
double s(double x){
return -exp(-x)+x*x-2*x+2;
}
int main(){
double a,b,x[20],y[20],l,h;
int n,N;
cout<<"x[0]=";cin>>x[0];
cout<<"y[0]=";cin>>y[0];
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"alfa=";cin>>l;
cout<<"h=";cin>>h;
N=int(l/h);
for(n=1;n<=N;n++)
{
x[n]=x[0]+n*h;
y[n]=y[n-1]+h*f(x[n-1],y[n-1]);
}
for(n=1;n<=N;n++)
{
cout<<"x["<<n<<"]="<<x[n]<<" ";
cout<<"y["<<n<<"]="<<y[n]<<" ";
cout<<"Sol. exacta pt x["<<n<<"]="<<s(x[n])<<endl;
}
system("PAUSE");
}
20. EULER-CAOUCHY
#include<iostream.h>
#include<math.h>
double f(double x,double y)
{
return (x*x)-y;
}
double s(double x){
return -exp(-x)+x*x-2*x+2;
}
int main()
{
double x[100],y[100],a,b,alfa,h,g,g1,g2;
int N,n;
cout<<"x0=";cin>>x[0];
cout<<"y0=";cin>>y[0];
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"alfa=";cin>>alfa;
cout<<"h=";cin>>h;
N=int(alfa/h);
for(n=1;n<=N;n++)
{
x[n]=x[0]+n*h;
g1=f(x[n-1],y[n-1]);
g2=f(x[n-1]+h,y[n-1]+g1*h);
g=1/2*g1+1/2*g2;
y[n]=y[n-1]+h*g;
}
for(n=1;n<=N;n++)
{
cout<<"x["<<n<<"]="<<x[n]<<" ";
cout<<"y["<<n<<"]="<<y[n]<<" ";
cout<<"Sol. exacta pt x["<<n<<"]="<<s(x[n])<<endl;
}
system("PAUSE");
}

21.RUNGE-KUTTA ORDIN I
#include<iostream>
using namespace std;
double f(double x,double y){
return x*x-y;
}
double s(double x){
return -exp(-x)+x*x-2*x+2;
}
int main(){
double a,b,x[20],y[20],l,h,g1,g2,g3,g;
int n,N;
cout<<"x[0]=";cin>>x[0];
cout<<"y[0]=";cin>>y[0];
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"alfa=";cin>>l;
cout<<"h=";cin>>h;
N=int(l/h);
for(n=1;n<=N;n++
{
x[n]=x[0]+n*h;
g1=f(x[n-1],y[n-1]);
g2=f(x[n-1]+h/2,y[n-1]+(g1*h)/2);
g3=f(x[n-1]+h,y[n-1]-g1*h+2*g2*h);
g=g1/6+(2*g2)/3+g3/6;
y[n]=y[n-1]+h*g;
}
for(n=1;n<=N;n++)
{
cout<<"x["<<n<<"]="<<x[n]<<" ";
cout<<"y["<<n<<"]="<<y[n]<<" ";
cout<<"Sol. exacta pt x["<<n<<"]="<<s(x[n])<<endl;
}
system("PAUSE");
}
22.RUNGE-KUTTA ORDIN II
#include<iostream.h>
#include<math.h>
double f(double x,double y)
{
return (x*x)-y;
}
double s(double x){
return -exp(-x)+x*x-2*x+2;
}
int main()
{
double x[100],y[100],a,b,alfa,h,g,g1,g2,g3,g4;
int N,n;
cout<<"x0=";cin>>x[0];
cout<<"y0=";cin>>y[0];
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"alfa=";cin>>alfa;
cout<<"h=";cin>>h;
N=int(alfa/h);
for(n=1;n<=N;n++)
{
x[n]=x[0]+n*h;
g1=f(x[n-1],y[n-1]);
g2=f(x[n-1]+1/2*h,y[n-1]+1/2*g1*h);
g3=f(x[n-1]+1/2*h,y[n-1]+1/2*g2*h);
g4=f(x[n-1]+h,y[n-1]+g3*h);
g=1/6*g1+1/3*g2+1/3*g3+1/6*g4;
y[n]=y[n-1]+h*g;
}
for(n=1;n<=N;n++)
{
cout<<"x["<<n<<"]="<<x[n]<<" ";
cout<<"y["<<n<<"]="<<y[n]<<" ";
cout<<"Sol. exacta pt x["<<n<<"]="<<s(x[n])<<endl;
}
system("PAUSE");
}

S-ar putea să vă placă și