large lists with variable and if condition (vrs. 8.0.4)
- To: mathgroup at smc.vnet.net
- Subject: [mg124687] large lists with variable and if condition (vrs. 8.0.4)
- From: Chris <kristophs.post at web.de>
- Date: Tue, 31 Jan 2012 05:39:17 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hi I would like to construct a large list or large table with some data and one unknown variable which I need for optimization purposes in say a for loop. Constructing the whole list at each iteration is time consuming and slows the optimization down. First, I present some code that works just fine in order to get the idea: (*inputs) leg = 100; data = RandomReal[{}, leg]; (*constructing the list with the data in which g is a non-specfied variable*) Clear[list, list2, tab]; list = Table[(data[[i]] - data[[leg - i + 1]])/g, {i, 1, leg}]; (*specifying the function and the result*) tab[k_] := list /. g -> k; tab[1] Now the following code does not work and I don't know why. list2= Table[If[Abs[(data[[j]]-data[[i]])/x]<1.,.75 (1.-((data[[j]]- data[[i]])/x)^2),0.],{i,1,leg},{j,1,leg}]; mat[bw_Real]:=list/.x->bw It seems to me, when looking at list2, that Mathematica is not evaluating the when-part of the if-function when the if-part depends on the unknown variable. Hence, an error message. Constructing the list as: mat[bw_Real]:=Table[If[Abs[(data[[j]]-data[[i]])/bw]<1.,.75 (1.- ((data[[j]]-data[[i]])/bw)^2),0.],{i,1,leg},{j,1,leg}]; is not an option because it slows things down. Thanks for answer.