#include #include #include #include "rk2.hh" #include "rk4.hh" #include "euler.hh" #include "heun.hh" #include "f.hh" #include #include #include "TApplication.h" #include "TGraph.h" #include "TCanvas.h" #include "TF1.h" #include #include "TLegend.h" using namespace std; int main() { double a=0.0; double x0=a; double h=0.2; double y0=1.0; double b= 1.0; int N = (int) (b-a)/h +1; double heunout[N]; double eulerout[N]; double rk2out[N]; double rk4out[N]; double x[N], yA[N], y1[N], y2[N], y3[N],y4[N]; TApplication myApp ("myApp", 0, 0); euler(a,b,h,N,y0,eulerout); heun(a,b,h,N,y0, heunout); rk2(a,b,h,N,y0,rk2out); rk4(a,b,h,N,y0,rk4out); //scrivi i risultati nel file out.dat ofstream os; os.open("out.dat"); if(not os) cout <<"unable to oper/write file'out.dat', " << endl; else { os<cd(); soluzAnalit->SetLineColor(8); soluzAnalit->Draw(""); TCanvas* all = new TCanvas ("all","All in one"); all->Divide(2,2); all->cd(1); eulero->SetMarkerStyle(21); eulero->SetTitle("Eulero"); eulero->SetMarkerColor(4); eulero->Draw("APC"); soluzAnalit->Draw("same"); TLegend* leg = new TLegend(0.45,0.75,0.89,0.89); leg->SetHeader("Eulero vs Soluz. Analit."); leg->SetTextSize(0.05); leg->Draw(""); all->cd(2); heun->SetMarkerStyle(21); heun->SetTitle("Heun"); heun->SetMarkerColor(3); heun->Draw("APC"); soluzAnalit->Draw("same"); TLegend* leg1 = new TLegend(0.45,0.75,0.89,0.89); leg1->SetHeader("Heun vs Soluz. Analit."); leg1->SetTextSize(0.05); leg1->Draw(""); all->cd(3); rk2->SetMarkerStyle(21); rk2->SetTitle("RK2"); rk2->SetMarkerColor(6); rk2->Draw("APC"); soluzAnalit->Draw("same"); TLegend*leg2 = new TLegend(0.45,0.75,0.89,0.89); leg2->SetHeader("RK2 vs Soluz. Analit."); leg2->SetTextSize(0.05); leg2->Draw(""); all->cd(4); rk4->SetMarkerStyle(21); rk4->SetTitle("RK4"); rk4->SetMarkerColor(7); rk4->Draw("APC"); soluzAnalit->Draw("same"); TLegend* leg3 = new TLegend(0.45,0.75,0.89,0.98); leg3->SetHeader("RK4 vs Soluz. Analit. "); leg3->SetTextSize(0.05); leg3->Draw(""); myApp.Run(); return 0; }