. MAXIMIERUNG DURCH POTENZIERUNG UND FIT
Unprotect[Times]
0. _ := 0
Protect[Times]
MaxFitWeightPower = 2
MaxFit1[fp_,{x_,a_,b_}] := Block[{A,B,dA,a4,a3,a2,a1,a0,fpn,alpha,beta,gamma},
fpn = fp^MaxFitWeightPower;
Array[A,{3,3}];
Array[B,{3}];
Print["Calculating a4"];
a4 = Integrate[Expand[fpn x^4],{x,a,b}];
Print["Calculating a3"];
a3 = Integrate[Expand[fpn x^3],{x,a,b}];
Print["Calculating a2"];
a2 = Integrate[Expand[fpn x^2],{x,a,b}];
Print["Calculating a1"];
a1 = Integrate[Expand[fpn x],{x,a,b}];
Print["Calculating a0"];
a0 = Integrate[Expand[fpn], {x,a,b}];
A = {{a4,a3,a2},{a3,a2,a1},{a2,a1,a0}};
dA = Det[A];
Print[StringForm["Determinant=``",dA]];
B = {Print["Calculating b2"];
Integrate[Expand[fpn fp x^2],{x,a,b}],
Print["Calculating b1"];
Integrate[Expand[fpn fp x],{x,a,b}],
Print["Calculating b0"];
Integrate[Expand[fpn fp],{x,a,b}]};
alpha = Det[{B,{a3,a2,a1},{a2,a1,a0}}]/dA;
beta = Det[{{a4,a3,a2},B,{a2,a1,a0}}]/dA;
gamma = Det[{{a4,a3,a2},{a3,a2,a1},B}]/dA;
(* Plot[{fp,alpha x^2+beta x+gamma},{x,a,b}]; *)
{alpha,beta,gamma}
]
MaxFind1::usage = "MaxFind1[f,{x,a,b},mfp] finds the absoulute Maximum of a
non-negative
function f[x] in the interval a<x<b.
mfp is the used power, can be omitted, default is 8."
MaxFind1[f_,{x_,a_,b_},mfp_:8] :=
Block[{k,d,w},
Print[StringForm["Interval ``,
MaxFitPower=``",{a,b},mfp]];
MaxFitResult = MaxFit1[f^mfp,{x,a,b}];
ka=MaxFitResult[[1]];
kb=MaxFitResult[[2]];
kc=MaxFitResult[[3]];
k =kb/(-2 ka);
d =kb^2 - 4 ka kc;
fehlb = Sqrt[d]/(2 ka);
k
]
MaxFit2[fp_,{x1_,a1_,b1_},{x2_,a2_,b2_}] :=
Block[{A,B,a40,a22,a04,a30,a03,a21,a12,a20,a02,a11,a10,a01,a00,fpn,r,
c20,c02,c10,c01,c00},
fpn = fp^MaxFitWeightPower;
Array[A,{5,5}];
Array[B,{5}];
a40 = Integrate[Expand[fpn x1^4],{x1,a1,b1},{x2,a2,b2}];
a04 = Integrate[Expand[fpn x2^4],{x1,a1,b1},{x2,a2,b2}];
a22 = Integrate[Expand[fpn x1^2 x2^2],{x1,a1,b1},{x2,a2,b2}];
a30 = Integrate[Expand[fpn x1^3],{x1,a1,b1},{x2,a2,b2}];
a03 = Integrate[Expand[fpn x2^3],{x1,a1,b1},{x2,a2,b2}];
a21 = Integrate[Expand[fpn x1^2 x2],{x1,a1,b1},{x2,a2,b2}];
a12 = Integrate[Expand[fpn x1 x2^2],{x1,a1,b1},{x2,a2,b2}];
a20 = Integrate[Expand[fpn x1^2],{x1,a1,b1},{x2,a2,b2}];
a02 = Integrate[Expand[fpn x2^2],{x1,a1,b1},{x2,a2,b2}];
a11 = Integrate[Expand[fpn x1 x2],{x1,a1,b1},{x2,a2,b2}];
a10 = Integrate[Expand[fpn x1],{x1,a1,b1},{x2,a2,b2}];
a01 = Integrate[Expand[fpn x2],{x1,a1,b1},{x2,a2,b2}];
a00 = Integrate[Expand[fpn],{x1,a1,b1},{x2,a2,b2}];
A = {{a40,a22,a30,a21,a20},
{a22,a04,a12,a03,a02},
{a30,a12,a20,a11,a10},
{a21,a03,a11,a02,a01},
{a20,a02,a10,a01,a00}};
Print[TableForm[A]];
Print[StringForm["Determinant=``",Det[A]]];
B = {Integrate[Expand[fpn fp x1^2],{x1,a1,b1},{x2,a2,b2}],
Integrate[Expand[fpn fp x2^2],{x1,a1,b1},{x2,a2,b2}],
Integrate[Expand[fpn fp x1],{x1,a1,b1},{x2,a2,b2}],
Integrate[Expand[fpn fp x2],{x1,a1,b1},{x2,a2,b2}],
Integrate[Expand[fpn fp],{x1,a1,b1},{x2,a2,b2}]};
r = Solve[A.{c20,c02,c10,c01,c00}==B];
Flatten[{c20,c02,c10,c01,c00}/.r]
]
MaxFind2[f_,{x1_,a1_,b1_},{x2_,a2_,b2_},mfp_:8] :=
Block[{k},
MaxFitResult = MaxFit2[f^mfp,{x1,a1,b1},{x2,a2,b2}];
k20=MaxFitResult[[1]];
k02=MaxFitResult[[2]];
k10=MaxFitResult[[3]];
k01=MaxFitResult[[4]];
k00=MaxFitResult[[5]];
{-k10/(2 k20), -k01/(2 k02)}
]
machmfp = 10
test = 10 - (x1-0.2)^2 - (x2-0.4)^2
mach2 := MaxFind2[test,{x1,-1,1},{x2,-1,1},machmfp]
fit2 := k20 x1^2 + k02 x2^2 + k10 x1 + k01 x2 + k00
fit1 := ka x^2 + kb x + kc