Symbolen Werte zuweisen < Maxima < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:41 Fr 06.08.2010 | Autor: | borose |
Hallo,
ich habe folgenden Maxima-Code:
C: genmatrix(C, 3, 3);
X: genmatrix(X, 3, 1);
C[3,3]:1$
X[3,1]:1$
TN: C . X;
PN: genmatrix(PN, 2, 1)$
PN[1,1]: TN[1,1] / TN[3,1]$
PN[2,1]: TN[2,1] / TN[3,1]$
PN;
R: (PNX-PN[1,1] [mm] )^2 [/mm] + (A * (PNY - PN[2,1] ) [mm] )^2 [/mm] ;
dR: genmatrix(dR, 8, 1)$
dR[1,1]: diff(R,C[1,1],1)$
dR[2,1]: diff(R,C[1,2],1)$
dR[3,1]: diff(R,C[1,3],1)$
dR[4,1]: diff(R,C[2,1],1)$
dR[5,1]: diff(R,C[2,2],1)$
dR[6,1]: diff(R,C[2,3],1)$
dR[7,1]: diff(R,C[3,1],1)$
dR[8,1]: diff(R,C[3,2],1)$
dR;
Hier wurde alles symbolisch ausgewertet. Nun möchte ich aber das Array "dR" für bestimmte (numerische) Werte, z.B. "C(1,1): 5 " und "C(2,1): 3", ausgegeben haben.
Wie mache ich das? Prinzipiell sollte das nicht allzu schwer sein, aber ich weiß nicht wie :)
Danke im Voraus!
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo borose,
> Hallo,
>
> ich habe folgenden Maxima-Code:
>
> C: genmatrix(C, 3, 3);
> X: genmatrix(X, 3, 1);
> C[3,3]:1$
> X[3,1]:1$
> TN: C . X;
> PN: genmatrix(PN, 2, 1)$
> PN[1,1]: TN[1,1] / TN[3,1]$
> PN[2,1]: TN[2,1] / TN[3,1]$
> PN;
> R: (PNX-PN[1,1] [mm])^2[/mm] + (A * (PNY - PN[2,1] ) [mm])^2[/mm] ;
> dR: genmatrix(dR, 8, 1)$
> dR[1,1]: diff(R,C[1,1],1)$
> dR[2,1]: diff(R,C[1,2],1)$
> dR[3,1]: diff(R,C[1,3],1)$
> dR[4,1]: diff(R,C[2,1],1)$
> dR[5,1]: diff(R,C[2,2],1)$
> dR[6,1]: diff(R,C[2,3],1)$
> dR[7,1]: diff(R,C[3,1],1)$
> dR[8,1]: diff(R,C[3,2],1)$
> dR;
>
>
> Hier wurde alles symbolisch ausgewertet. Nun möchte ich
> aber das Array "dR" für bestimmte (numerische) Werte, z.B.
> "C(1,1): 5 " und "C(2,1): 3", ausgegeben haben.
>
> Wie mache ich das? Prinzipiell sollte das nicht allzu
> schwer sein, aber ich weiß nicht wie :)
Das geht so:
[mm]\operatorname{subst([C[1,1]=5,C[2,1]=3],dR)}[/mm]
>
> Danke im Voraus!
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:44 Fr 06.08.2010 | Autor: | borose |
Hey,
vielen Dank! Hat geklappt. Nun bin ich weitergekommen, allerdings hapert es jetzt an einer anderen Stelle:
Wenn man den Maxima-Code ausführt, ergibt sich als letztes ein Gleichungssystem mit 6 Unbekannten und 6 (Nicht-Null) Gleichungen. Wie bringe ich Maxima dazu, mir dieses GLS zu lösen und mir die Koeffizienten auszugeben?
/* [wxMaxima: input start ] */
kill(all)$
C: genmatrix(C, 3, 3)$
X: genmatrix(X, 3, 1)$
P: genmatrix(P, 2, 1)$
GL: genmatrix(GL, 8, 1)$
C[3,3]: 1$
X[3,1]: 1$
TN: C.X$
P[1,1]: TN[1,1] / TN[3,1]$
P[2,1]: TN[2,1] / TN[3,1]$
Zielfkt: [mm] (PNx-P[1,1])^2+(A*(PNy-P[2,1]))^2$
[/mm]
GL: matrix(
[diff(Zielfkt,C[1,1],1)],
[diff(Zielfkt,C[1,2],1)],
[diff(Zielfkt,C[1,3],1)],
[diff(Zielfkt,C[2,1],1)],
[diff(Zielfkt,C[2,2],1)],
[diff(Zielfkt,C[2,3],1)],
[diff(Zielfkt,C[3,1],1)],
[diff(Zielfkt,C[3,2],1)])$
GL: subst(0, C[3,1], GL)$
GL[7,1]: 0$
GL: subst(0, C[3,2], GL)$
GL[8,1]: 0$
Werte: matrix(
[455,2998,0,0],
[454,2957,0,0.1],
[455,2916,0,0.2],
[455,2874,0,0.3],
[455,2834,0,0.4],
[456,2791,0,0.5],
[455,2750,0,0.6],
[455,2709,0,0.7],
[457,2669,0,0.8],
[457,2626,0,0.9],
[457,2585,0,1],
[531,2999,100,0],
[605,2999,200,0],
[681,2999,300,0],
[759,3001,400,0],
[832,3001,500,0],
[909,3000,600,0],
[981,3001,700,0],
[1055,3001,800,0],
[1130,3002,900,0],
[1203,3002,1000,0],
[1202,2962,1000,0.1],
[1202,2919,1000,0.2],
[1202,2878,1000,0.3],
[1202,2838,1000,0.4],
[1202,2794,1000,0.5],
[1201,2753,1000,0.6],
[1202,2713,1000,0.7],
[1203,2628,1000,0.9],
[531,2585,100,1],
[608,2586,200,1],
[683,2586,300,1],
[760,2587,400,1],
[834,2587,500,1],
[909,2587,600,1],
[981,2587,700,1],
[1057,2586,800,1],
[1130,2588,900,1])$
Avalue: 1000$
GL: subst(Avalue, A, GL)$
RSS: ratsimp(sum(
subst(
Werte[i, 1], X[1,1], subst(
Werte[i, 2], X[2,1], subst(
Werte[i, 3], PNx, subst(
Werte[i, 4], PNy, GL)))), i, 1, 38)) = 0;
/* [wxMaxima: input end ] */
|
|
|
|
|
Hallo borose,
> Hey,
>
> vielen Dank! Hat geklappt. Nun bin ich weitergekommen,
> allerdings hapert es jetzt an einer anderen Stelle:
>
> Wenn man den Maxima-Code ausführt, ergibt sich als letztes
> ein Gleichungssystem mit 6 Unbekannten und 6 (Nicht-Null)
> Gleichungen. Wie bringe ich Maxima dazu, mir dieses GLS zu
> lösen und mir die Koeffizienten auszugeben?
>
>
> /* [wxMaxima: input start ] */
> kill(all)$
> C: genmatrix(C, 3, 3)$
> X: genmatrix(X, 3, 1)$
> P: genmatrix(P, 2, 1)$
> GL: genmatrix(GL, 8, 1)$
>
> C[3,3]: 1$
> X[3,1]: 1$
>
> TN: C.X$
>
> P[1,1]: TN[1,1] / TN[3,1]$
> P[2,1]: TN[2,1] / TN[3,1]$
>
> Zielfkt: [mm](PNx-P[1,1])^2+(A*(PNy-P[2,1]))^2$[/mm]
>
>
>
> GL: matrix(
> [diff(Zielfkt,C[1,1],1)],
> [diff(Zielfkt,C[1,2],1)],
> [diff(Zielfkt,C[1,3],1)],
> [diff(Zielfkt,C[2,1],1)],
> [diff(Zielfkt,C[2,2],1)],
> [diff(Zielfkt,C[2,3],1)],
> [diff(Zielfkt,C[3,1],1)],
> [diff(Zielfkt,C[3,2],1)])$
>
> GL: subst(0, C[3,1], GL)$
> GL[7,1]: 0$
>
> GL: subst(0, C[3,2], GL)$
> GL[8,1]: 0$
>
>
> Werte: matrix(
> [455,2998,0,0],
> [454,2957,0,0.1],
> [455,2916,0,0.2],
> [455,2874,0,0.3],
> [455,2834,0,0.4],
> [456,2791,0,0.5],
> [455,2750,0,0.6],
> [455,2709,0,0.7],
> [457,2669,0,0.8],
> [457,2626,0,0.9],
> [457,2585,0,1],
> [531,2999,100,0],
> [605,2999,200,0],
> [681,2999,300,0],
> [759,3001,400,0],
> [832,3001,500,0],
> [909,3000,600,0],
> [981,3001,700,0],
> [1055,3001,800,0],
> [1130,3002,900,0],
> [1203,3002,1000,0],
> [1202,2962,1000,0.1],
> [1202,2919,1000,0.2],
> [1202,2878,1000,0.3],
> [1202,2838,1000,0.4],
> [1202,2794,1000,0.5],
> [1201,2753,1000,0.6],
> [1202,2713,1000,0.7],
> [1203,2628,1000,0.9],
> [531,2585,100,1],
> [608,2586,200,1],
> [683,2586,300,1],
> [760,2587,400,1],
> [834,2587,500,1],
> [909,2587,600,1],
> [981,2587,700,1],
> [1057,2586,800,1],
> [1130,2588,900,1])$
>
> Avalue: 1000$
>
> GL: subst(Avalue, A, GL)$
>
> RSS: ratsimp(sum(
> subst(
> Werte[i, 1], X[1,1], subst(
> Werte[i, 2], X[2,1], subst(
> Werte[i, 3], PNx, subst(
> Werte[i, 4], PNy, GL)))), i, 1, 38)) = 0;
> /* [wxMaxima: input end ] */
>
Zum Beispiel so:
v:lhs(RSS) // linke Seite von RSS
linsolve([v[1][1]=0, v[2][1]=0, v[3][1]=0, v[4][1]=0, v[5][1]=0, v[6][1]=0], [C[1,1],C[1,2],C[1,3],C[2,1],C[2,2],C[2,3]]);
"linsolve " wird bei linearen Gleichungen verwendet.
Wenn Du nicht weisst, um welche Art von Gleichungen sich handelt,
verwende "algsys":
algsys([v[1][1]=0, v[2][1]=0, v[3][1]=0, v[4][1]=0, v[5][1]=0, v[6][1]=0], [C[1,1],C[1,2],C[1,3],C[2,1],C[2,2],C[2,3]]);
Gruss
MathePower
|
|
|
|