## if condition inside eval and sum...

I really want to use if condition inside of eval and sum, example as below:

sum(eval(y=x^(j),(if j=1 then x=2 else x=3 fi)),j=1..2)

The reason is: the value of x to be evaluated depends on the value of j which differs inside of the sum (in the context of B-spline functions).

Any lights? Thanks,

## How to integrate a function defined by a condition...

I have a function that is defined by a proc command including some conditional statements (if ... then ...). The conditions are so long so that I can not use a piecewise function instead of using proc. The commands in my code are long and I simplify my question as follows:
f := proc(x) local r; r := sin(x)+x*cos(x); if abs(r) < 1/2 then sin(x) else cos(x) end if; end proc;

plot('f'(x), x = -1 .. 1) works fine but the command int(('f')(x), x = -1 .. 1) gives an error:
Error, (in f) cannot determine if this expression is true or false: abs(sin(x)+x*cos(x)) < 1/2

Is there any way (except rewriting the function as a piecewise function) to get rid of the error?

Any help is appreciated.

## How do I make the result of Result_Eva_GB_X2[3] :=...

I have attached the problem here. I need to say sorry, because I did not provide the whole code. So, automatically It will be error if you execute it.

If you see the attachement, you will see "Result_Eva_GB_X2[3] := []". It makes a problem if I want to make comparison. So I want the result of "Result_Eva_GB_X2[3] := []" is [0].

Actually the result of Result_Eva_GB_X2[3] := [] is complex number, because I did not want the complex I made select(x->is(0<x<1)....) to eliminate the complex number and negative result. So the question is How do I make the result of Result_Eva_GB_X2[3] := [] is [0]?

I have tried to add "Selection Statement (if)" (If the result is Undefined ([]) then Result_Eva_GB_X2[3] := [0]) But it can not work. Or maybe the selection statement that I made was wrong.

## How do I solve the problem that I have attached? ...

I have upload the attachment here. in this problem I want to find the comparison. Please check it and please tell me the correction

## Complex algorithm giving unexpected IF problem .....

So below is a calculation im trying to create, but it just tells me there is an unexpected IF error, and returns me to the third For line. I have tried it straight and as a procedure but i just cant seem to get it to work. Any ideas or tweaks to make this work would be much appreciated. All of the other variables I've named work in their respective lines of code, which I have left out as it is long as it is!

ComlexAlgorithm:= proc(L)
local N, j, kf, o, DeltaMag, DeltaBond;
global NConfig, Configz1, Col, Row, OldConfig, NewConfig, NewTable;

# Set Delta values to zero.
DeltaMag:=0:
DeltaBond:=0:

# Creates loops to loop through the correct changes in values i.e. Add -1, then 1 to first point, move across each point one by one, repeat from the beginning for each configuration then repeat whole process for the amount of rows.
printlevel:=4:
for N from -1 to 1 by 2 do
for j from 1 to Col do
for w from 0 to NConfig-1 do
for o from 1 to Row do

# Calculate DeltaMag.
if N=-1 then DeltaMag:=DeltaMag+1 else DeltaMag:=DeltaMag-1
end if:

# Calculate all relevant bonds i.e. 3 values for DeltaMag, except at "corner" lattice points where there is only 2 bonds.
if N= Configz1[w](o, j) then DeltaBond:= DeltaBond-1 else DeltaBond:= DeltaBond+1
end if:

if j-1>1 then
if N <> Configz1[w](o, j+1) then DeltaBond:= DeltaBond+1
if N = Configz1[w](o, j+1) then DeltaBond:= DeltaBond-1
else DeltaBond:= DeltaBond
end if:
end if:
end if:

if j+1<Col then
if N <> Configz1[w](o, j+1) then DeltaBond:= DeltaBond+1
if N = Configz1[w](o, j+1) then DeltaBond:= DeltaBond-1
else DeltaBond:= DeltaBond
end if:
end if:
end if:

# Calculate if, and by what degree, conifguration number changes using 2^(j-1) which is the arithmetric series for binary. Changes only occur when "incoming" spin is different.
if N= -1 then
if Configz1[w](o, j) <> N then NewConfig[w]:= OldConfig[w-(2^(j-1))]
else NewConfig[w]:= OldConfig[w]
end if:
end if:

if N= 1 then
if Configz1[kf](o, j) <> N then NewConfig[w]:= OldConfig[w+(2^(j-1))]
else NewConfig[kf]:= OldConfig[w]
end if:
end if:

NewTable[kf]:= [NewConfig[w], BondEnergy(w)+DeltaBond, MagEnergy(w)+DeltaMag];

# Set Delta values to zero to finsh.
DeltaMag:=0:
DeltaBond:=0:

end do:
end do:
end do:
end do:
end proc:

## The scope of the ';' statement operator within 'i...

hello everybody,

Is there some trick to bypass the limiited scope of the semicolon statement operator ?

More specifically, is it possible to force Maple to display (apart from the explicit use of the 'print' command) the results of the commands within two nested loops or within a loop and and a conditional statement ?

From the help page concerning statement operators it seems that it is truly impossible ...

"Note: This rule does not apply to statements enclosed in the body of another statement such as an if statement, loop, procedure, module, use statement, or try statement. In these cases, all enclosed statements must be separated by a semicolon or colon."

While not blocking it is a rather irritating limitation :-)

## Delete Matrix rows with complex values...

I wish to delete the rows that have imaginery components from my results Matrix. Have tried many variants of for loops etc.

 (1)
 (2)

 (3)

 (4)

 (5)

 (6)

## Converting piecewise to if selection statement...

Hi guys,

I would like to convert a piecewise defined function of two variables into an if structure
Example :

F := (x,y) -> piecewise(x < 0, piecewise(y < 0, 0, 1), piecewise(y < 0, 1, 0));

What I expect is something like (the indentation is just for fun)
if x < 0 then
if y < 0 then 0 else 1 end if;
else
if y < 0 then 1 else 0 end if;
end if

I tried the following :

convert(F(x,y), `if`)  # but it only converts the "outer x condition" and keeps the "inner y conditions" unchanged

And next this :

map(u -> convert(u, `if`), F(x,y)):   # fails to give m
# and
map(u -> convert(u(x,y), `if`), F(x,y)):
# ...

without success.

Can anoybody help me please.
I am also interested in an explanation of the reasons why the previous command do not work.

Thanks all

## Checking a condition...

I need to do this with a sequence of a large number of elements but here is my question with a sequence of fewer elements.

a:={10,11,-13,9,20,74,10}:

I want to check each element of the sequence if it is negative. And if any element is negative I want to replace with 0 (or do something else). I tried the following code but it didn't work.

for k from 1 to 7 do
if (a[k]<0) then subs(a[k]=0, a) end if:
end do;

## Questions about loops...

I'm new to Maple, and I come from using Matlab.  Apparently my Matlab way of thinking isn't working on Maple.  I'm trying  to ride a bit of code that simulates flipping a coin 1000 times.  The code counts one partiuclar result (1=heads) at the end prints that result.

Here's the code:

dice:=proc()

count:=0:

for i from 1 to 10000 do

roll := rand(1..2):

roll:=()

if (roll=1) then count:=count+1 end if

end do

print(count)

I get errors saying I didn't terminate my loops correctly.  Help, please.

## How to put 'if' into dsolve?...

This is the code example_hw2.mw which derives from hw2_I1.mw.

hw2_I1.mw works but example_hw2.mw doesn't work and the differences between two codes are two new function I added to the dsolve which are η(t) and I2(t). The I2(t) is the second part of I1(t) at the interval t>t* which subject to Phi(t*)=0.

So how to make the sentence 'if |(H(t))/(omega)|>1 then eta(t)=0 else eta(t)=arccos(-(H(t))/(omega))' and 'I2(t) = (int(p(t), x = -eta(t) .. eta(t)))/Pi' work?

## Can 'if' be coded in Components?...

I am wondering if Selection Statement 'if' can be coded in Embedded Components such as Text Area.

I have typed codes in the Text Area(%text_beta_degress) as follows:

if %text_beta_degress=1.2 then Do(%text_ps=28);Do(%text_l4=5.439);
elif %text_beta_degress=8.77 then Do(%text_ps=15);Do(%text_l4=2.785);
elif %text_beta_degress=10 then Do(%text_ps=12.83);Do(%text_l4=2.348);
elif %text_beta_degress=14.4 then Do(%text_ps=5);Do(%text_l4=0.758);
end if

When I typed 1.2 or 8.77 into the Text Area(%text_beta_degress) and tapped 'Enter', %text_ps and %text_l4 didn't response.

Is there any solution?

## If statement within sequence or list creation...

Hi I am not very used to Maple since I used mathematica previously.

So is there way to put an if statement within sequecne definition? that is,

id = 1;

seq(if(i>2, idx += 1), idx+i , i=1..10)

something like this where if statement runs and then idx+i is added to the sequence, as if I am running a loop.

Thanks

 Page 1 of 1
﻿