Not 100% sure because you've got Intel graphics, but it sounds like the good old trouble with bad EDID. In a nutshell, your monitor sends bad info to your graphic card, it cannot read the maximal frequencies and errs on the side of caution, using the lowest possible settings only.
randr is (by design!) only meant for run-time changes. For any permanent configuration, you need to change your X server settings. For this, edit /etc/X11/xorg.conf (This is an important system file! Make a backup first!). You need to add HorizSync and VertRefresh lines. The result should look like this:
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 30-35
VertRefresh 55-75
EndSection
Warning: Do not use the numbers I posted here! If you set a frequency in HorizSync which is too high, it might permanently damage your monitor. They fluctuate considerably between monitor models, I've seen them anywhere between 30 Hz and 75 Hz. You should look up the correct values in the monitor's user guide, or call the manufacturer's tech support and ask about vertical and horizontal frequency at your preferred resolution.
Maybe you'll need to add the mode line to the Xorg.conf manually (I forgot which section, I think Screen) but probably after the X restart you'll be able to set the resolution using the built-in graphical tool.
Even if this doesn't solve your problem, the xorg.conf is the place to save permanent changes to your screen configuration.
Edit, as an answer to your comments.
The HorizSync is the frequency, yes. On a nVidia card, setting the HorizSync and VertRefresh in the xorg.conf (then restarting X or just rebooting) makes all the usual resolutions available in the nVidia driver GUI. So choosing your preferred resolution there should be possible.
If this doesn't happen with the Intel drivers, you can manually add the resolution you want into your Xorg.conf. Still in the Monitor section, paste your modeline (which worked with xRandR). Then list the mode name as the Preferred mode option. Then, in the Screen section, Display subsection, add a Modes line, including the name of your mode.
The result should be something like this:
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 30-80
VertRefresh 55-75
Modeline "1152x864_60.00" 81.75 1152 1216 1336 1520 864 867 871 897 -hsync +vsync
Option "PreferredMode" "1152x864_60.00"
EndSection
and below that, within the Screen section
SubSection "Display"
Depth 24
Modes "1152x864" "1024x768" "640x480"
EndSubSection
I am not sure if you need the Display subsection, but I have found it in an old config file of mine. If it doesn't work, comment it out again. Cannot test it on my current system because I cannot restart just now, and my current monitor configuration is different. So it may still need some tweaking. But in theory, adding the modeline into Xorg.conf is the permanent version of adding it dynamically to RandR.
If you need to tweak, a good information source would be the Xorg.conf manual. http://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html
If all else fails, I think there is a X profile file where you can add xRandR commands. It is certainly not elegant, and possibly as slow as your init script solution. Besides, I don't remember much about this file and how to use it, so cannot help you there.
And if these things fail too, maybe the problem is something else. As it is probably still X related, you could look into your /var/log/xorg.0.log file. If there are lines starting with (WW) or (EE), google these lines and you'll almost certainly find a solution.
Best Answer
Generically speaking: pixel = dot = point. They are different physical elements, depending on the medium you're working in. On computer monitors, pixels matter. In printing, dots are what count. Points are more generic and could refer to pixels or dots. The terms are commonly interchanged and often confused.
"Resolution" is the total number of [pixels, points or dots] wide, by total number of [pixels, points or dots] high. So a printer could have a resolution of 1200x1200 dots per inch, while a monitor could have a resolution of 1280x1024.
DPI and PPI are simply ratios. DPI is "dots per inch," PPI is "points per inch" or "pixels per inch." Those ratios increase and decrease based on the resolution (width x height, in pixels) and size (in inches) of a given medium.
To calculate the DPI, you need to determine the actual physical widths and heights of the medium. A common example is the Apple iPhone 4 screen:
Physical Width = 1.94 inches Physical Height = 2.91 inches
Width (in pixels) = 640 Height (in pixels) = 960
The assumption is that all pixels, dots, or points occupy a square space. Therefore, the simple equation to determine PPI / DPI is to divide pixel height by physical height, yielding roughly 329 DPI.
This information helps to answer your question. Windows does not have any idea what the DPI of your display is, because it has no concept of what the physical dimensions of the display are. You can buy 20" monitors with 1920x1080 resolution, as well as 70" monitors with the same 1920x1080 resolution. Both have signficantly different DPI's, yet Windows has no idea and nothing to do with it.
While Windows offers the option of increasing or decreasing the DPI, all it will really do is adjust system font sizes and default icon / UI sizes of things. Many other apps, graphics, websites and emails will actually get very poorly distorted if you make changes to the DPI settings.
Apple Mac OS (especially iOS) has significantly better support for DPI, and knows, based on the devices it is installed on, which DPI setting to use.