- #1

RJLiberator

Gold Member

- 1,095

- 63

I have three problems that I've been trying to tackle for a while now.

These lines from a to F(a) are the ones I am talking about.

I have a for statement that does the following:

And this works great! I get the x1 and x2 values that I need into the w[ i ]and y arrays, and I can even evaluate them at my function.

But when I type something like:

In a different for statement, it ruins the code.

I'm guessing this is because when I create the TLine i am creating just one TLine called 'line2' and trying to feed it many different lines.

But, I do not know how to make it so that I can get TLine *linei where i goes through the for loop i++.

I am using root and I want to graph a function that looks like the following:

v = (a/b) (1-e^(-bt))

I try to define the exponential function part as float expo = exp(-b*t)

but this doesn't seem to work. I am guessing the exponential function does not work with root.

How can I get this to work? I know that there is some TMath:: things out there, but I have never been able to get them to work.

I have a simple TF1 graph that depicts free fall motion. I have solved it using the quadratic formula to find the root aka the time it takes for the particle to reach the floor.

I have this root labeled as t.

In my code I have the following:

As you can see, I am trying to use TText to let me write on the graph the "solution for t = " t.

But this doesn't work. The TText doesn't seem to know what to do when I simply write t.

Any suggestions on these three problems?

I thank you all greatly.

**1) I have a code for the bisection method. I would like to use TLine *line = new TLine function to create the lines that you normally see in the bisection method.**These lines from a to F(a) are the ones I am talking about.

I have a for statement that does the following:

Code:

```
for(int i = 0; i < 10; i++) //try 10 steps
{
c = 0.5*(x1+x2); // new midpoint
tempy= f->Eval(c);
w[ i ]=x1;
y[ i ]=x2;
if( fabs(tempy) < 0.00001 ) break;// found it!
if( tempy*f(x1) > 0 ) x1 =c;
else x2=c;
cout<<"\nThe value is: ";
cout<< c <<"\n\n The function value at this point is: "<<tempy<<endl;
cout<<"x1 = "<<w[ i ]<<", x2 = " <<y[ i ]<<endl ;
cout<<"\n\n Function evaluated at x1 = "<<f->Eval(w[ i ])<<"\n\n Function evaluated at x2 = "<<f->Eval(y[ i ])<<endl;
}
```

And this works great! I get the x1 and x2 values that I need into the w[ i ]and y arrays, and I can even evaluate them at my function.

But when I type something like:

Code:

```
TLine *line2 = new TLine(w[ i ], 0, w[ i ], f->Eval(w[ i ]));
TLine *line3 = new TLine(y[ i ], 0, y[i], f->Eval(y[ i ]));
line2->SetLineColor(kBlack);
line3->SetLineColor(kBlack);
line2->Draw("SAME");
line3->Draw("SAME");
```

In a different for statement, it ruins the code.

I'm guessing this is because when I create the TLine i am creating just one TLine called 'line2' and trying to feed it many different lines.

But, I do not know how to make it so that I can get TLine *linei where i goes through the for loop i++.

**2) The exponential function.**I am using root and I want to graph a function that looks like the following:

v = (a/b) (1-e^(-bt))

I try to define the exponential function part as float expo = exp(-b*t)

but this doesn't seem to work. I am guessing the exponential function does not work with root.

How can I get this to work? I know that there is some TMath:: things out there, but I have never been able to get them to work.

**3. I am trying to write text on my graph, but It wont let me use a variable.**I have a simple TF1 graph that depicts free fall motion. I have solved it using the quadratic formula to find the root aka the time it takes for the particle to reach the floor.

I have this root labeled as t.

In my code I have the following:

Code:

```
TF1 *fa1 = new TF1("fa1","[0]*x*x+[1]*x+[2]",0,2*t);
fa1->SetParameters(-0.5*g,v,h);
fa1->SetTitle("Projectile Motion");
fa1->GetYaxis()->SetTitle("Height in meters");
fa1->GetXaxis()->SetTitle("Time in seconds");
TLine *line = new TLine(0,0,2*t,0);
line->SetLineColor(kBlue);
TText *z = new TText(.5, -20, "Solution for t = ", t);
z->SetTextSize(0.02);
fa1->Draw();
line->Draw();
z->Draw();
```

As you can see, I am trying to use TText to let me write on the graph the "solution for t = " t.

But this doesn't work. The TText doesn't seem to know what to do when I simply write t.

Any suggestions on these three problems?

I thank you all greatly.

Last edited by a moderator: