Mr. Robert Long

## 1404 Reputation

13 years, 131 days
Leeds, United Kingdom

## A few questions...

This looks like a heat/diffusion equation problem.

May I ask where Q comes from ?

Have you looked at the behaviour of Q for certain fixed x or t ? For example, setting x=2*Pi, and plotting the evolution over various time periods > 0 indicates quite odd behaviour. Do you think it is correct, physically ? For example, see the plots on the attached sheet.

 >
 >
 >
 (1)

PDE :

 >
 >
 (2)
 >
 >
 (3)
 > PP:=eval(P,x=2*Pi):
 > plot(PP,t=0..100);
 > plot(PP,t=0..1000);
 >
 > plot(PP,t=0..20000);
 > plot(PP,t=0..390000);
 > plot(PP,t=390000..395000);
 > plot(PP,t=395000..397000);
 > plot(PP,t=405000..410000);

## @Christopher2222 I may be missing s...

@Christopher2222 I may be missing something, but looking at those 2 plots, why is Mathematica's much better than Maple's ? Edit: I'm talking about the Zeta() plots.

FYI I've produced the plot in Maple 15 with grid = [1500, 1500] and that looks nice to me, though I don't have mathematica to compare it to..... I can post a screenshot, or try to export it and upload it, if you like ? Edit: I'm talking about the exp(1/z) plot but I could also do the zeta() plot....

## frontend()...

Another way might be with using frontend() though I wasn't able to get it to work. Perhaps Joe Riel or another esteemed expert on frontend() could weigh in on this ?

Here's my solution using unassign:

`restart:eq1:=a + b*x + c*x^alpha = 0;                                  alpha                         a + b x + c x      = 0a:=alpha^2:eq1;                       2            alpha                      alpha  + b x + c x      = 0eq2:=subs(alpha=sqrt(5),eq1);                                / (1/2)\                                    \5     /                       5 + b x + c x         = 0# which (if I understood correctly) is not what the OP wants# Insteada:='a':eq2:=subs(alpha=sqrt(5),eq1):a:=alpha^2:eq2;                                   / (1/2)\                          2            \5     /                     alpha  + b x + c x         = 0`
`# as (I think) required.`
`# But I thought there might be a way using frontend() to apply subs to eq1 so that the substitution is made only where alpha occurs in a power of x, something like`
`eq2:=frontend(subs,[alpha=sqrt(5),eq1],[{},{x^alpha}]);`
`which doesn't work.....`
` `

## unassign ?...

Can't you just unassign a,b,c,,d,..., prior to using subs to substitute for alpha, and then re-assign them afterwards ?

## Solution...

I was able to solve it directly as below. I don't know why you received [] as output. Often maple returns empty output when it finds no solution. As for recursive assignment error, this would happen if you tried to assign the values of  B[n1],B[n2],A[n1] or A[n2] rather than defiining equations (ie if you replaced the "=" with ":=" in your code above). Here's my code. I hope it helps:

`eq1:= B[n1] = -A[n1]*R[s]^np/R[s]^(-np):eq2:= B[n2] = -(-mu[r]*A[n2]*R[r]^np+mu[r]*A[n2]*R[r]^np*np^2-M[n]*R[r])/(mu[r]*R[r]^(-np)*(-1+np^2)):eq3:= A[n2] = (-np*mu[R[m]]*A[n1]*R[m]^np+np^3*mu[R[m]]*A[n1]*R[m]^np+np*mu[R[m]]*B[n1]*R[m]^(-np)-np^3*mu[R[m]]*B[n1]*R[m]^(-np)-np*mu[R[m]]*B[n2]*R[m]^(-np)+np^3*mu[R[m]]*B[n2]*R[m]^(-np)+M[n]*R[m])/(np*mu[R[m]]*R[m]^np*(-1+np^2)):eq4:= A[n1] = (mu[R[m]]*B[n1]*R[m]^(-np)-mu[R[m]]*B[n1]*R[m]^(-np)*np^2-mu[R[m]]*A[n2]*R[m]^np+mu[R[m]]*A[n2]*R[m]^np*np^2-mu[R[m]]*B[n2]*R[m]^(-np)+mu[R[m]]*B[n2]*R[m]^(-np)*np^2-M[n]*R[m])/(mu[R[m]]*R[m]^np*(-1+np^2)):solve({eq1,eq2,eq3,eq4},[B[n1],B[n2],A[n1],A[n2]]);`
` `
` `
`[[          /    np /       (-np)     np           [[B[n1] = - \R[s]   \np R[m]      R[r]   R[m] mu[r]              (-np)                   np   - 2 np R[m]      R[r] mu[R[m]] R[m]              (-np)     np                  (-np)     np              + np R[r]      R[m]   R[m] mu[r] + R[m]      R[r]   R[m] mu[r]         (-np)     np           \     \//                  (-np)    - R[r]      R[m]   R[m] mu[r]/ M[n]/ \2 np mu[R[m]] R[m]            np /   2     np     (-np)       (-np)     np  R[m]   \-np  R[r]   R[s]      - R[r]      R[s]           np     (-np)       (-np)   2     np\      \            /   + R[r]   R[s]      + R[r]      np  R[s]  / mu[r]/, B[n2] = - \  /    np     (-np)     np                \R[r]   R[m]      R[s]   np R[m] mu[r]         np     (-np)     np              + R[r]   R[m]      R[s]   R[m] mu[r]         np     np     (-np)              - R[r]   R[m]   R[s]      R[m] mu[r]         np     np     (-np)                 + R[r]   R[m]   R[s]      np R[m] mu[r]                            np     np     (-np)\     \//  /     - 2 R[r] np mu[R[m]] R[m]   R[s]   R[m]     / M[n]/ \2 \-1       2\       /     np     (-np)       (-np)     np\     np       + np / mu[r] \-R[r]   R[s]      + R[r]      R[s]  / R[m]   np                (-np)\          //       (-np)     np             mu[R[m]] R[m]     /, A[n1] = \\np R[m]      R[r]   R[m] mu[r]              (-np)                   np   - 2 np R[m]      R[r] mu[R[m]] R[m]              (-np)     np                  (-np)     np              + np R[r]      R[m]   R[m] mu[r] + R[m]      R[r]   R[m] mu[r]         (-np)     np           \          (-np)\//                 - R[r]      R[m]   R[m] mu[r]/ M[n] R[s]     / \2 np mu[R[m]]       (-np)     np /   2     np     (-np)       (-np)     np  R[m]      R[m]   \-np  R[r]   R[s]      - R[r]      R[s]           np     (-np)       (-np)   2     np\      \          /     + R[r]   R[s]      + R[r]      np  R[s]  / mu[r]/, A[n2] = \M[     /    (-np)     (-np)     np                n] \R[r]      R[m]      R[s]   np R[m] mu[r]         (-np)     (-np)     np              + R[r]      R[m]      R[s]   R[m] mu[r]         (-np)     np     (-np)              - R[r]      R[m]   R[s]      R[m] mu[r]         (-np)     np     (-np)                 + R[r]      R[m]   R[s]      np R[m] mu[r]              (-np)                   np     (-np)\\//  /       2   - 2 np R[m]      R[r] mu[R[m]] R[m]   R[s]     // \2 \-1 + np   \       /     np     (-np)       (-np)     np\     np             / mu[r] \-R[r]   R[s]      + R[r]      R[s]  / R[m]   np mu[R[m]        (-np)\]]  ] R[m]     /]]`

## One worksheet...

If it's just happening with one worksheet, then just remove all the output from it, then paste the code to a new worksheet, and let us know if the problem persists - if it does, then could you post part of the code so we can try to reproduce it ?

## graphics card...

I had this problem a while ago before I got a new laptop. it turns out to be a problem with the graphics card driver. I installed the latest driver and the problem was solved. I don't know what caused it, but I think it was just after a update/patch.

Have you tried opening the worksheet in question on a different machine ?

## Solve an inequality...

I'm not sure what you mean by "within a certain percentage". A percentage of what ? Leaving that aside, would something like this achieve what you want ?

f:=x^2:g:=x:

iq:=abs(f-g)<1:

solve(iq,x):

convert(%,list);

[Open(1/2-(1/2)*sqrt(5)), Open((1/2)*sqrt(5)+1/2)]

## Does this work as you intend ? testerror...

Does this work as you intend ?

`testerror := proc(b)   local bb:  print (b):  if b > 3 then    return;  end if;  bb:=b;  bb := bb+1;  testerror(bb);  return;end proc:`
` `
`?`

## Same problems...

This has the same problems as you last question

1. You are using = instead of :=

2. You are assigning a value to a parameter.

## The problem occurs because you assign a ...

The problem occurs because you assign a value to terminal_counter which is one of the parameters of the procedure.

To avoid this, either use a new local parameter and assign the value of terminal_counter to it and use it in place of terminal_counter in your code; or change the name of terminal_counter in the parameter list to a new name and assign it's value to terminal_counter.

For example (using the 2nd suggestion)

`evolf := proc(z, f, tc)  #<- terminal_counter changed to tclocal h1,h2,h3,h4,h5,h6,h7,N,test,fitness,total_fitness,i,j,temp1,temp2,terminal_counter;h1 := z + f;h2 := z - f;h3 := z*f;h4 := z+diff(f,x);h5 := z-diff(f,x);h6 := z*diff(f,x);h7 := subs(x=z, f);terminal_counter:=tc;   # <-----terminal_counter is assigned the value of the parameter tcN := 7;test := [h1, h2, h3, h4, h5, h6, h7];print(test);fitness := [0, 0, 0, 0, 0, 0, 0];if terminal_counter > 5 then    return fitness;end if;total_fitness := 0;for i from 1 to N do    temp1 := 0;    temp2 := 0;    for j from 0 by 0.1 to 1 do        temp1 := eval(subs(x=j,test[i])^2);        temp2 := eval(subs(x=j,f)^2);    od;    fitness[i] := 1/(1+temp1+temp2);    total_fitness := total_fitness + 1/(1+temp1+temp2);od;for i from 1 to N do    fitness[i] := fitness[i]/evalf(total_fitness);od;print(select(t->type(fitness[op(t)], max(fitness)), [\$1..nops(fitness)])[1]);print(test[select(t->type(fitness[op(t)], max(fitness)), [\$1..nops(fitness)])[1]]);terminal_counter := terminal_counter + 1;if max(fitness) = min(fitness) then    return fitness;end if;fitness := evolf(test[select(t->type(fitness[op(t)], max(fitness)), [\$1..nops(fitness)])[1]], f, terminal_counter);return fitness;end proc:fitness := evolf(x^2, x+1, 1);`

## not quite...

The best I can do is

`expand(t);                                n                               2                                --                                n                               5 `

## DeleteRow...

`You can use the DeleteRow command in the LinearAlgebra package`
`http://www.maplesoft.com/support/help/Maple/view.aspx?path=LinearAlgebra/DeleteRow`

## end do and a few other things...

You need to close the for loop with an "end do" before closing the procedure.

There are some other issues in your code, such as
not declaring variables as local
It may also be an idea to declare the type of parameter that is being passed in to the procedure (seems like it's a function so you can use f::mathfunc)

So,

`evolf := proc(f::mathfunc)local h1,h2,h3,h4,h5,h6,h7,h8,h9,test,F,i;h1 := z + f(x);h2 := z - f(x);h3 := z*f(x);h4 := f(x)/z;h5 := z+diff(f(x),x);h6 := z-diff(f(x),x);h7 := z*diff(f(x),x);h8 := diff(f(x),x)/z;h9 := subs(x=z, f(x));test := [h1, h2, h3, h4, h5, h6, h7, h8, h9];F := 0;for i from 1 to 9 do    F := F + 1/(1+exp(subs(x=0,test[i])-subs(x=0,f(x))));end do;end proc:evolf(sin);`
`1/(1+exp(z))+1/(1+exp(z-2*sin(0)))+1/(1+exp(z*sin(0)-sin(0)))+1/(1+exp(sin(0)/z-sin(0)))+1/(1+exp(z+cos(0)-sin(0)))+1/(1+exp(z-cos(0)-sin(0)))+1/(1+exp(z*cos(0)-sin(0)))+1/(1+exp(cos(0)/z-sin(0)))+1/(1+exp(sin(z)-sin(0)))`

## fieldplot...

Did you try using fieldplot ?

I tried to enter your equations into maple, but couldn't succeed.  It would be a bit easier (for me, at least) to help if you write your post with maple code instead.

 1 2 3 4 5 6 7 Page 3 of 9
﻿