Nope, not x = y = z x=y=z

Algebra Level 5

Let a , b , c a, b, c be positive reals so that 3 a b + b c + 2 c a = 6 3ab+bc+2ca=6 . Find the maximum value of

1 a 2 + 1 + 4 b 2 + 4 + 9 c 2 + 9 \frac { 1 }{ { a }^{ 2 }+1 } +\frac { 4 }{ { b }^{ 2 }+4 } +\frac { 9 }{ { c }^{ 2 }+9 }

Write your answer to 4 decimal places.


The answer is 2.25.

This section requires Javascript.
You are seeing this because something didn't load right. We suggest you, (a) try refreshing the page, (b) enabling javascript if it is disabled on your browser and, finally, (c) loading the non-javascript version of this page . We're sorry about the hassle.

1 solution

Zach Bian
Dec 29, 2017

I think I accidentally solved it. I got 2.236545652907476.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Calculate square to save typing and eyestrain.
var sq = (x) => (x*x);

// Our function
var mystery = (a,b,c) => (1/(a*a+1) + 4/(b*b+4) + 9/(c*c+9));

// c solved for a and b
var c = (a,b) => ((6-3*a*b)/(2*a+b));

// The directional derivative of the mystery function. c is subbed in using the above function.
var grad = (a,b) => {
    let clocal = c(a,b);
    return [-2*a/sq(a*a+1),
    -8*b/sq(b*b+4),
    -18*clocal/sq(clocal*clocal+9)
]};

// Magnitude of a vector
var magnitude = (vec) => {
    let acc = 0;
    for(let el of vec){
        acc += el*el;
    }
    return Math.sqrt(acc);
};

// Normalize vector to a size.
var normalize = (vec, factor) => {
    let mag = magnitude(vec);
    if(factor === undefined)
        factor = 1;
    return [...vec.map(a=>(a/mag*factor))];
};

// Heuristic step size:
var stepsize = .0001;

// Start position:
var position = [1,1,c(1,1)];

// Timeout:
var steps = 1000;

// Keep track of maximum:
var max = mystery(...position);

// Climb the hill:
while(steps > 0){
    // Determine direction:
    let stepVec = normalize(grad(position[0], position[1]), stepsize);

    // If step size is too small, exit.
    if(magnitude(stepVec) < 1e-6)
        break;

    // If we go negative, exit.
    if(position[0] + stepVec[0] < 0 || position[1] + stepVec[1] < 0)
        break;

    // Take the step
    position[0] += stepVec[0];
    position[1] += stepVec[1];
    position[2] = c(position[0], position[1]);

    let cache = mystery(...position); 
    if(max < cache){
        max = cache;
    }

    steps--;
    // Uncomment to view steps:
    // if(steps%10==0)
    //     console.log(stepVec, position, max);
}

console.log(max);

Did I go wrong somewhere?

0 pending reports

×

Problem Loading...

Note Loading...

Set Loading...