Математика; NDSolve; InterpolatingFunction функциясын бастапқы шарттар ретінде пайдалана аламын ба?

Сұрақтар туындайды, себебі бір PDE шешімін басқасын шешу үшін бастапқы шарт ретінде пайдаланғым келеді. Себебі NDSolve-да, шешім InterpolatingFunction арқылы берілсе, екінші PDE-де InterpolatingFunction пайдалану керек. Бұл мүмкін бе? Неліктен менің компьютерімді оны мәңгі орындау керек? Менің коды:

(*********************Parameters********************)
\[Gamma] = 10^(-5); 
T = 500; 
tm = -250; 
\[Sigma] = 100; 
L = 1; 
L0 = -(L/2); 
L1 = L0 + L; 
c = 29.979; 
\[Omega] = 1.32949/10^8; 
\[Eta] = 1539.1; 
\[Mu] = 6.27; 
\[Beta] = 0.1334; 
k = 40895.3; 

(*********************1st PDE********************)
solS = NDSolve[{D[sS[z, t], t] == (-(\[Gamma] + I*\[Beta]*z))*sS[z, t]-I*\[Omega]*aS[z, t], 
D[aS[z, t], z] + (1/c)*D[aS[z, t], t] == (-I)*\[Eta]*k*sS[z, t], sS[z, -T] == 0, 
aS[z, -T] == E^(-((-T - tm)^2/(2*\[Sigma]^2))), 
aS[L0, t] == E^(-((t - tm)^2/(2*\[Sigma]^2)))}, {sS, aS}, {z, L0, L1}, {t, -T, 0}, 
MaxSteps -> Infinity]

(*************take the result and plot**************)
iniR = solS[[1]][[1]][[2]]
Plot3D[Re[iniR[z, t]], {z, L0, L1}, {t, -T, 0}, PlotRange -> All]

(***********2nd PDE, with the 1st result as ini. con.***********)
solR = NDSolve[{D[sR[z, t], t] == (-(\[Gamma] - I*\[Beta]*z))*sR[z, t] - I*\[Omega]*aR[z, t], 
D[aR[z, t], z] + (1/c)*D[aR[z, t], t] == (-I)*\[Eta]*k*sR[z, t], 
sR[z, 0] == iniR[z, 0], aR[z, 0] == 0, aR[L0, t] == 0}, {sR, aR}, {z, L0, L1}, 
{t, 0, T}, MaxSteps -> Infinity]
3
@AlexandreC: Бірінші PDE арқылы шығатын интерполяция функциясы Mathematica ішінде шын мәнінде қажет. z және t ішіндегі тор тармақтарының берілген жиынтығы үшін ол ең жақсы көріністі қамтамасыз етеді.
қосылды автор Mike Bailey, көзі
Негізінде, иә, басқа біреуді шешу үшін бір PDE нәтижесін пайдалануға болады. Математикада қалай жасалатынын білмеймін, бірақ егер бұл сіздің мақсатыңыз болса, әдетте интерполяцияны болдырмау үшін екі PDE үшін бірдей торға (немесе жалпы алғанда, бірдей ұсынуға) ие болады.
қосылды автор Alexandre C., көзі
@ user1019155: Менің ойымша, сізде негізгі сандық схемаға қол жеткіліксіз деп ойлаймын. Бұл мұнда емес. Схеманың шикізат шығысы (интерполяциялық функция емес) екінші шешткішті қосу үшін қажет. Өкінішке орай, сізге көмектесу үшін математиканы білмеймін.
қосылды автор Alexandre C., көзі
қосылды автор Simon, көзі
Александр: рахмет. «Интерполяцияға жол бермеу үшін PDE-лер үшін бірдей торды (не жалпы алғанда, бірдей ұсыну) болуы туралы» нақты бола аласыз ба? Сіз менің теңдеуімді өзгертуді білдіресіз бе? Математикада бұл қалай түсінемін?
қосылды автор user1019155, көзі

1 жауаптар

Алдымен: Ия интерполяция функцияларын пайдалануға болады. Бұл жерде ештеңе жоқ. Математика үшін InterpolatingFunction тек интерполяциялық нүктелерді шығару үшін нүктелер жиынтығы бойынша интерполяциялық многочленность қолданылады. Шындығында, шығарылатын InterpolatingFunction - сіз қолдануға болатын ең дәл ұсыныс.

Есептеудің «мәңгілікке» қабылдануының себебі - MaxSteps параметрін шексіздікке орнатқаныңыз.

It's not an issue of using an interpolating function. It's more of an issue that the simulation you're doing is numerically sensitive. By specifying MaxSteps->Infinity, you're telling Mathematica to take as much time as it needs to produce a solution.

In the process of doing so, it's probably reducing the step size to something absurdly tiny, say 10^-6, just to get numerically stable results. It's only doing that because of the MaxSteps->Infinity setting. If you remove this, it can actually produce a solution but it'll warn you that the solution is poor.

Сіз тіпті математикадан шешім дұрыс емес деп шағымдана аласыз:

NDSolve::eerr: Warning: Scaled local spatial error estimate of 559.4348244417077at t = 3.808844111947534 in the direction of independent variable z is much greater than prescribed error tolerance. Grid spacing with 25 points may be too large to achieve the desired accuracy or precision. A singularity may have formed or you may want to specify a smaller grid spacing using the MaxStepSize or MinPoints method options. >>

0
қосылды