Hallo,
und was beduetet
> xc[pb_, pc_] := Which[Evaluate[pb > pbgr1, xc1[pb, pc], pbgr2 < pb <=
> pbgr1, xc2[pb, pc], 0 <= pb <= pbgr2, xc3[pb, pc], True, 0]],
??
Das Which[Evaluate[]] ist ja nun ziemlicher Unsinn, da es
den Aufruf von xc1[] .. xc3[] erzwingt, wie man mit
xc1[a_, b_] := Print[a, "**", b];
xc2[a_, b_] := Print[a, "--", b];
xc3[a_, b_] := Print[a, "##", b];
xc[a,b]
leicht sieht. Die Idee von Which[] ist aber gerade, das *nicht*
alle Ausdr"ucke ausgewertet werden, bei denen die
Bedingungen nicht zu treffen, ein Which[Evaluate[]] macht das
aber gerade zu nichte, weil Evaluate[] die Sequence[] auswertet
und nix von Which[] weiss.
Leider habe ich keine Ahnung welche weiteren grotesken Fehler bei
Dir die Fehlermeldung verursachen.
Aber
xq = 0;
xq[a_, b_] := a*b
SetDelayed::"write": "Tag \!\(Integer\) in \!\(0[\(\(a_, b_\)\)]\) is \
Protected."
ist schon mal ein guter Kandidat und
Clear[xq];
xq[a_, b_] := a*b
bei den meisten Definitionen eine gute Idee.
Gruss
Jens
Jochen Haller wrote:
>
> Morgen!
>
> Wahrscheinlich eine Anfängerfrage, aber ich bin eben auch einer. ;)
>
> Manchmal wenn ich ein Funktion durch verzögerte Zuweisung definieren
> möchte, wie z.B. hier
>
> xc[pb_, pc_] := Which[Evaluate[pb > pbgr1, xc1[pb, pc], pbgr2 < pb <=
> pbgr1, xc2[pb, pc], 0 <= pb <= pbgr2, xc3[pb, pc], True, 0]],
>
> erhalte ich folgende Fehlermeldung:
>
> SetDelayed::write: Marke Integer in 0[pb_,pc_] ist geschützt (Protected).
>
> Dabei ist 'Marke' auch manchmal 'Times', 'Integer'. Was bedeutet das?
> Ist event. das Symbol schon belegt?
>
> MfG
> Jochen Haller
>
> --
> Dipl.-Kfm. Jochen Haller
>
> Inst. VWL und Recht, Abt. Mikroökonomik und Räumliche Ökonomik
> Keplerstraße 17, 10. OG, 70174 Stuttgart
> 0711/121-3557, 0711/121-2450 (FAX)
> http://www.sofo.uni-stuttgart.de/mikro/haller.html