Geek Squad
in Off-topic ·
bluebadger112 said:I suppose you're right that evaluating a function at more points results in a denser representation of its graph. That seems to be the case.
However, one can only evaluate it at a finite number of points. The accuracy of how closely an Euler polygon approximates the actual solution depends heavily on the length of the interval. Specifically, if $l$ represents the interval length, $f$ is locally Lipschitz with respect to the second variable, $v$ is the Euler polygon, and $u$ is the solution to the initial value problem, then we have a uniform estimate $|u - v| < cM(l)$, where $M$ is a known strictly increasing function, $c > 0$, and $v$ depends on $c$—meaning the selection of the Euler polygon is contingent upon a pre-established positive constant. Consequently, as the interval grows larger, the estimate becomes less reliable; the guarantee of proximity between the Euler polygon and the true solution diminishes. Now, while one could theoretically choose a sufficiently small $c$, doing so might result in an interval distribution for defining $v = v(c)$ that contains far too many segments for a computer to handle efficiently.
It might indeed involve too much data for a computer, though I guess it really just depends on how the program is structured and what kind of processor is being used.
Whether we are dealing with a 32-bit or 64-bit architecture makes a significant difference. Individual mathematical operations are limited by the register capacity of a specific processor. Even during a very basic addition, we encounter these constraints. With 32-bit systems, a single register holds a maximum of 32 bits, which essentially means a maximum input of 4 ASCII characters per register. For 64-bit, it would be 8 ASCII characters.
With 32-bit, the maximum arithmetic processing you can perform involves a four-digit number per operation.
For example,
mov eax, [num1]
sub eax, '0'
mov ebx, [num2]
sub ebx, '0'
In this scenario, the maximum values for num1 and num2 would be 9999. Anything beyond that leads to a buffer overflow, causing the program to crash.
I imagine this issue could be resolved by "splitting" any number larger than four digits and processing them individually.
The situation regarding division and Mul eax is quite similar.
Mul eax, num1
Where the product is split into two segments: Edx serves as the 32-bit high-order segment and eax acts as the 32-bit low-order segment. If the maximum for each register is 9999, exceeding that will trigger a buffer overflow.
If we were to use a constant $c$ that is, say, 0.000000000000000001, we wouldn't calculate it directly as 0...1; rather, we might treat it as 1 and then format it as 0...1 when printing. Such a process requires additional functions because we cannot compute it all at once in a single step due to the massive discrepancy between the number of ASCII characters and the capacity of the processor registers.
In any mathematical software—whether it's something like GeoGebra or WolframAlpha—the underlying processes remain the same. For every complex operation, variables are segmented into smaller parts, which are then processed either serially or in parallel, segment by segment, until the final product is reached.