File: desoln.mac

package info (click to toggle)
maxima 5.49.0%2Bdsfg-1
  • links: PTS
  • area: main
  • in suites:
  • size: 128,932 kB
  • sloc: lisp: 437,845; fortran: 14,665; tcl: 10,143; sh: 4,598; makefile: 2,206; ansic: 447; java: 374; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (21 lines) | stat: -rw-r--r-- 817 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* -*- Mode: MACSYMA; Package: CL-MAXIMA -*- */

load(pwilt);

desolve(eqns,vars):=block([teqns,tvars,ovar,lvar,flag,dispflag],
	modedeclare(flag,boolean),
	flag:false,
	if not listp(vars) then (eqns:[eqns], vars:[vars], flag:true),
	if length(ovar:vars[1])#1 then
		error(ovar,"contains more than one independent variable."),
	ovar:inpart(ovar,1),dispflag:false,
	teqns:map(lambda([z],laplace(z,ovar,lvar)),eqns),
	tvars:map(lambda([z],'laplace(z,ovar,lvar)),vars),
	/* if not freeof(nounify('diff),teqns) then return(false), */
	teqns:errcatch(solve(teqns,tvars)),
	if teqns=[] or teqns=[[]] 
	  then error("desolve can't handle this case.")
	  else teqns:first(teqns),
	if flag#true then teqns:first(teqns),
	teqns:map(lambda([z],pwilt(z,lvar,ovar)),teqns),
	if flag and length(tvars)=1 then teqns[1] else teqns)$