Fix typo in display-html-help
[maxima.git] / share / contrib / diffequations / tests / rtestode_murphy_1_2.mac
blob24f070569f9693f0e71b971cf3a2b38d1b5c12f5
1 (load("contrib_ode"),0);
2 0$
4 /* ODE tests - Murphy equations 1.101 - 1.200
6   Reference: 
7     G M Murphy, Ordinary Differential Equations and Their 
8     Solutions, Van Nostrand, 1960
10   First Order and of First Degree, p 224 ff
13 /* Don't kill(all); It messes up trigsimp */
15 /* Print ode number*/
16 (pn_(n_):=print("Murphy ODE 1.",n_),true);
17 true;
19 /* 101 CHECKME*/
20 /* assume((b^2+8*a)>0,x>0);
21 [b^2+8*a > 0,x > 0];
22 (pn_(101),ans:contrib_ode(eqn:'diff(y,x)=a*x+b*sqrt(y),y,x));
23 [x=%c*%e^-((b*sqrt(b^2+8*a)*log(-(-16*y^2+sqrt(b^2+8*a)*(sqrt(y)*(8*x*y+(-b^2-4*a)*x^3)+2*b*x^2*y+a*b*x^4)+2*b^2*x^2*y+(-b^3-8*a*b)*x^3*sqrt(y)+(a*b^2+4*a^2)*x^4)/(16*y^2+(-4*b^2-16*a)*x^2*y+4*a^2*x^4))+(b^2+8*a)*log(-(-2*y+b*x*sqrt(y)+a*x^2)/x^2))/(2*b^2+16*a))];
24 forget((b^2+8*a)>0,x>0);
25 [b^2+8*a>0,x>0];
26 method;
27 genhom; */
29 /* 102 */
30 (pn_(102),ans:contrib_ode(eqn:'diff(y,x)+x^3=x*sqrt(x^4+4*y),y,x));
31 [x = %c*%e^-(log((sqrt(4*y+x^4)-x^2)/x^2)/2)];
32 (ans[1]/%c)^(-2)*x^2;
33 %c^2 = sqrt(4*y+x^4)-x^2;
34 (assume(x^2+%c^2>0),ans:first(solve(%,y)),forget(x^2+%c^2>0),ans);
35 y=(2*%c^2*x^2+%c^4)/4; /* This is correct */
36 method;
37 genhom;
39 /* 103 */
40 (pn_(103),ans:contrib_ode(eqn:'diff(y,x)+2*y*(1-x*sqrt(y))=0,y,x));
41 [y = %e^-(2*x)/(%c-(-x-1)*%e^-x)^2];
42 map(ratsimp,ans[1]);
43 y=1/(%c^2*%e^(2*x)+(2*%c*x+2*%c)*%e^x+x^2+2*x+1);
44 ans:map(factor,%);
45 y=1/(%c*%e^x+x+1)^2; /* This is correct */
46 method;
47 bernoulli;
49 /* 104 - There are three cases.  Just do first */
50 assume(a>0,b>0);
51 [a>0,b>0];
52 (pn_(104),ans:contrib_ode(eqn:'diff(y,x)=sqrt(a+b*y^2),y,x));
53 [asinh(sqrt(b)*y/sqrt(a))/sqrt(b)=x+%c];
54 ans:first(solve(ans[1],y));
55 y = sqrt(a)*sinh(sqrt(b)*x+%c*sqrt(b))/sqrt(b);
56 [method,radcan(ode_check(eqn,%))];
57 [separable,0];
58 forget(a>0,b>0);
59 [a>0,b>0];
61 /* 105 CHECKME*/
62 /*assume(a>0);
63 [a>0];
64 (pn_(105),ans:contrib_ode(eqn:'diff(y,x)=y*sqrt(a+b*y),y,x));
65 [log(-(2*sqrt(a)*sqrt(b*y+a)-b*y-2*a)/(b*y))/sqrt(a) = x+%c];
66 /* a+b*y = a*tanh(%c-x*sqrt(a)/2)^2 */
67 [method,ode_check(eqn,ans[1])];
68 [separable,0];
69 forget(a>0);
70 [a>0]; */
72 /* 109 CHECK THIS */
73 (pn_(109),ans:contrib_ode(eqn:'diff(y,x)=cos(x)^2*cos(y),y,x));
74 [(log(sin(y)+1)-log(sin(y)-1))/2 = (sin(2*x)+2*x)/4+%c];
75 map(exp,2*ans[1]);
76 (sin(y)+1)/(sin(y)-1) = %e^(2*((sin(2*x)+2*x)/4+%c));
77 /* ans:first(solve(%,y));
78 y=asin(%e^(sin(2*x)/2+x+2*%c)/(%e^(sin(2*x)/2+x+2*%c)-1)+1/(%e^(sin(2*x)/2+x+2*%c)-1));
79 [method,ode_check(eqn,ans)];
80 [separable,0]; */
82 /* 110 */
83 (pn_(110),ans:contrib_ode(eqn:'diff(y,x)=sec(x)^2*cot(y)*cos(y),y,x));
84 [1/cos(y)=tan(x)+%c];
85 solve(ans[1],y);
86 [y=acos(1/(tan(x)+%c))];
87 [method,ode_check(eqn,%[1])];
88 [separable,0];
90 /* 114 CHECKME - Different results interactively */
91 /* assume(4*a^2>4*b^2);
92 [4*a^2>4*b^2];
93 (pn_(114),ans:contrib_ode(eqn:'diff(y,x)=a+b*cos(y),y,x));
94 [-2*sqrt(a^2-b^2)*atan(sqrt(a^2-b^2)*sin(y)/((b+a)*cos(y)+b+a))/(b^2-a^2)=x+%c];
95 /* Take this on faith at present */
96 forget(4*a^2>4*b^2);
97 [4*a^2>4*b^2]; */
99 /* assume(4*a^2<4*b^2);
100 [4*b^2>4*a^2];
101 ans:contrib_ode(eqn,y,x);
102 [-log(-((a-b)*sin(y)^2+sqrt(b^2-a^2)*(2*cos(y)+2)*sin(y)+(-b-a)*cos(y)^2+(-2*b-2*a)*cos(y)-b-a)/((b-a)*sin(y)^2+(-b-a)*cos(y)^2+(-2*b-2*a)*cos(y)-b-a))/sqrt(b^2-a^2)=x+%c];
103 /* Take this on faith at present */
104 forget(4*a^2<4*b^2);
105 [4*b^2>4*a^2]; */
108 /* 115  - takes "forever" in ode1_lie() */
109 /* (pn_(115),ans:contrib_ode(eqn:'diff(y,x)+x*(sin(2*y)-x^2*cos(y)^2)=0,y,x)); */
111 /* 116 */
112 (pn_(116),ans:contrib_ode(eqn:'diff(y,x)+tan(x)*sec(x)*cos(y)^2,y,x));
113 [-tan(y)=1/cos(x)+%c];
114 map(atan,-ans[1]),triginverses=all;
115 y=-atan(1/cos(x)+%c)$
116 [method,ode_check(eqn,ans[1])];
117 [separable,0];
119 /* 117 */
120 (pn_(117),ans:contrib_ode(eqn:'diff(y,x)=cot(x)*cot(y),y,x));
121 [-log(1-sin(y)^2)/2 = log(sin(x))+%c];
122 /* map(exp,2*ans[1]);
123 1/(1-sin(y)^2) = %e^(2*(log(sin(x))+%c));
124 ratsimp(%);
125 -1/(sin(y)^2-1) = %e^(2*%c)*sin(x)^2;
126 trigsimp(%);
127 1/cos(y)^2 = %e^(2*%c)*sin(x)^2;
128 solve(%,y);
129 [y = %pi-acos(%e^-%c/sin(x)),y = acos(%e^-%c/sin(x))];
130 [method,ode_check(eqn,%[1]),ode_check(eqn,%[2])];
131 [separable,0,0];*/
133 /* 118 */
134 (pn_(118),ans:contrib_ode(eqn:'diff(y,x)+cot(x)*cot(y)=0,y,x));
135 [log(1-sin(y)^2)/2 = log(sin(x))+%c];
136 /* map(exp,2*ans[1]);
137 1-sin(y)^2 = %e^(2*(log(sin(x))+%c));
138 ratsimp(%);
139 1-sin(y)^2 = %e^(2*%c)*sin(x)^2;
140 trigsimp(%);
141 cos(y)^2 = %e^(2*%c)*sin(x)^2;
142 solve(%,y);
143 [y = %pi-acos(%e^%c*sin(x)),y = acos(%e^%c*sin(x))];
144 [method,ode_check(eqn,%[1]),ode_check(eqn,%[2])];
145 [separable,0,0];*/
147 /* 119 */
148 (pn_(119),ans:contrib_ode(eqn:'diff(y,x)=sin(x)*(csc(y)-cot(y)),y,x));
149 [2*log(sin(y)/(cos(y)+1))-log((sin(y)^2+cos(y)^2+2*cos(y)+1)/(cos(y)^2+2*cos(y)+1))=%c-cos(x)];
151 /* 120 */
152 (pn_(120),ans:contrib_ode(eqn:'diff(y,x)=tan(x)*cot(y),y,x));
153 [-log(1-sin(y)^2)/2=log(sec(x))+%c];
154 subst(cos(y)^2,1-sin(y)^2,ans[1]);
155 -log(cos(y))=log(sec(x))+%c;
156 subst(1/cos(x),sec(x),%);
157 -log(cos(y))=%c-log(cos(x));
158 map(exp,-%);
159 cos(y)=%e^-%c*cos(x);
160 subst(%c,%e^-%c,%); /* Change to form of the constant */
161 cos(y)=%c*cos(x);   /* This is correct */
162 solve(%,y);
163 [y = acos(%c*cos(x))];
164 [method,ode_check(eqn,%[1])];
165 [separable, 0];
168 /* 121 */
169 (pn_(121),ans:contrib_ode(eqn:'diff(y,x)+tan(x)*cot(y)=0,y,x));
170 [log(1-sin(y)^2)/2 = log(sec(x))+%c];
171 subst(cos(y)^2,1-sin(y)^2,ans[1]);
172 log(cos(y))=log(sec(x))+%c;
173 subst(1/cos(x),sec(x),%);
174 log(cos(y))=%c-log(cos(x));
175 map(exp,%);
176 cos(y)=%e^%c/cos(x);
177 subst(%c,%e^%c,%); /* Change to form of the constant */
178 cos(y)=%c/cos(x);  /* This is correct */
179 solve(%,y);
180 [y = acos(%c/cos(x))];
181 [method,ode_check(eqn,%[1])];
182 [separable,0];
184 /* 122 */
185 (pn_(122),ans:contrib_ode(eqn:'diff(y,x)+sin(2*x)*csc(2*y)=0,y,x));
186 [cos(2*y)/2=%c-cos(2*x)/2];
187 (ans:expand(2*ans[1]),ans:subst(%c,2*%c,ans));
188 cos(2*y)=%c-cos(2*x); /* This is correct */
189 solve(%,y);
190 [y = -((acos(cos(2*x)-%c)-%pi)/2)];
191 [method,ode_check(eqn,%[1])];
192 [separable,0];
194 /* 123 */
195 (pn_(123),ans:contrib_ode(eqn:'diff(y,x)=tan(x)*(tan(y)+sec(x)*sec(y)),y,x));
196 false;
198 /* 124 */
199 (pn_(124),ans:contrib_ode(eqn:'diff(y,x)=cos(x)*sec(y)^2,y,x));
200 [(sin(2*y)+2*y)/4 = sin(x)+%c];
201 (ans:4*ans[1],ans:subst(%c,4*%c,expand(ans)));
202 sin(2*y)+2*y=4*sin(x)+%c; /* This is correct */
203 method;
204 separable;
206 /* 125 */
207 (pn_(125),ans:contrib_ode(eqn:'diff(y,x)=sec(x)^2*sec(y)^3,y,x));
208 [-((sin(y)^3-3*sin(y))/3)=tan(x)+%c];
209 (ans:3*ans[1],ans:subst(%c,3*%c,expand(ans)));
210 3*sin(y)-sin(y)^3=3*tan(x)+%c;
211 trigsimp(lhs(ans))=rhs(ans);
212 (cos(y)^2+2)*sin(y)=3*tan(x)+%c; /* This is correct */
213 method;
214 separable;
216 /* 126 */
217 assume(a>b,4*a^2>4*b^2);
218 [a>b,4*a^2>4*b^2];
219 (pn_(126),ans:contrib_ode(eqn:'diff(y,x)=a+b*sin(y),y,x));
220 [2*atan((a*sin(y)+b*cos(y)+b)/(sqrt(a^2-b^2)*(cos(y)+1)))/sqrt(a^2-b^2)=x+%c];
221 /* Need to check this */
222 forget(a>b,4*a^2>4*b^2);
223 [a>b,4*a^2>4*b^2];
225 /* 127 - FIXME: ode1_lie takes "forever" */
226 /* (pn_(127),ans:contrib_ode(eqn:'diff(y,x)=a+b*sin(%A*x+%B*y),y,x)); */
228 /* 128 - FIXME: ode1_lie takes "forever" */
229 /* (pn_(128),ans:contrib_ode(eqn:'diff(y,x)=(1+cos(x)*sin(y))*tan(y),y,x)); */
231 /* 129 - See Kamke 1.199 */
232 /* (pn_(129),ans:contrib_ode(eqn:'diff(y,x)+csc(2*x)*sin(2*y)=0,y,x)); */
234 /* 132 CHECKME - Why the %I in the solution? */
235 /* Interactive solution is equivalent but different */
236 (pn_(132),ans:contrib_ode(eqn:'diff(y,x)=x+exp(y),y,x),0);
238 [method,ode_check(eqn,ans[1])];
239 [lie,0];
241 /* 133 */
242 (pn_(133),ans:contrib_ode(eqn:'diff(y,x)=exp(x+y),y,x));
243 [-%e^-y*(%e^(y+x)+1)=%c];
244 solve(expand(ans[1]),y);
245 [y = log(-1/(%e^x+%c))];
246 [method,ode_check(eqn,%[1])];
247 [exact,0];
249 /* 134 - Solution is different to Murphy */
250 (pn_(134),ans:contrib_ode(eqn:'diff(y,x)=exp(x)*(a+b*exp(-y)),y,x));
251 [(log(a*%e^y+b)-a*%e^x)/a = %c];
252 a*ans[1]+a*exp(x);
253 log(a*%e^y+b) = a*%e^x+%c*a;
254 map(exp,%);
255 a*%e^y+b = %e^(a*%e^x+%c*a);
256 solve(%,y);
257 [y = log(%e^(a*%e^x+%c*a)/a-b/a)]; 
258 [method,ode_check(eqn,%[1])];
259 [exact,0];
261 /* 135 */
262 (pn_(135),ans:contrib_ode(eqn:'diff(y,x)+y*log(x)*log(y),y,x));
263 [-log(log(y))=x*log(x)-x+%c];
264 solve(ans[1],y);
265 [y=%e^%e^(-x*log(x)+x-%c)];
266 [method,ode_check(eqn,%[1])];
267 [separable,0];
269 /* 136 - Too general?  ode1_lie runs "forever" */
270 /* (pn_(136),ans:contrib_ode(eqn:'diff(y,x)=x^(m-1)*y^(1-n)*f(a*x^m+b*y^n),y,x)); */
272 /* 137 */
273 (pn_(137),ans:contrib_ode(eqn:'diff(y,x)=a*f(y),y,x));
274 [('integrate(1/f(y),y))/a = x+%c];
275 method;
276 separable;
278 /* 138 - Too general */
280 /* 139 */
281 (pn_(139),ans:contrib_ode(eqn:'diff(y,x)=f(x)*g(y),y,x));
282 ['integrate(1/g(y),y) = 'integrate(f(x),x)+%c];
283 method;
284 separable;
286 /* 140 */
287 (assume(sin(x)>0,sin(2*x)>0),done);
288 done;
289 (pn_(140),ans:contrib_ode(eqn:2*'diff(y,x)=sec(x)^2+y*sec(x)*csc(x),y,x));
290 [y = %e^((log(sin(x))-log(sin(x)^2-1)/2)/2)*(('integrate(sec(x)^2*%e^-((log(sin(x))-log(sin(x)^2-1)/2)/2),x))/2+%c)]; /* Mmmm */
291 method;
292 linear;
293 (forget(sin(x)>0,sin(2*x)>0),done);
294 done;
296 /* 141 Riccati */
297 (pn_(141),ans:contrib_ode(eqn:2*'diff(y,x)+2*csc(x)^2=y*csc(x)*sec(x)+y^2*sec(x)^2,y,x));
298 [[y=-2*'diff(%u,x,1)/(%u*sec(x)^2),-'diff(%u,x,1)*(sec(x)^2*tan(x)+csc(x)*sec(x)^3/4)-%u*csc(x)^2*sec(x)^4/4+'diff(%u,x,2)*sec(x)^2/2=0]];
299 method;
300 riccati;
302 /* 142 - ode1_lie runs "forever"*/
303 /* (pn_(142),ans:contrib_ode(eqn:2*'diff(y,x)=2*sin(y)^2*tan(y)-x*sin(2*y),y,x)); */
305 /* 143 */
307 /* 144 */
308 (pn_(144),ans:contrib_ode(eqn:3*'diff(y,x)=x+sqrt(x^2-3*y),y,x));
309 /* [x=%c*%e^((log((6*x^2*y+3*x^3*sqrt(x^2-3*y)-3*x^4)/(6*x^2*y))-3*log((-6*y+x*sqrt(x^2-3*y)+x^2)/x))/6)];*/ /* Assume correct */
310 [x = %c*%e^-((3*log((-6*y+x*sqrt(x^2-3*y)+x^2)/x)-log((2*x*sqrt(x^2-3*y)-x^2)/(2*x*sqrt(x^2-3*y)+2*x^2)))/6)];
311 method;
312 genhom;
314 /* 145 */
315 assume(a>0);
316 [a>0];
317 (pn_(145),ans:contrib_ode(eqn:x*'diff(y,x)=sqrt(a^2-x^2),y,x));
318 [y=-a*log(2*a*sqrt(a^2-x^2)/abs(x)+2*a^2/abs(x))+sqrt(a^2-x^2)+%c];
319 [method,ode_check(eqn,ans[1])];
320 [linear,0];
321 forget(a>0);
322 [a>0];
324 /* 146 */
325 (pn_(146),ans:contrib_ode(eqn:x*'diff(y,x)+x+y=0,y,x));
326 [y=(%c-x^2/2)/x];
327 [method,ode_check(eqn,ans[1])];
328 [linear,0];
330 /* 147 */
331 (pn_(147),ans:contrib_ode(eqn:x*'diff(y,x)+x^2-y=0,y,x));
332 [y=(%c-x)*x];
333 [method,ode_check(eqn,ans[1])];
334 [linear,0];
336 /* 148 */
337 (pn_(148),ans:contrib_ode(eqn:x*'diff(y,x)=x^3-y,y,x));
338 [y=(x^4/4+%c)/x];
339 [method,ode_check(eqn,ans[1])];
340 [linear,0];
342 /* 149 */
343 (pn_(149),ans:contrib_ode(eqn:x*'diff(y,x)=1+x^3+y,y,x));
344 [y=x*(x^2/2-1/x+%c)];
345 [method,ode_check(eqn,ans[1])];
346 [linear,0];
348 /* 150 */
349 assume(not(equal(m,1)));
350 [not equal(m,1)];
351 (pn_(150),ans:contrib_ode(eqn:x*'diff(y,x)=x^m+y,y,x));
352 [y=x*(x^(m-1)/(m-1)+%c)];
353 [method,ode_check(eqn,ans[1])];
354 [linear,0];
355 forget(not(equal(m,1)));
356 [not equal(m,1)];
358 /* 151 */
359 (pn_(151),ans:contrib_ode(eqn:x*'diff(y,x)=x*sin(x)-y,y,x));
360 [y=(sin(x)-x*cos(x)+%c)/x];
361 [method,ode_check(eqn,ans[1])];
362 [linear,0];
364 /* 152 */
365 (pn_(152),ans:contrib_ode(eqn:x*'diff(y,x)=x^2*sin(x)+y,y,x));
366 [y=x*(%c-cos(x))];
367 [method,ode_check(eqn,ans[1])];
368 [linear,0];
370 /* 153 */
371 assume(not(equal(n,-1)));
372 '[not equal(n,-1)];
373 (pn_(153),ans:contrib_ode(eqn:x*'diff(y,x)=x^n*log(x)-y,y,x));
374 [y=(x^(n+1)*log(x)/(n+1)-x^(n+1)/(n+1)^2+%c)/x];
375 [method,ode_check(eqn,ans[1])];
376 [linear,0];
377 forget(not(equal(n,-1)));
378 '[not equal(n,-1)];
380 /* 154 */
381 (pn_(154),ans:contrib_ode(eqn:x*'diff(y,x)=sin(x)-2*y,y,x));
382 [y=(sin(x)-x*cos(x)+%c)/x^2];
383 [method,ode_check(eqn,ans[1])];
384 [linear,0];
386 /* 155 */
387 (pn_(155),ans:contrib_ode(eqn:x*'diff(y,x)=a*y,y,x));
388 [y=%c*%e^(a*log(x))];
389 ans:map(radcan,ans);
390 [y=%c*x^a];
391 [method,ode_check(eqn,ans[1])];
392 [linear,0];
394 /* 156 */
395 assume(not(equal(a,0)),not(equal(a,1)));
396 '[not equal(a,0),not equal(a,1)];
397 (pn_(156),ans:contrib_ode(eqn:x*'diff(y,x)=1+x+a*y,y,x));
398 [y=(-%e^-(a*log(x))/a+%e^((1-a)*log(x))/(1-a)+%c)*%e^(a*log(x))];
399 ans:map(radcan,ans);
400 [y=((%c*a^2-%c*a)*x^a-a*x-a+1)/(a^2-a)];
401 [method,ode_check(eqn,ans[1])];
402 [linear,0];
403 forget(not(equal(a,0)),not(equal(a,1)));
404 '[not equal(a,0),not equal(a,1)];
406 /* 157 */
407 assume(not(equal(b,1)));
408 '[not equal(b,1)];
409 (pn_(157),ans:contrib_ode(eqn:x*'diff(y,x)=a*x+b*y,y,x));
410 [y=(a*x*%e^-(b*log(x))/(1-b)+%c)*%e^(b*log(x))];
411 ans:map(radcan,ans);
412 [y=((%c*b-%c)*x^b-a*x)/(b-1)];
413 [method,ode_check(eqn,ans[1])];
414 [linear,0];
415 forget(not(equal(b,1)));
416 '[not equal(b,1)];
418 /* 158 */
419 assume(not(equal(b,2)));
420 [not equal(b,2)];
421 (pn_(158),ans:contrib_ode(eqn:x*'diff(y,x)=a*x^2+b*y,y,x));
422 [y=(a*x^2*%e^-(b*log(x))/(2-b)+%c)*%e^(b*log(x))];
423 ans:map(radcan,ans);
424 [y=((%c*b-2*%c)*x^b-a*x^2)/(b-2)];
425 [method,ode_check(eqn,ans[1])];
426 [linear,0];
427 forget(not(equal(b,2)));
428 [not equal(b,2)];
430 /* 159 */
431 assume(not(equal(n,c)));
432 [not equal(n,c)];
433 (pn_(159),ans:contrib_ode(eqn:x*'diff(y,x)=a+b*x^n+c*y,y,x));
434 [y=%e^(c*log(x))*(-b*%e^(n*log(x)-c*log(x))/(c-n)-a*%e^-(c*log(x))/c+%c)];
435 ans:map(radcan,ans);
436 [y=(b*c*x^n+(%c*c*n-%c*c^2)*x^c-a*n+a*c)/(c*n-c^2)];
437 [method,ode_check(eqn,ans[1])];
438 [linear,0];
439 forget(not(equal(n,c)));
440 [not equal(n,c)];
442 /* 160 */
443 (pn_(160),ans:contrib_ode(eqn:x*'diff(y,x)+2+(3-x)*y=0,y,x));
444 [y=(%c-2*(-x^2-2*x-2)*%e^-x)*%e^x/x^3];
445 ans:map(radcan,ans);
446 [y=(%c*%e^x+2*x^2+4*x+4)/x^3];
447 [method,ode_check(eqn,ans[1])];
448 [linear,0];
450 /* 161 */
451 (pn_(161),ans:contrib_ode(eqn:x*'diff(y,x)+x+(2+a*x)*y=0,y,x));
452 [y=%e^-(a*x)*(%c-(a^2*x^2-2*a*x+2)*%e^(a*x)/a^3)/x^2];
453 [method,ode_check(eqn,ans[1])];
454 [linear,0];
456 /* 162 */
457 (pn_(162),ans:contrib_ode(eqn:x*'diff(y,x)+(a+b*x)*y=0,y,x));
458 [y=%c*%e^(-a*log(x)-b*x)];
459 ans:map(radcan,ans);
460 [y=%c*%e^-(b*x)/x^a];
461 [method,ode_check(eqn,ans[1])];
462 [linear,0];
464 /* 163 */
465 (pn_(163),ans:contrib_ode(eqn:x*'diff(y,x)=x^3+(1-2*x^2)*y,y,x));
466 [y=x*%e^-x^2*(%e^x^2/2+%c)];
467 [method,ode_check(eqn,ans[1])];
468 [linear,0];
470 /* 164 */
471 (pn_(164),ans:contrib_ode(eqn:x*'diff(y,x)=a*x-(1-b*x^2)*y,y,x));
472 [y=(%c-a*%e^-(b*x^2/2)/b)*%e^(b*x^2/2)/x];
473 [method,ode_check(eqn,ans[1])];
474 [linear,0];
476 /* 165 */
477 (pn_(165),ans:contrib_ode(eqn:x*'diff(y,x)+(2-a*x^2)*y,y,x));
478 [y=%c*%e^(a*x^2/2)/x^2];
479 [method,ode_check(eqn,ans[1])];
480 [linear,0];
482 /* 166 */
483 (pn_(166),ans:contrib_ode(eqn:x*'diff(y,x)+x^2=y^2,y,x));
484 [y=(bessel_k(1,x)*%c-bessel_i(1,x))*x/(bessel_k(0,x)*%c+bessel_i(0,x))];
485 [method,ode_check(eqn,ans[1])];
486 [riccati,0];
488 /* 167 */
489 (pn_(167),ans:contrib_ode(eqn:x*'diff(y,x)=x^2+y*(1+y),y,x));
490 [y=x*tan(x+%c)];
491 [method,ode_check(eqn,ans[1])];
492 [riccati,0];
494 /* 168 */
495 (pn_(168),ans:contrib_ode(eqn:x*'diff(y,x)-y+y^2=x^(2/3),y,x));
496 [y=x^(2/3)/(x^(1/3)/tanh(3*x^(1/3)+%c)-1/3)];
497 [method,ode_check(eqn,ans[1])];
498 [riccati,0];
500 /* 169 */
501 assume(a>0,b>0);
502 [a>0,b>0];
503 (pn_(169),ans:contrib_ode(eqn:x*'diff(y,x)=a+b*y^2,y,x));
504 [atan(sqrt(b)*y/sqrt(a))/(sqrt(a)*sqrt(b))=log(x)+%c];
505 solve(ans[1],y);
506 [y=sqrt(a)*tan(sqrt(a)*sqrt(b)*log(x)+%c*sqrt(a)*sqrt(b))/sqrt(b)];
507 [method,ode_check(eqn,%[1])];
508 [separable,0];
509 forget(a>0,b>0);
510 [a>0,b>0];
512 assume(a<0,b>0);
513 [a<0,b>0];
514 (pn_("169ii"),ans:contrib_ode(eqn:x*'diff(y,x)=a+b*y^2,y,x));
515 [log(-((sqrt(-a)*sqrt(b)-b*y)/(b*y+sqrt(-a)*sqrt(b))))/(2*sqrt(-a)*sqrt(b))=log(x)+%c];
516 solve(ans[1],y);
517 [y=-((sqrt(-a)*sqrt(b)*%e^(2*sqrt(-a)*sqrt(b)*log(x)+2*%c*sqrt(-a)*sqrt(b))+sqrt(-a)*sqrt(b))/(b*%e^(2*sqrt(-a)*sqrt(b)*log(x)+2*%c*sqrt(-a)*sqrt(b))-b))];
518 [method,ode_check(eqn,%[1])];
519 [separable,0];
520 forget(a<0,b>0);
521 [a<0,b>0];
523 /* 170 */
524 assume(a>0,b>0);
525 [a>0,b>0];
526 (pn_("170i"),ans:contrib_ode(eqn:x*'diff(y,x)=a*x^2+y+b*y^2,y,x));
527 [y=sqrt(a)*x*tan(sqrt(a)*sqrt(b)*x+%c)/sqrt(b)];
528 [method,ode_check(eqn,ans[1])];
529 [riccati,0];
530 forget(a>0,b>0);
531 [a>0,b>0];
533 assume(a>0,b<0);
534 [a>0,b<0];
535 (pn_("170ii"),ans:contrib_ode(eqn:x*'diff(y,x)=a*x^2+y+b*y^2,y,x));
536 [y=sqrt(a)*x*tanh(sqrt(a)*sqrt(-b)*x+%c)/sqrt(-b)];
537 [method,ode_check(eqn,ans[1])];
538 [riccati,0];
539 forget(a>0,b<0);
540 [a>0,b<0];
542 /* 171 */
543 assume(a>0,b>0);
544 [a>0,b>0];
545 (pn_(171),ans:contrib_ode(eqn:x*'diff(y,x)=a*x^(2*n)+(n+b*y)*y,y,x));
546 [y=sqrt(a)*x^n*tan(sqrt(a)*sqrt(b)*x^n/n+%c)/sqrt(b)];
547 [method,ode_check(eqn,ans[1])];
548 [riccati,0];
549 forget(a>0,b>0);
550 [a>0,b>0];
552 /* 172 Too general */
554 /* 173 Too general */
556 /* 174 */
557 assume(a>0);
558 [a>0];
559 (pn_(174),ans:contrib_ode(eqn:x*'diff(y,x)+a+x*y^2=0,y,x));
560 [y = -((((bessel_y(2,2*sqrt(a)*sqrt(x))-bessel_y(0,2*sqrt(a)*sqrt(x)))*%c
561  +bessel_j(2,2*sqrt(a)*sqrt(x))-bessel_j(0,2*sqrt(a)*sqrt(x)))*sqrt(a)*sqrt(x)
562  -bessel_y(1,2*sqrt(a)*sqrt(x))*%c-bessel_j(1,2*sqrt(a)*sqrt(x)))
563  /((2*bessel_y(1,2*sqrt(a)*sqrt(x))*%c+2*bessel_j(1,2*sqrt(a)*sqrt(x)))*x))];
564 [method,ode_check(eqn,ans[1])];
565 [riccati,0];
566 forget(a>0);
567 [a>0];
569 /* 175 */
570 (pn_(175),ans:contrib_ode(eqn:x*'diff(y,x)+(1-x*y)*y=0,y,x));
571 [y=1/(x*(%c-log(x)))];
572 [method,ode_check(eqn,ans[1])];
573 [bernoulli,0];
575 /* 176 */
576 (pn_(176),ans:contrib_ode(eqn:x*'diff(y,x)=(1-x*y)*y,y,x));
577 [(x^2*y-2*x)/(2*y) = %c];
578 solve(ans[1],y);
579 [y = 2*x/(x^2-2*%c)];
580 [method,ode_check(eqn,%[1])];
581 [exact,0];
583 /* 177 */
584 (pn_(177),ans:contrib_ode(eqn:x*'diff(y,x)=(1+x*y)*y,y,x));
585 [-((x^2*y+2*x)/(2*y))=%c];
586 solve(ans[1],y);
587 [y=-2*x/(x^2+2*%c)];
588 [method,ode_check(eqn,%[1])];
589 [exact,0];
591 /* 178 */
592 assume(a>0);
593 [a>0];
594 (pn_(178),ans:contrib_ode(eqn:'diff(y,x)=a*x^2+(1/x-y)*y,y,x));
595 [y = sqrt(a)*(%c*x*sinh(sqrt(a)*x^2/2)+%i*x*cosh(sqrt(a)*x^2/2))/(%i*sinh(sqrt(a)*x^2/2)+%c*cosh(sqrt(a)*x^2/2))];
596 [method,ode_check(eqn,ans[1])];
597 [riccati,0];
598 forget(a>0);
599 [a>0];
601 /* 179 */
602 (pn_(179),ans:contrib_ode(eqn:x*'diff(y,x)=x^3+(1+2*x^2)*y+x*y^2,y,x));
603 [y = -((%c*x^3+(2*%c+2)*x)/(%c*x^2+2))];
604 [method,ode_check(eqn,ans[1])];
605 [riccati,0];
607 /* 180 */
608 (pn_(180),ans:contrib_ode(eqn:x*'diff(y,x)=y*(1+2*x*y),y,x));
609 [-((x^2*y+x)/y) = %c];
610 ans:first(solve(ans[1],y));
611 y = -x/(x^2+%c);
612 [method,ode_check(eqn,ans)];
613 [exact,0];
615 /* 181 Riccati */
616 (pn_(181),assume(a>0,b>0),ans:contrib_ode(eqn:x*'diff(y,x)+b*x+(2+a*x*y)*y=0,y,x),forget(a>0,b>0),ans,0);
618 [method,ode_check(eqn,ans[1])];
619 [riccati,0];
621 /* 182 Riccati */
622 (pn_(182),ans:contrib_ode(eqn:x*'diff(y,x)+a0+a1*x+(a2+a3*x*y)*y=0,y,x),done);
623 done;
624 /* FIXME: Can't match form solution in testsuite
625 [y = (sqrt(a1)*(%c*kummer_u(-((a0*sqrt(-a1)*sqrt(a3)-a1*a2)/(2*a1)),a2,
626                                    -2*sqrt(a1)*sqrt(-a3)*x)
627                       +kummer_m(-((a0*sqrt(-a1)*sqrt(a3)-a1*a2)/(2*a1)),a2,
628                                 -2*sqrt(a1)*sqrt(-a3)*x)
629                       -(2*%c
630                         *dkummer_u(-((a0*sqrt(-a1)*sqrt(a3)-a1*a2)/(2*a1)),a2,
631                                    -2*sqrt(a1)*sqrt(-a3)*x))
632                       -(2*dkummer_m(-((a0*sqrt(-a1)*sqrt(a3)-a1*a2)/(2*a1)),a2,
633                                    -2*sqrt(a1)*sqrt(-a3)*x)))*sqrt(-a3))
634           /((%c*kummer_u(-((a0*sqrt(-a1)*sqrt(a3)-a1*a2)/(2*a1)),a2,
635                          -2*sqrt(a1)*sqrt(-a3)*x)
636            +kummer_m(-((a0*sqrt(-a1)*sqrt(a3)-a1*a2)/(2*a1)),a2,
637                      -2*sqrt(a1)*sqrt(-a3)*x))
638            *a3)];
639  */
640 [method,radcan(ode_check(eqn,ans[1]))];
641 [riccati,0];
643 /* 183 Riccati - CHECK ME */
644 (pn_(183),ans:contrib_ode(eqn:x*'diff(y,x)+a*x^2*y^2+2*y=b,y,x));
645 [y=(bessel_y(1,-sqrt(a)*sqrt(-b)*x)*%c+bessel_j(1,-sqrt(a)*sqrt(-b)*x))*sqrt(-b)
646   /((bessel_y(0,-sqrt(a)*sqrt(-b)*x)*%c+bessel_j(0,-sqrt(a)*sqrt(-b)*x))*sqrt(a)*x)];
647 [method,ode_check(eqn,ans[1])];
648 [riccati,0];
650 /* 184 Riccati */
651 assume(not equal(m+n,0));
652 '[not equal(n+m,0)];
653 (pn_(184),ans:contrib_ode(eqn:x*'diff(y,x)+x^m+(n-m)*y/2+x^n*y^2=0,y,x));
654 [y = -((%c*x^(n/2+m/2)*sin(2*x^(n/2+m/2)/(n+m))-x^(n/2+m/2)*cos(2*x^(n/2+m/2)/(n+m)))/(x^n*sin(2*x^(n/2+m/2)/(n+m))+%c*x^n*cos(2*x^(n/2+m/2)/(n+m))))];
655 [method,ode_check(eqn,ans[1])];
656 [riccati,0];
657 forget(not equal(m+n,0));
658 '[not equal(n+m,0)];
660 /* 185 */
661 (pn_(185),ans:contrib_ode(eqn:x*'diff(y,x)+(a+b*x^n*y)*y,y,x));
662 [y = %e^-(a*log(x))/(%c-b*%e^(n*log(x)-a*log(x))/(a-n))];
663 ans:map(radcan,ans);
664 [y=(n-a)/(b*x^n+(%c*n-%c*a)*x^a)];
665 [method,ode_check(eqn,ans[1])];
666 [bernoulli,0];
668 /* 186 - FIXME 2006-12-11 - Runs forever */
669 /* (pn_(186),ans:contrib_ode(eqn:x*'diff(y,x)=a*x^m-b*y-c*x^n*y^2,y,x));
670 [[y='diff(%u,x,1)*x^(1-n)/(%u*c),-'diff(%u,x,2)*c*x^(n-1)-'diff(%u,x,1)*(b*c*x^(n-2)-c*(n-1)*x^(n-2))+%u*a*c^2*x^(2*(n-1)+m-1)=0]];
671 method;
672 riccati; */
674 /* 187 - FIXME 2006-12-11 - Runs forever */
675 /* (pn_(187),ans:contrib_ode(eqn:x*'diff(y,x)=2*x-y+a*x^n*(x-y)^2,y,x));
676 [[y=-'diff(%u,x,1)*x^(1-n)/(%u*a),%u*a^2*x^(2*(n-1))*(a*x^(n+1)+2)-'diff(%u,x,1)*(a*x^(n-1)*(-2*a*x^n-1/x)+a*(n-1)*x^(n-2))+'diff(%u,x,2)*a*x^(n-1)=0]];
677 method;
678 riccati; */
680 /* 188 */
681 (pn_(188),ans:contrib_ode(eqn:x*'diff(y,x)+(1-a*y*log(x))*y=0,y,x));
682 [y = 1/(x*(%c-a*(-log(x)/x-1/x)))];
683 [method,ode_check(eqn,ans[1])];
684 [bernoulli,0];
686 /* 189 Riccati */
688 /* 190 */
689 (pn_(190),ans:contrib_ode(eqn:x*'diff(y,x)=y*(1+y^2),y,x));
690 [-((log(y^2+1)-2*log(y))/2) = log(x)+%c];
691 ans[1],%c=log(%c)/2;
692 -((log(y^2+1)-2*log(y))/2) = log(x)+log(%c)/2;
693 map(exp,2*%);
694 y^2/(y^2+1) = %e^(2*(log(x)+log(%c)/2));
695 map(radcan,%);
696 y^2/(y^2+1) = %c*x^2;
697 ans:solve(%,y);
698 [y = -x*sqrt(-%c/(%c*x^2-1)),y = x*sqrt(-%c/(%c*x^2-1))];
699 [method,ode_check(eqn,ans[1]),ode_check(eqn,ans[2])];
700 [separable,0,0];
702 /* 191 */
703 (pn_(191),ans:contrib_ode(eqn:x*'diff(y,x)+(1-x*y^2)*y=0,y,x));
704 [y=1/(sqrt(2/x+%c)*x)];
705 [method,ode_check(eqn,ans[1])];
706 [bernoulli,0];
708 /* 192 */
709 (pn_(191),ans:contrib_ode(eqn:x*'diff(y,x)+(1-x*y^2)*y=0,y,x));
710 [y = 1/(sqrt(2/x+%c)*x)];
711 [method,ode_check(eqn,ans[1])];
712 [bernoulli,0];
714 /* 193 */
715 assume(not(equal(a,0)),not(equal(a,-1)));
716 '[not equal(a,0),not equal(a,-1)];
717 (pn_(193),ans:contrib_ode(eqn:x*'diff(y,x)=a*y+b*(1+x^2)*y^3,y,x),0);
719 ans:map(radcan,ans);
720 [y=sqrt(a)*sqrt(a+1)*x^a/sqrt(x^(2*a)*((-a-1)*b-a*b*x^2)+%c*a^2+%c*a)];
721 [method,ode_check(eqn,ans[1])];
722 [bernoulli,0];
723 forget(not(equal(a,0)),not(equal(a,-1)));
724 '[not equal(a,0),not equal(a,-1)];
726 /* 194 */
727 (pn_(194),ans:contrib_ode(eqn:x*'diff(y,x)+2*y=a*x^(2*k)*y^k,y,x));
728 [y=(a*(1-k)*x^2/2+%c)^(1/(1-k))/x^2]; /* CHECKME */
729 method;
730 bernoulli;
732 /* 195 */
733 (pn_(195),ans:contrib_ode(eqn:x*'diff(y,x)=4*(y-sqrt(y)),y,x));
734 [log(sqrt(y)-1)/2=log(x)+%c];
735 map(exp,2*ans[1]);
736 sqrt(y)-1 = %e^(2*(log(x)+%c));
737 solve(%,y);
738 [y = %e^(4*%c)*x^4+2*%e^(2*%c)*x^2+1];
739 [method,radcan(ode_check(eqn,%[1]))];
740 [separable,0];
742 /* 196 */
743 (pn_(196),ans:contrib_ode(eqn:x*'diff(y,x)+2*y=sqrt(1+y^2),y,x));
744 ['integrate(1/(sqrt(y^2+1)-2*y),y) = log(x)+%c]; /* CHECKME */
745 method;
746 separable;
748 /* 197 */
749 (pn_(197),ans:contrib_ode(eqn:x*'diff(y,x)=y+sqrt(x^2+y^2),y,x));
750 [x=%c*%e^(x*asinh(y/x)/abs(x))];
751 assume(x>0);
752 [x > 0];
753 ratsimp(ans[1]);
754 x = %c*%e^asinh(y/x);
755 map(log,%/%c);
756 log(x/%c) = asinh(y/x);
757 solve(%,y);   
758 [y = x*sinh(log(x/%c))];
759 [method,ode_check(eqn,%[1])];
760 [genhom,0];
761 forget(x>0);
762 [x > 0];
764 /* 198 */
765 (pn_(198),ans:contrib_ode(eqn:x*'diff(y,x)=y+sqrt(x^2-y^2),y,x));
766 [x = %c*%e^(x*asin(y/x)/abs(x))];
767 assume(x>0);
768 [x > 0];
769 ratsimp(ans[1]);
770 x = %c*%e^asin(y/x);
771 map(log,%/%c);
772 log(x/%c) = asin(y/x);
773 solve(%,y);   
774 [y = x*sin(log(x/%c))]; /* CHECK ME */
775 method;
776 genhom;
777 forget(x>0);
778 [x > 0];
780 /* 199 */
781 assume(x>0,y>0);
782 [x>0,y>0];
783 (pn_(199),ans:contrib_ode(eqn:x*'diff(y,x)=y+x*sqrt(x^2+y^2),y,x));
784 [x-asinh(y/x)=%c];
785 -(ans[1]-x);
786 asinh(y/x)=x-%c;
787 map(sinh,%);
788 y/x=sinh(x-%c);
789 %*x;
790 y=x*sinh(x-%c);
791 [method,ode_check(eqn,%)];
792 [lie,0];
793 forget(x>0,y>0);
794 [x>0,y>0];
796 /* 200 - Another long "result" from ode1_lie */
797 /*(pn_(200),ans:contrib_ode(eqn:x*'diff(y,x)=y-x*(x-y)*sqrt(x^2+y^2),y,x));*/