Mathematica differential equation

Click For Summary
SUMMARY

The discussion focuses on solving the differential equation d²x(t)/dt² + x(t)(x²(t) - 1) + t = 0 using Mathematica's NDSolve function. The initial conditions are x(0) = 1 and dx(0)/dt = 0, with the solution plotted over the domain t ∈ [0, 10]. Key issues included incorrect variable usage and duplicate variable errors, which were resolved by correcting the syntax to x[t] instead of x^2[t] and ensuring the correct variable names were used. The final working code is n1 = NDSolve[{x''[t] + x[t](x[t]^2 - 1) + t == 0, x[0] == 1, x'[0] == 0}, x, {t, 0, 10}].

PREREQUISITES
  • Familiarity with Mathematica syntax and functions.
  • Understanding of differential equations and their numerical solutions.
  • Knowledge of initial conditions in differential equations.
  • Experience with plotting functions in Mathematica.
NEXT STEPS
  • Explore advanced features of NDSolve in Mathematica.
  • Learn about plotting multiple functions using the Plot function in Mathematica.
  • Investigate the differences between interpolated functions and explicit function evaluations in Mathematica.
  • Study error handling and debugging techniques in Mathematica for differential equations.
USEFUL FOR

Mathematics students, researchers in applied mathematics, and anyone using Mathematica for solving differential equations will benefit from this discussion.

P-Jay1
Messages
32
Reaction score
0
On mathematica:
Solve the differential equation

d^2 x(t)/dt^2 + x(t)(x^2(t) − 1) + t = 0

numerically, subject to the initial conditions that x(0) = 1 and dx(0)/dt = 0. Use
Plot to plot the solution for the domain t 2 [0, 10].
2.

Above is what I'm trying to do. Below is what I've typed in on mathematica:

s = NDSolve[{x''[t] + (x[t]) (x[t]^2 - 1) + t == 0, x[0] == 1,
x3'[0] == 0}, x, {t, 0, 10}]

This is wrong, it says it's not a diff. equation. Where am i going wrong?
 
Physics news on Phys.org
You have x3'[0] instead of x'[0].
That's the only problem...
 
Simon_Tyler said:
You have x3'[0] instead of x'[0].
That's the only problem...

Sorry that was mistake, but it's still wrong, I've tryed everything i can think of.

n = NDSolve[{x''[t] + x[t] (x^2[t] - 1) + t == 0, x[0] == 1,
x'[0] == 0}, x[t], t, {t, 0, 10}]

above is what i got. Says duplicate variable t found, so it's still wrong. I'm not sure what to do, any ideas?
 
I have fought with the obsession of both Mathematica and the forum software to translate characters into what they think are best for your, despite that breaking this going in both directions.

Attached is a tiny working notebook. Do a binary byte-by-byte comparison with what you have in your notebook and see what is different.
 

Attachments

P-Jay: No, making the correction I suggested in your original code worked.
You've changed your code in your second post. It can be corrected by changing
x^2[t] -> x[t]^2
and by removing the extra t argument you had.

n2 = NDSolve[{x''[t] + x[t] (x[t]^2 - 1) + t == 0, x[0] == 1, x'[0] == 0}, x[t], {t, 0, 10}]

Finally, your first version was better, since you solved for x instead of x[t].
The former returns a pure interpolated function, while the latter returns the function evaluated at t, which is not as flexible.

For example, using the former version

n1 = NDSolve[{x''[t] + x[t] (x[t]^2 - 1) + t == 0, x[0] == 1, x'[0] == 0}, x, {t, 0, 10}]

you can plot the function and its derivative easily

Plot[Evaluate[{x[t], x'[t]} /. n1], {t, 0, 10}]

Doing the same with n2 is not as straight forward...
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
Replies
8
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K