0
|
7988 Views
|
6 Replies
|
1 Total Likes
View groups...
Share
GROUPS:

# Piecewise, Evaluate, and NDSolve

Posted 11 years ago
 Hi, I solved an equation and the answer is the list of pieces  For[j=1,j<=3,j++,  {   solution=NDSolve[     {eq1, u[x,0]=? =(ampl[[j]]/Sqrt[2*Pi]/sigma[[j]])*Exp[-((x-ex[[j]])^2)/2/sigma[[j]]^2]} , u, {t,0,100}, {x,-100,100}     ],     pieceSolution[a_,b_]=Piecewise[{{0, b=time[[j]]}}],     temp[c_,d_]=sumSolution[c,d]+pieceSolution[c,d],  sumSolution[c_,d_]=temp[c,d]  } ]sumSolution[a,b] (*In*)(*Out*)({   {\[Piecewise], {     {0, b<1},     {{InterpolatingFunction[{{-100.,100.},{0.,100.}},<>][a,-1+b]}, b>=1},     {0, True}    }}  })+({   {\[Piecewise], {     {0, b<2},     {{InterpolatingFunction[{{-100.,100.},{0.,100.}},<>][a,-2+b]}, b>=2},     {0, True}    }}  })+({   {\[Piecewise], {     {0, b<5},     {{InterpolatingFunction[{{-100.,100.},{0.,100.}},<>][a,-5+b]}, b>=5},     {0, True}    }}  })I can evaluate an equation in each single point:(*In*) Evaluate[sumSolution[1,3]][[1]](*Out*)0.371703(*In*)sumSolution[1,4](*Out*){0.300161}But I can't use NDSolve with Evaluate  xSol1=NDSolve[{D[r[v],v,v] = = ?Evaluate[sumSolution[r[v],v]][[1]],r[0]?= =0,r'[0]= =?0},r,{v,0,50}] NDSolve::ndfdmc: Computed derivatives do not have dimensionality consistent with the initial conditions. ? NDSolve[{r''[v]?({ {\[Piecewise], { {0, v<0}, {{InterpolatingFunction[{{-100.,100.},{0.,100.}},<>][r[v],v]}, v>=0}, {0, True} }} }),r[0]?= =0,r'[0]= =?0},r,{v,0,50}]What's the deal and how can I fight it??If sumSolution is just an InterpolationFunction, not "Piecewise construction" NDSolve works perfectly.
6 Replies
Sort By:
Posted 11 years ago
 I cant cause I dont have Mathematica installed on my network computer.Thanks a lot for your help, it works!
Posted 11 years ago
 You would probably get better feedback when posting code that can be evaluated instead of a screenshot, but try something like sS[c_?NumericQ, d_?NumericQ] := First[sumSolution[c, d]]; NDSolve[{x''[t] == sS[x[t], t], x[0] == 0, x'[0] == 0}, x, {t, 0, 100}]
Posted 11 years ago
 Once again (it's a printscreen)It's clear that Out[93]-Out[96] are lists.But Out[97]-[99] are numbers.Then I need to solve the motion equation where the right side is sumSolution[x,t]. Neither method evaluated sumSolution as a number
Posted 11 years ago
 Essentially I need to shift the solution u[x,t] to be equal to 0 if t=time[] with the initial condition of u[x,time[]]=? =(ampl[]/Sqrt[2*Pi]/sigma[])*Exp[-((x-ex[])^2)/2/sigma[]^2]}
Posted 11 years ago
 Sorry, I don't have Mathematica installed on my network computer...It means r[0]= =0, r'[0]= =0; r'' respectively. Corrected the code
Posted 11 years ago
 Some of your code might not have transmitted well.  What are "r[0]?0,r'[0]?0"  and "r¢¢"?