text:
# Is there a special term for amateur transceiver speakers or anything that makes them different from any other kind of speaker?

When I bought a secondhand FT-7800R at Field Day 2017, I received an MLS-100 external speaker with it. I installed it recently and having the speaker more than an inch away from the radio's mounting surface is great.

I'd like to buy more external speakers, but the MLS-100 seems absurdly expensive (about \$45) for what it is: a 12W 4-ohm, unpowered mono speaker. I expected to be able to find a bulk pack of similar speakers for$10 on Amazon or ebay, but this is proving not to be the case.

• Is there something that makes amateur radio speakers better or different than any other kind of unpowered speaker of equivalent wattage and impedance?
• Is there a common term for such speakers? I've tried searching for "4-ohm mono speaker", but all I've been able to find are guides on how to get pick or install stereo speakers.
• Is there a good reason I couldn't purchase something like this and expect it to work if I attach a mono audio cable to it?

Is there something that makes amateur radio speakers better or different than any other kind of unpowered speaker of equivalent wattage and impedance?

Some may have audio filters, headphone jacks, or other such application-specific features.

They could be somehow designed to be best at reproducing the frequencies important to intelligible speech, as opposed to a broader but overall lower frequency response or dynamic range for music, and you will see such claims but I don't know how true they are.

Is there a common term for such speakers? I've tried searching for "4-ohm mono speaker", but all I've been able to find are guides on how to get pick or install stereo speakers.

"Communications speaker".

Is there a good reason I couldn't purchase something like this and expect it to work if I attach a mono audio cable to it?

No, you should feel free to use any speaker of suitable impedance. Of course, that is just a driver without an enclosure, so technically it is not a complete speaker.

Note that in a mobile installation an important characteristic is whether you can get it loud enough to be heard over road noise without causing distortion. This will be affected by the impedance and efficiency of the speakers. A speaker that is poorly designed may not get loud enough without distorting (or rattling!)

• My 3D printer says that anything that makes sound is a complete speaker if I want it to be, but just searching for "communications speaker" came back with exactly what I was looking for and is less work than wiring up my own and printing/building an enclosure. Thanks! – William Oct 31 '17 at 18:14
• @William-Rem The enclosure can make a big difference in the sound quality, since every driver produces waves out the front and the back. You might want to read up on DIY speaker design before making an enclosure. Not my field so I don't know how much it will matter for this application. – Kevin Reid AG6YO Oct 31 '17 at 18:34
• @William-Rem — the purpose of most enclosures is to get the waves that come out of the back of the speaker to head toward the front so that you get more sound. A sock would give you less. – Pete NU9W Nov 1 '17 at 12:28
• I suspect the sock would do almost nothing, actually. And a problem in general is the phase of the rear-pointing wave (which starts out inverted) — if you do redirect it forward you don't want cancellation at important frequencies. – Kevin Reid AG6YO Nov 1 '17 at 15:03
• @William-Rem I suggest you get some with bass and treble controls, which are useful on mine (1 and 2 in the photo). Having said that, I have some really cheap ones without any, that might even be better than those old Altec-Lansings (which I bought years ago at a yard sale) that came with a subwoofer (not needed!). Nothing beats headphones. Mine are military surplus, and are perfect for communications, much better than hi-fi stereo music phones, earbuds, etc. – Mike Waters Nov 1 '17 at 22:28

## Our choice of speakers are important.

They can make the difference between either hearing the other station clearly or straining to hear and missing part of the conversation.

But we don't need "special" speakers, that may be expensive and not even be very good.

The sound from the small tinny-sounding speaker in the top cover of that IC-765 under the monitor kept me from hearing the people that I was ragchewing with on HF SSB. So, I added those speakers, 1, 2, and 3. They are all connected to my transceiver. Tuning to any SSB signal on the HF bands, the sound from them is very clear and easy to understand. The same would be true for narrow-band FM signals.

Speakers 1 and 2 are older Altec Lansing computer speakers. Even though they were not intended for amateur radio, they sound great and I highly recommend them! Get some computer speakers and try them.

Speaker 3 is an older Am-Comm Inc. digital ClearSpeech™ speaker. Most of the time, the digital noise filter is off, but it still adds a few highs that the computer speakers lack. Am-Com has since been acquired by another company which added several adjustable levels of digital noise filtering that made it an even better speaker (so others have told me).

This page on one of my websites explains the frequency ranges that are important for us to hear weak voice signals that are almost buried in the noise.

But good communications-style headphones are better than any speakers for hearing the weak ones!

There are already two answers posted with good information but here is a little bit more information to help with your selection process.

Impedance

Matching the impedance of the speaker to the speaker impedance range specified for the audio amplifier (the transceiver in your case) is important in order to ensure a maximum power transfer from your radio to your ear. An improper impedance can also introduce distortion and potentially instability in a marginally designed amplifier.

SPL

Most speakers have a Sound Pressure Level (SPL) rating. This is an indication of how efficiently the speaker converts electrical power to acoustic power. It specifically is the sound pressure level measured at 1 meter from the speaker with 1 watt of excitation applied. The result is generally expressed in dB form. In general for a common speaker design, the larger the speaker, the greater the SPL.

A higher SPL indicates a more efficient speaker. This can be important for hearing the subtleties within the sound source as a lower SPL can render low level sounds as imperceptible.

Frequency Range

The frequency range of the speaker indicates what frequencies the speaker will reasonably reproduce. This area of characterization lacks standardization so often a close inspection of data sheets are in order to make comparisons. The general bass, mid range, and tweeter components used in audiophile systems are examples of speakers that are optimized for specific frequency ranges. The frequency range required for a specific amateur radio application depends upon the modulation mode. An standard SSB voice will be faithfully reproduced in a 200 to 2500 Hertz range. A CW signal can be used with a much narrower frequency range signal based on the preferred side tone frequency of the operator. An FM signal often has a wider response than standard SSB. Some deficiencies in frequency response can be overcome with a parametric equalizer added to the amplifier chain.

It should also be noted that a speaker with too large of a frequency range may prove annoying as it will be more prone to reproduce noise that is accompanying the desired signal.

Enclosure Design

The speaker enclosure can have a dramatic effect on the frequency response and in some cases, the effective SPL of the speaker. A common example of this is acoustic dampening within the enclosure. Wool will generally modify the mid range frequencies while felt will modify the low end frequencies. Other methods effectively alter the geometry of the enclosure for certain frequencies. Examples of this includes porting and acoustic foam. You will find a great deal of subjective and objective information on this topic on various audiophile sites.

From an amateur radio perspective, the enclosure may also play a role in keeping RFI out of the amplifier chain.

• Modern audio amplifiers are not intended to be used in a matched impedance configuration but a bridged one. You should not use a speaker of matched impedance (such a system would see greater variations in frequency response), but one whose impedance is no lower than the amplifier's documented minimum load impedance (typically 4 or 8 Ω). The actual output impedance of the amplifier will be much lower than that. – Kevin Reid AG6YO Nov 1 '17 at 15:16
• @KevinReidAG6YO Good point, Kevin. I will edit my answer to clarify. – Glenn W9IQ Nov 1 '17 at 15:18
• Thanks @KevinReidAG6YO. I actually thought you were supposed to match impedences of speakers, too. – William Nov 1 '17 at 16:43
• @GlennW9IQ - The Sound Pressure Level measurement isn't one I've seen before, but I suspect that's a result of always buying cheap speakers. Thanks for the answer. – William Nov 1 '17 at 16:44
• P.S. to the above -- I actually do not use cheap computer speakers anymore but rather a nice (and, relatively expensive) speaker from Elecraft as well as the Comms speaker from West Mountain Radio. – K7PEH Nov 2 '17 at 17:01


text:
Hide

Problem BWhich Base is it Anyway?

Programming languages such as C++ and Java can prefix characters to denote the base of constant integer values. For example, hexadecimal (base $16$) constants are preceded by the string “0x”. Octal (base $8$) values are preceded by the character “0” (zero). Decimal (base $10$) values do not have a prefix. For example, all the following represent the same integer constant, albeit in different bases.

0x1234
011064
4660

The prefix makes it clear to the compiler what base the value is in. Without the “0x” prefix, for example, it would be impossible for the compiler to determine if 1234 was hexadecimal. It could be octal or decimal.

For this problem, you will write a program that interprets a string of decimal digits as if it were an octal value, a decimal value or a hexadecimal value.

Input

The first line of input contains a single decimal integer $P$, ($1 \le P \le 100$), which is the number of data sets that follow. Each data set should be processed identically and independently.

Each data set consists of a single line of input. It contains the data set number, $K$, followed by a single space, followed by a string of at most $7$ decimal digits.

Output

For each data set there is one line of output. The single output line consists of the data set number, $K$, followed by a space followed by $3$ space separated decimal integers which are the value of the input as if it were interpreted to as octal, decimal and hexadecimal respectively. If the input value cannot be interpreted as an octal value, use the value $0$.

Sample Input 1 Sample Output 1
4
1 1234
2 9
3 1777
4 129

1 668 1234 4660
2 0 9 9
3 1023 1777 6007
4 0 129 297

format: plain


text:
# Approximate a Bell Curve

Create a program to display some approximation of a bell curve. You are free to use whatever method you wish for generating the data, but the data must be displayed vertically, as in oriented like so:

Other restrictions:

• Your code must create the approximation, that is, don't hardcode or take data from the internet.
• The shape must actually look like a bell.

This is a , so be creative.

• Sorry for not remembering to ask this when it was in the sandbox, but is ASCII-art ok? – Victor Stafusa Mar 2 '14 at 2:08
• @Victor Of course. (as long as you orient vertically) – Justin Mar 2 '14 at 2:08
• What is etc? That rule needs clarification. What about getInternetBellCurve+0? What does "hard-coding" imply? This rule is currently highly opinion based. – Doorknob Mar 2 '14 at 2:22
• @Doorknob The "etc" means "any other cheating method to avoid actually generating the curve by getting it already done from somewhere else". – Victor Stafusa Mar 2 '14 at 3:06
• – dmckee --- ex-moderator kitten Mar 3 '14 at 3:34

# Java

The method of generation is based off of the game Sugar, Sugar. In that game, sugar particles fall, traveling randomly left and right. In my program, Dust objects fall until they hit the ground. I collect data based on where they land; this is the bell curve:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import java.util.Stack;
import javax.imageio.ImageIO;

/**
*
* @author Quincunx
*/
public class ApproxBellCurve {

public static final int NUM_DUST = 10_000_000;
public static final int NUM_THREADS = Runtime.getRuntime().availableProcessors() - 1;
public static final int LOOP_LIMIT = NUM_DUST / (NUM_THREADS + 1);

public static void main(String[] args) {
BufferedImage output = new BufferedImage(2049, 2049, BufferedImage.TYPE_INT_RGB);

for (int i = 0; i < NUM_THREADS; i++) {
}

Dust d;
Random r = new Random();
for (int i = 0; i < LOOP_LIMIT + NUM_DUST - (LOOP_LIMIT * (NUM_THREADS + 1)); i++) {
d = new Dust(r);
while (!d.end) {
d.step();
}
if ((i & 1024) == 0) {
r = new Random();
}
}
try {
} catch (InterruptedException ex) {

}
}
int maxy = 0;
for (int x = 0; x < Dust.data.length; x++) {
maxy = Dust.data[x] > maxy ? Dust.data[x] : maxy;
}

for (int x = 0; x < Dust.data.length; x++) {
for (int y = 0; y < output.getHeight(); y++) {
output.setRGB(x, y, (y >= output.getHeight() - (Dust.data[x] * output.getHeight() / maxy)) ? 6591981 : 16777215);
}
}
try {
ImageIO.write(output, "png", new File("Filepath"));
} catch (IOException ex) {
ex.printStackTrace();
}
}

private static class Duster implements Runnable {

@Override
public void run() {
Dust d;
Random r = new Random();
for (int i = 0; i < LOOP_LIMIT; i++) {
d = new Dust(r);
while (!d.end) {
d.step();
}
if ((i & 1024) == 0) {
r = new Random();
}
}
}

}

private static class Dust {

public static int[] data = new int[2049];

static {
for (int i = 0; i < data.length; i++) {
data[i] = 0;
}
}

private int[] location;
private Random r;
public boolean end;

public Dust(Random rand) {
location = new int[]{1024, 0};
r = rand;
end = false;
}

public void step() {
if (end) {
return;
}
if (location[1] >= 1024) {
end = true;
synchronized (data) {
data[location[0]] += 1;
}
return;
}
location[1] += 1;
location[0] += r.nextInt(21) - 10;
}
}
}

Sample output (took 1 minute to create):

Because of the nature of the random number generation, it is possible to get an ArrayIndexOutOfBoundsException.

I used multithreading to speed up the process. The program determines the number of processors available and creates that many threads to run the simulations.

To obtain a finer image, NUM_DUST can be increased, but that would also lead to an increased risk of an ArrayIndexOutOfBoundsException.

Each thread creates a new Random after every 1024 Dust objects are simulated. When that code was removed, the image was more coarse.

rand.nextInt(21) - 10 is to widen the distribution. A change to rand.nextInt(3) - 1 would remove all chance of an ArrayIndexOutOfBoundsException.

## Mathematica

I decided it should not only look like a bell curve, it should look like a bell. So hey, let's spin it around the Z-axis and make it 3D.

And hey, while we're at it, it should sound like a bell as well.

So, each time you evaluate the code, it makes a nice pleasing church-bell BWONNGGG!

Manipulate[
RevolutionPlot3D[PDF[NormalDistribution[mu, sigma], x], {x, -4, 4},
PlotRange -> {Automatic, Automatic, Automatic},
BoxRatios -> {1, 1, 1}, PlotStyle -> {Orange, Yellow},
ImageSize -> {500, 500}], {{mu, 0, "mean"}, -3, 3,
Appearance -> "Labeled"}, {{sigma, 1.47, "standard deviation"}, .5,
2, Appearance -> "Labeled"}]
EmitSound[Sound[SoundNote[0, 3, "TubularBells", SoundVolume -> 1]]]

Here's what it looks like:

And here's a brief video of the bell ringing.

Everyone's code is so ... huge, and their approximations are ... less than deterministic. Just to remind everyone of the simplicity of the actual task, here's a nine-liner in Haskell:

import Data.List; import Data.Ratio
main = do
putStrLn "please choose the width and the maximum height:"
[w, mh] <- (map read.words) fmap getLine
let dist = map length $group$ sort $map length$ subsequences [2..w]
scale = ceiling $maximum dist % mh maxD = scale * ceiling (maximum dist % scale) putStrLn$ unlines $map (row dist) [maxD, maxD - scale .. 0] where row dist y = map (\x -> if x >= y then '*' else ' ') dist  OK... that wasn't exactly fast. Here's another go. Does it still count as not hard-coded? import Data.List; import Data.Ratio main = do putStrLn "please choose the width and the maximum height:" [w, mh] <- (map read.words) fmap getLine let dist = map ((w-1) choose) [0..(w-1)] scale = ceiling$ maximum dist % mh
maxD = scale * ceiling (maximum dist % scale)
putStrLn $unlines$ map (row dist) [maxD, maxD - scale .. 0]
where row dist y = map (\x -> if x >= y then '*' else ' ') dist

factorial x = product [1..x]
n choose k = factorial n div factorial k div factorial (n-k)

• You mean, "Them Java users' code is so huge." The other people's codes are rather small. Also, is there anything wrong with long code? I personally enjoy popularity-contests because I am free to make my code as long as I want to. – Justin Mar 2 '14 at 8:39
• @Quincunx Hmm... true. But I'm still shorter than the non-Java solutions :-) as for whether long code or short code should be preferred in this challenge, that's up to voters. I offer consciseness. – John Dvorak Mar 2 '14 at 8:45
• Yours is huge compared to mine. :P – Tim Seguine Mar 6 '14 at 22:26

# Ruby

Simulates the classic example of bell curves, dropping a ball down a grid full of pole thingies.

a = [0]*30
1000.times do
x = 15
49.times do
x += (rand(3) - 1)
end
a[[[x.to_i, 29].min, 0].max] += 1
end
until a.all?{|x| x == 0}
a.each_with_index{|x,i|
if x == 0
print ' '
else
print 'x'
a[i] -= 1
end
}
puts
end

Sample output:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxx
x xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxx xx
xxxxxxx xx
xxxxxxx xx
xxxxxx xx
xxxxxx xx
xxxxxx x
xxxxx  x
xxxxx  x
xxx  x
xxx  x
xxx  x
xxx  x
xxx  x
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
xxx
x x
x x
x x
x x
x
x
x

Oh, did I forget to mention it's upside down?

• +1 for hiding the most abnormal part of the curve below the fold. Genius! :) – Jonathan Van Matre Mar 3 '14 at 15:39

# Mathematica

Generating the sums of 5 random integers, each between 0 and 100, 20000 times.

Histogram[Plus @@@ RandomInteger[100, {20000, 5}]]

Here's the result for sums of 1,2, 3 numbers. As the number of integers to be summed increases, the curve approaches the bell shape.

When single random integers are generated, but not summed, the distribution should be fairly uniform, not favoring any value. The apparent anomaly for 100 may be the result of how Matheamtica bins data. (see https://mathematica.stackexchange.com/questions/43300/does-randominteger0-n-disfavor-n/43302#43302 )

Table[Histogram[Plus @@@ RandomInteger[100, {20000, k}]], {k, 1, 3}]

## Wolfram Alpha (tongue-in-cheek) 4 bytes:

Here is a practical application of the Central Limit Theorem. I even golfed it!

Type this into the input box on Wolfram Alpha:

3d20

Here is a link to the results. It interprets this input as 3 icosahedral dice, and decides you want a graph of the distribution function of the pip sums. It prints the following graph:

We can make the graph more and more bell shaped by adding more dice. I don't see this as taking my data from the internet since, if I could run the query engine for it on my home computer I would. Unfortunately, Wolfram Research doesn't provide it for download, though.

• You can get a better looking curve with more dice and die-faces: wolframalpha.com/input/?i=10d50 – Justin Mar 6 '14 at 20:33
• @Quincunx I wanted to keep it to 20 sided dice so that it could actually be done with physical dice that are fair. I think 20d20 looks pretty good though: wolframalpha.com/input/?i=20d20 – Tim Seguine Mar 6 '14 at 20:37
• @Quincunx Oh, I didn't know you could hotlink images here... I learn something new all the time – Tim Seguine Mar 6 '14 at 20:39
• @Quincunx I rolled back your edit, because the link went dead. – Tim Seguine Mar 6 '14 at 22:00

## Python

from pygame import*
t,u=640,400;init();d=display;s=d.set_mode((t,u))
s.fill(0xFFFFFF)
for x in range(t):
d.flip();event.get()
draw.line(s,u,(x,int(u-2**(-((x-t*.5)/120)**2)*u)),(x,u))

while time.wait(50):
for e in event.get():
if e.type==QUIT:exit()

This is actually a normal distribution, using 2 as the base of the exponent instead of e, and not dividing by ⎷2π, because without axes, it doesn't really matter if the area under the curve isn't exactly 1.

The last 3 lines just keep the window open until the user closes it manually.

## C#, WPF

Rough approximation with a hand-crafted Bézier curve. To make it more interesting: No use of Line, Path or similar, only Ellipse.

public MainWindow()
{
InitializeComponent();
// Requires a Canvas named Canvas in XAML file
DrawBellCurve(Canvas, 300, 300);
}

public static void DrawBellCurve(Canvas canvas, int width, int height)
{
Point p1 = new Point(0, height);
Point p2 = new Point(0.3 * width, 1 * height);
Point p3 = new Point(0.4 * width, 0.1 * height);
Point peak = new Point(width / 2, 0);
Point p3r = new Point(width - p3.X, p3.Y);
Point p2r = new Point(width - p2.X, p2.Y);
Point p1r = new Point(width, height);
List<Point> controlPoints = new List<Point> { p1, p2, p3, peak, p3r, p2r, p1r };

DrawBezierCurve(canvas, controlPoints, Color.FromRgb(50, 200, 25));
DrawPoints(canvas, controlPoints, 5, Color.FromRgb(80, 80, 220));
}

public static void DrawPoints(Canvas canvas, List<Point> points, double radius, Color color)
{
foreach (var p in points)
{
Ellipse ellipse = new Ellipse();
ellipse.SetValue(Canvas.LeftProperty, p.X - radius / 2);
ellipse.SetValue(Canvas.TopProperty, p.Y - radius / 2);
ellipse.Fill = new SolidColorBrush(color);
}
}

public static void DrawBezierCurve(Canvas canvas, List<Point> controlPoints, Color color)
{
var curvePoints = new List<Point>();
double tStep = 0.01;
for (double t = 0; t <= 1; t += tStep)
{
}

DrawPoints(canvas, curvePoints, 3, color);
}

public static Point GetBezierPoint(List<Point> controlPoints, double t)
{
// De Casteljau's algorithm
if (controlPoints.Count == 1)
{
return controlPoints[0];
}

var newControlPoints = new List<Point>();
for (int i = 0; i < controlPoints.Count - 1; i++)
{
Point p1 = controlPoints[i];
Point p2 = controlPoints[i + 1];
Point p = new Point(
t * p1.X + (1 - t) * p2.X,
t * p1.Y + (1 - t) * p2.Y);
}
return GetBezierPoint(newControlPoints, t);
}

# Java 8

It gets the height and the width from the user, chooses width random booleans and count how many are true, registering the counted frequency. Repeat this until some of the generated frequencies is enough to fill the height:

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Bell {
public static int[] bell(int width, int height) {
// I could have used Random.nextGaussian() method, but this way is more fun.
Random r = new Random();
int max = 0;
int[] freqs = new int[width];
for (int j = 0; max < height - 1; j++) {
int count = 0;
for (int i = 0; i < width; i++) {
if (r.nextBoolean()) count++;
}
freqs[count]++;
if (freqs[count] > max) max++;
}
return freqs;
}

public static BufferedImage drawBell(int[] ps, int width, int height) {
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int i = 0; i < width; i++) {
for (int j = 0; j < ps[i]; j++) {
bi.setRGB(i, height - j - 1, 0xFF00FFFF); // Cyan
}
for (int m = i - 1; m <= i + 1; m++) {
if (m < 0 || m >= width) continue;
for (int n = ps[i] - 1; n <= ps[i] + 1; n++) {
if (n < 0 || n >= height) continue;
bi.setRGB(m, height - n - 1, 0xFF0000FF); // Blue
}
}
for (int j = ps[i] + 1; j < height; j++) {
bi.setRGB(i, height - j - 1, 0xFFFFFFFF); // White
}
}
return bi;
}

public static void main(String[] args) {
String a = JOptionPane.showInputDialog("Give the width:");
String b = JOptionPane.showInputDialog("Give the height:");

int w, h;
try {
w = Integer.parseInt(a);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Invalid width.");
return;
}

try {
h = Integer.parseInt(b);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Invalid height.");
return;
}

int[] freqs = bell(w, h);
BufferedImage image = drawBell(freqs, w, h);

EventQueue.invokeLater(() -> {
JFrame j = new JFrame("Bell curve");
j.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
j.setResizable(false);
j.pack();
j.setVisible(true);
});
}

public static class SimpleSprite extends JComponent {
private final BufferedImage image;
private final Dimension dim;

public SimpleSprite(BufferedImage image) {
this.image = image;
this.dim = new Dimension(image.getWidth(), image.getHeight());
}

@Override
public Dimension getMinimumSize() {
return dim;
}

@Override
public Dimension getMaximumSize() {
return dim;
}

@Override
public Dimension getPreferredSize() {
return dim;
}

@Override
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, null);
}
}
}

Screenshot:

# Python and tkinter

I liked Doorknob's generation method and Victor's output (his generation is actually equivalent), so I decided to combine the two with tkinter!

from tkinter import *
import random

bins = [0]*201
for i in range(20000):
x = 0
for j in range(100):
if random.randint(0, 1):
x += 0.5
else:
x -= 0.5
bins[int(x)+100] += 1

master = Tk()

w = Canvas(master, width = 201, height=200)
w.pack()

for i in range(201):
w.create_line(i, 200, i, 200-bins[i]/10, fill="light blue")
w.create_line(i-1, 200-bins[i-1]/10, i, 200-bins[i]/10, fill="blue")

## GeoGebra

I don't know whether it is valid to use an application that is made to draw graphs, but if you enter this in the input, you get a Bell Curve:

f(x) = 3ℯ^(-(x - 1)²)

Or, if you want a customizable bell curve:

a = 0
b = 0
c = 0
d = 0
f(x) = a ℯ^((-(x - b)²) / 2 c²) + d

Then, make sure that you enable the sliders for the variables (if they are disabled, click on the circle next to the variable names). Then, you can set a value for them by sliding.

Image of the curve with the sliders (click to enlarge):

• Although the rules didn't technically require posting them, give us the visuals! We'd love to see the result. And is this program specifically designed to give accessibility options for disabled users? That is great! – Jonathan Van Matre Mar 3 '14 at 15:36
• @JonathanVanMatre: Done. – ProgramFOX Mar 3 '14 at 15:42
• Haha, I see now I made a parsing error when reading your text. Nice graph, though! – Jonathan Van Matre Mar 3 '14 at 16:30
• It's a cool program, fun to mess around with. – Tim Seguine Mar 6 '14 at 22:21

## Java

Throwing 6 dice in every possible combination approaches a 'normal distribution', which happens to be a bell curve.

public class Temp {
public static void main(String[] args) throws Exception {
int[] hist = new int[31];
for (int d1 = 0; d1 < 6; d1++)
for (int d2 = 0; d2 < 6; d2++)
for (int d3 = 0; d3 < 6; d3++)
for (int d4 = 0; d4 < 6; d4++)
for (int d5 = 0; d5 < 6; d5++)
for (int d6 = 0; d6 < 6; d6++)
hist[d1 + d2 + d3 + d4 + d5 + d6]++;
for (int y = 4104; y >= 0; y -= 228)
for (int x = 0; x < 32; x++)
System.out.print(x == 31? '\n' : hist[x] <= y? '\u3000' : (char)('\u2580' + Math.min(Math.ceil((hist[x] - y) / 28.5), 8)));
}
}

Some Unicode tricks make the output smoother:

　　　　　　　　　　　　　　▅█▅
▂███▂
█████
▁█████▁
███████
███████
▅███████▅
█████████
█████████
▇█████████▇
███████████
▃███████████▃
█████████████
▁█████████████▁
███████████████
▃███████████████▃
█████████████████
▁███████████████████▁
▁▁▁▂▅█████████████████████▅▂▁▁▁

# C

Based on random walks

#include <stdio.h>
#include <stdlib.h>

#define X_SIZE 40
#define Y_SIZE 15
#define SMOOTH 100

int main(void)
{
int i,j;
int T[X_SIZE*2];
int w;

for (i=0; i<X_SIZE*2; i++) T[i]=0;

// random walks
do  {
w=X_SIZE;
for (i=0;i<X_SIZE;i++)
w+=rand()%2?1:-1;
T[w]++;
}
while (T[w]<Y_SIZE*SMOOTH);

// display
for (j=Y_SIZE; j>=0; j--)
{
for (i=0; i<X_SIZE*2; i+=2)
printf("%c", (T[i]>j*SMOOTH)?'#':' ');
printf("\n");
}

}

Output :

               ###
###
#####
#####
#####
#######
#######
#########
#########
#########
###########
###########
#############
###############
#######################

# J

load 'plot'
plot (3+i.58)([:+/=)"0 1]3+([:+/?,?,?)"0]1e6#20

Not very creative, but still fun!

Throws three twenty sided dice 1000000 times, summing the result each time. Then to get it in a plot-ready format, we take the array [3..60] and replace each element by the number of times it occures in the random sums.

plot then creates a PDF:

# Octave

c=79;
x=ifft(fft([ones(1,10) zeros(1,c-10)]).^8);
y=(1:c)*0+' ';
for l=-24:-1,
for k=1:c,
if -real(x(k))<l*2e5,
y(k)='*';
end
end
printf([char(y) '\n'])
end

Try it online!

Instead of directly simulating coin flips, this just uses the observation that the pdf of a sum of random variables is the convolution of the pdfs of each of the random variables. An efficient way to do circular convolution is to take the inverse fourier transform of the element-wise product of the fourier transforms of the pdfs of each of the random variables. For the purpose of this problem (not true in general) circular convolution can stand in for linear convolution.

As an example, given the following pdf of a uniform random variable.

                           **********
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********

The above random variable summed with itself

                                *
***
***
*****
*******
*********
***********
***********
*************
***************
*****************
*******************

The uniform random variable summed with itself 7 times.

                                *
*******
***********
*************
***************
*****************
*******************
***********************
*************************
***************************
*******************************
*************************************

## Python (Box-Muller) - 6 lines

This short code uses the Box-Muller transform for simulating a normally distributed variable:

from math import cos, log, pi
from random import random

f = open("normDist.txt",'w')
for i in xrange(10**6):
f.write(str(cos(2*pi*random())*(-2*log(random()))**.5)+'\n')
f.close()

You can plug the values on GNUPLOT or use this script

f=open("normDist.txt",'r')

v = [0 for i in xrange(51)]
for i in f:
v[int(float(i)*10) if float(i)<5 and float(i)>-5 else 0]+=1

m=0
for i in v:
if i>m:
m=i
for i in v[3:]:
for j in xrange(int(70.*i/m)):
print '*',
print

to produce something like this:

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* * *
* *
* *
* *
* *
* *
* *
* * *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

• Not properly oriented according to the question. Should be rotated 90 degrees. – Tim Seguine Mar 6 '14 at 22:17

# awk

#!/ust/bin/awk -f
BEGIN {
#
# do WALKS random walks with OOPS times left or right per walk
#
WALKS=100000
OOPS=39
#
# output will be H lines
# the line width will be 2*OOPS+1
#
H=23
#
# shake awk's pseudorandom generator
#
srand()
#
# do the walks
#
for(i=0;i<WALKS;i++) {
x=0
for(j=0;j<OOPS;j++) rand()<0.5?--x:++x
X[x]++
}
#
# scan for maximum height
#
M=0
for(x=-OOPS;x<=OOPS;x++) {
if(X[x]>M) M=X[x]
}
#
# "draw" into S[x]: strings of H*X[x]/M "*"s
#
for(x=-OOPS;x<=OOPS;x++) {
s=sprintf("%*s",H*X[x]/M," ")
gsub(/./,"*",s)
S[x]=s
}
#
# print S[x] transposed
#
for(y=H;y>0;y--) {
for(x=-OOPS;x<=OOPS;x++) {
if(c=substr(S[x],y,1)) printf c
else printf " "
}
print ""
}
}

Output:

                                        *
* *
* *
* * * *
* * * *
* * * *
* * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * *
*******************************************************************************

# Stax, 20 bytes

⌐∞¶J♠fr"▐cS╥aÆ~a╚∩┌I

Run and debug it

This isn't code-golf but I still want to give Stax a try. Calculates frequency of sum of dices rolled 6 times. Note there are no support for random numbers in Stax.

ASCII equivalent:

6R6|^{|+m{o:G{AJ/'**mMrm

Output:

               *
***
***
***
*****
*****
*****
*****
*****
*******
*******
*******
*******
*******
*******
*********
*********
*********
*********
*********
*********
***********
***********
***********
***********
***********
***********
*************
*************
*************
*************
*************
***************
***************
***************
***************
*****************
*****************
*****************
*******************
*******************
*********************
***********************

# Charcoal

≔⟦Ｘφ±⁹⟧θＦ⁹⁹≔Ｅ⊞Ｏθ⁰⁺κ§θ⊖λθ↑θ

Verbose version:

Assign([Power(1000, Negate(9))], q);
for (99) Assign(Map(PushOperator(q, 0), Plus(k, AtIndex(q, Decremented(l)))), q);
Print(:Up, q);

Try it online! Output:

             ||
||
||||
||||
||||
||||
||||||
||||||
||||||
||||||
||||||
||||||||
||||||||
||||||||
||||||||
||||||||
||||||||
||||||||||
||||||||||
||||||||||
||||||||||
||||||||||
||||||||||
||||||||||||
||||||||||||
||||||||||||
||||||||||||
||||||||||||
||||||||||||
||||||||||||||
||||||||||||||
||||||||||||||
||||||||||||||
||||||||||||||
||||||||||||||||
||||||||||||||||
||||||||||||||||
||||||||||||||||
||||||||||||||||
||||||||||||||||||
||||||||||||||||||
||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||||
||||||||||||||||||||||
||||||||||||||||||||||||
||||||||||||||||||||||||||
||||||||||||||||||||||||||||


text:
# Combinations with repitions when there's limits on how many repitions

1. Sep 7, 2014

### fleazo

Note, this is not a homework problem, as I'm not even in college. I just had a quick question.

I know the formulas to do things such as "How many ways could you choose 5 balls from a tub of yellow, red, and blue colored balls?" (where you envision in this case, a tub where there's more than 5 yellow, more than 5 red, and more than 5 blue)

But what if you have a situation where say, there's more than 5 red and more than 5 blue, but maybe there's only 3 yellow? So there's a "limit" on one of your repetition groups. When you run in to situations like this, do you have to break things down in to disjoint sets?

2. Sep 7, 2014

### Stephen Tashi

Perhaps if you write out an example of such a formula, someone can tell you how to modify it to work in the case when there are only 3 yellow balls.

3. Sep 7, 2014

### fleazo

Sure. So if the task is to determine how many colored 5-ball subsets are possible using a tub of yellow, red, and blue colored balls, this would be (using the formula on this pdf http://www.csee.umbc.edu/~stephens/203/PDF/6-5.pdf):

C(5 + (3-1), 5) = C(7,5) = 7!/(5!(7-5)!) = 7!/(5!2!) = 7*6/2! = 7*3 = 21

Last edited: Sep 7, 2014


text:
# Demonstration and application of diffusive and ballistic wave propagation for drone-to-ground and drone-to-drone wireless communications

#### ByAUTHOR

Sep 8, 2020

Although propagation at high altitudes have been studied for aircraft purposes, this is the first ever comprehensive UAV data set of propagation at altitude under 400′ (see prior art discussion below). Propagation modelling for wireless is a vast field, but existing models are formulated to apply to at or near ground level receivers (Fig. 5). Therefore, it should be no surprise that existing models do not apply. Nonetheless, we can discuss the deviation from existing models to elucidate some of the features we have found in wave propagation that should be included in more sophisticated models in the future.

### Flight A

The first flight clearly has some distance to transmitter dependence that is not Friis like, i.e. there is some scatter. Existing models treat scattering off the earth and building as a separate path from transmitter (TX, base station) to RX (airborne receiver). If the Earth is treated as a perfect mirror, it is called the 2-ray or “plane earth” model. (See fig. 2.6 of Ref.12.) If the Earth is treated as a rough scatterer, there is the Sarkar model (based on Sommerfeld 100 years ago)10 and empirical models called the Hata-COST231 model2,3. We discuss how they compare to our data below.

### Comparison to ballistic (scatter free) propagation model

The predictions of a ballistic (scatter free) model would be the following:

This assumes the altitude is much less than the distance to the transmitter, so that the horizontal distance d is approximately equal to the total distance from TX to RX (see Fig. 2). In our data, we observe altitude independence, which indicates minimal scatter. However, the path loss dependence on distance is not 20 log d, which we discuss next.

The location of the call tower is not known. Therefore the distance is not known, and the power law is not known. By adjusting the distance, a variety of power laws can be fitted, from 20 to 50 dB/decade of distance, but these are not quantitative since the distance is unknown with enough precision.Therefore, the actual power law is not really known. That being said, there IS a strong distance dependence, and NO altitude dependence in this case, which is opposite the mountainous case (flight B).

### Comparison to the 2 ray model

The 2-ray model assumes ballistic (scatter free) propagation from TX to RX along one path, and a perfect specular reflection from the ground (modeling the Earth as a perfect conductor i.e. mirror) as a second path, and does not take into account any other scattering or multi path, e.g. no diffusion or diffraction is modeled in the 2-ray model (see fig. 2.6 of ref.12).

The predictions of the 2-ray model are given by:

begin{aligned} {P_rover P_t} = G_{TX}G_{RX}left( {h_{TX}h_{RX}over d^2}right) ^2 end{aligned}

(2)

where (h_{TX}), (h_{RX}) are the heights of the transmit and receive antennas, respectively, and G the gains of the antennas. The assumptions of the 2-ray model are that the height of the receiver (h_{RX}) and transmitter (h_{TX}) are much lower that the distance d. Since the distance is over 1 km and the max height is 100 m this is reasonable. The interesting point about the data for flight A is that the RSSI is independent of the altitude over a large range of altitudes, from 100 to 400 ft. (30–120 m) (100–400 lambda). This is clearly not what is predicted by the 2-ray model, which predicts an (h_{RX}^2) dependence on signal strength.

### Comparison to the Sarkar model

The Sarkar model10 predicts a 30 dB/decade decay (but only in the far-field, see below), for altitudes close to the ground. Our data shows a power law decay so is consistent in this sense. There is no comprehensive, analytical prediction for higher altitudes in this model in the far field. However, recent simulation work has addressed the near field, which we discuss in more detail below.

### Comparison to the Hata-COST231 model

The Hata-COST231 model is purely an empirical model. Through many iterations and refinements, it has been codified in a literal industry standard as ITU 20193. However, the model, being empirical, has limitations, which are of course based on the input data range in the first place! In their case, they did not have drone technology. The model limits (h_{RX}) to 1 to 10 (lambda). We are at well over 100 (lambda). Nonetheless, it is interesting to extrapolate, discuss, and compare.

Hata initial observed a “height gain” with antenna height, but only data up to 10 m in (h_{RX}) was considered. However, there is no empirical prediction above this altitude. (We recently studied this in detail at low altitude, in a sister paper13). The general concept is that, as the receiver is raised, scattering becomes less prevalent. Extrapolation of Hata would give a huge dependence on altitude, which we clearly do not see. Therefore, Hata model does not really apply to flight A, nor does it give predictions even if extrapolated to our case. A similar conclusion can be drawn about the most recent industry standard COST231 which is based also on Hata’s work3.

### Near vs. far field and “breakpoint”

In all of the scatting models above, the predictions implicitly assume that the radiation is in the far field. The far field is traditionally assumed to begin at distances larger than (2l^2/lambda), where l is the maximum antenna dimension. However, in the context of scattering off the earth, the situation is not quite so straightforward. Sarkar has shown14,15,16 that for distances closer to the transmitter than (R_{breakpoint}), the fields are actually near field:

begin{aligned} R_{breakpoint}=4 h_{TX} h_{RX}/lambda end{aligned}

(3)

A common feature of all models is that they predict power law like behavior for the distance dependence for distances larger than a “breakpoint”, where the fields are already in the far-field region.

For distances closer to the transmitter than the breakpoint, since the fields are in the near-field region, there are no analytical predictions for propagation loss, per se. The reason is that, in the near field, the TX and RX coupling depends on more than just the distance and polar angle between the two. Near-field effects are not possible to predict analytically for general cases, and depend strongly on specific geometries. The exact definition of far-field vs. near field has been extensively discussed in17.

For most uses cases, where the receiver is near the ground, the breakpoint is a few hundred meters, meaning propagation studies and actual deployed systems will be beyond the breakpoint within the cell for a given tower. The case of drones is very different, where the altitude is high. For example, in our measurements here, the breakpoint is roughly 10 km assuming (h_{TX}=1 0) m, since our drone flies up to 100 m. Therefore, our receiver (and by extension the use case of drones in general) is closer to the cell tower than this breakpoint. What that means is that all of the propagation models fail to be applicable to our data, and for drones in general. There is no propagation model for drone-to-ground signal propagation.

The implications of this are that our data (and drones in general) are not covered by the traditional models and comparison must be made to near-field simulations. We turn next to comparison with existing near-field simulations.

### Comparison to near-field simulations

In the near field, Sarkar has simulated the path loss for the 2-ray model as well as his own model, for a few different specific conditions. What is characteristic of the specific cases in the near field covered (i.e. simulated14,15,16 and recently measured18) so far are two characteristics:

• Drastic oscillations of signal strength with distance

• Very strong, counter-intuitive dependence on transmitter height (e.g. higher transmit gives lower signal strength)19.

High altitude receivers were not studied, but in one simulation study14,15,16, a 500 m transmitter gave actually lower signal strength than a 100 or 10 m transmitter at distances closer than the breakpoint.

Again, although we are in the near field according to this analysis, we do not see strong oscillations in signal strength with distance and we do not see strong altitude dependence. This also contradicts the (very few) simulations in the published literature on near-field propagation models.

### Summary flight A

Our flight A shows some very clear signs that scattering is minimal and that the characteristics are closest to that of ballistic nature. A detailed consideration of all of the existing models (including physics based models as well as purely empirical models) fail to give predictions for this altitude regime because they are all formulated for ground level receivers. In specific cases where trends can be predicted based existing models, the data we measure fails to obey these trends. Thus, not all is solved. There remain some enigmas which are not currently understood.

Therefore, this data we have presented here is significant and new. At this point we can only summarize the qualitative features of the propagation that will be used for future more comprehensive models. In addition, we point out that the data is new and significant, so is the method. In fact, our invention of this method should enable new models for the drone-to-ground propagation case in the future. Any new models will need to be checked and our method is a new, novel, and the best way to do that.

### Flight B

Flight B shows a very strong dependence on altitude, in contrast to flight A.

### Power law

We are unable to extract a meaningful power law. For the 100′, 200′ data there is clearly a change of about 25 dB over 500 m (200′) or 20 dB over 500 m (100′), but the high altitude date interestingly does not show any clear distance dependence. The 300′ is a band switch event as per our interpretation, where the carrier temporarily used a different band. We have since improved our software (http://www.gitlab.com/pjbca/4GUAV) to record the band at each flight but it was not recorded on this flight.

### Comparison to Hata, Sarka, 2 ray model

All three models predict an altitude dependence, which is consistent with our data, and this is also consistent with our interpretation that the flight is in the diffusive regime. However, none of those models take mountainous terrain into account, therefore our interpretation is an extension of the concepts of diffuse , multi path scattering to mountainous terrain. The 10 dB gain per 100′ of altitude (100 lambda) is empirical and we await more quantitative modeling based on terrain to explain our data.

### Flight C

Flight B shows little dependence on altitude OR position, in contrast to flight A. However, it shows strong wave like (interference) properties. This seems to be most consistent with the near field characteristics discussed above.

### Single scattering vs. diffusion

The two extremes of wave propagation regimes [ballistic and diffuse (Fig. 1)] are illustrated through two different sets of experimental data (flights A, B) in this work. However, the actual experiments are likely a combination of both. The main conclusion of this paper is that both can contribute to the propagation characteristics and both regimes can be realized in the physical world, not just in abstract mathematical manipulations, and that the regime that dominates depends on the local scattering environment.

There is one more in-between case this is important to consider, which is the result of interference of the direct wave with those scattered at most once (or a small number of times) off of a smooth ground. This is indeed one of the most well-known models in wireless signal propagation theory, and is called the “two ray” model or the “plane earth” model. In the two-ray model, the direct path (ray) from transmitter to receiver interferes with the ray reflected specularly off the surface of the earth, which is model as a perfect conductor. The earth is assumed to be smooth in this model12. In this model, the propagation loss is predicted to be 40 dB/decade, which is not what we observe. Therefore, the experimental data we present is not consistent with a model which is the result of interference of the direct wave with those scattered at most once (or a small number of times). For this reason, we find the diffusive interpretation more appropriate. An extensive discussion of scattering off of multiple sites with many lines (or rays) from transmitter to receiver has been developed by Sarkar10. It therefore seems that the description as diffusive is the most appropriate interpretation of the experimental data, although at present there is no diffusion based model that can predict or even postdict our experimental data. We would like to again emphasize that this work is primarily a data driven exercise. While the data contradict existing models, there is no model at present that explains all the data we present herein. In our opinion, models are fine as exercises in thought. However, experimental data is what makes up the real world, so models must be subservient to data, and not the other way around. This is especially true in engineering fields such as wireless communications, where system performance and economic impact are ultimately beholden to real system performance data and physical reality, not mathematical models thereof.

### Scattering vs. absorption

In addition to scattering, electromagnetic fields also experience absorption. However, one must be careful when one uses the word absorption. One meaning is the complete loss of the signal upon encountering an obstacle. However, this assumes the obstacle blocking the path reflects the wave and the wave never makes it to the receiver. This is in fact not what is assumed in the Hata-COST321 and subsequent models. Those models explicitly allow for propagation from transmitter to the receiver even if there is no direct line of site. In that case, there is propagation but only after scattering off of many scattering sites (buildings, trees, etc). So this definition of absorption is equivalent to the Hata-COST321 model and its subsequent refinements. The other definition of absorption is where energy is lost due to resistive currents in scattering centers, like a black body absorbing rather then reflecting light. (We recently demonstrated this regime by perfectly impedance matching a material to free space to get of order unity absorption of RF20, but this is not normally the case in the physical world we live in.) Because this is not typically the case in the RF regime, it is unlikely to be a significant contributor to signal loss, and has not been modeled in the industry standard Hata-COST321 and refinement models, and is not considered as a significant effect here.

### Summary of discussion

None of the existing models were developed for drone-to-ground communications, and therefore this data (and method) is a fundamentally new area of research that we are opening up. We have shown this through detailed analysis of each model, and each flight.

Although the models are not developed yet, we have shown three significant aspects that appear in physical reality: Ballistic wave propagation, diffusive wave propagation, and strong interference of only a few paths. This lays the experimental and intellectual foundation for the field of drone-to-ground propagation models and our method can be used to verify it. Drone-to-drone communication is also new frontier that this work enables.


text:
1

IIT-JEE 1999 Screening

MCQ (More than One Correct Answer)
The coordinates of a particle moving in a plane are given by x(t) = a cos(pt) and y(t) = b sin(pt) where a, b (< a) and p are positive constants of approprite dimensions. Then
A
the path of the particle is an ellipse
B
the velocity and acceleration of the particle are normal to each other at t = ${\pi \over {2p}}$
C
the acceleration of the particle is always directed towards a focus
D
the distance traveled by the particle in time interval t = 0 to t = ${\pi \over {2p}}$ is a
2

IIT-JEE 1993

MCQ (More than One Correct Answer)
A particle of mass m moves on the x-axis as follows: it starts from rest at t = 0 from the point x = 0, and come to rest at t = 1 at the point x = 1. NO other information is available about its motion at intermediate times ( 0 < t < 1 ). If $\alpha$ denotes the instantaneous acceleration of the particle, then:
A
$\alpha$ cannot remain positive for all t in the interval $0 \le t \le 1$
B
$\left| \alpha \right|$ cannot exceed 2 at any point in its path.
C
$\left| \alpha \right|$ must be $\ge$ 4 at some point or points in its path.
D
$\alpha$ must be change sign during the motion, but no other assertion can be made with the information given.
3

IIT-JEE 1982

MCQ (More than One Correct Answer)
A particle is moving eastwards with a velocity of 5 m/s. In 10s the velocity changes to 5 m/s northwards. The average acceleration in this time is
A
zero
B
${1 \over {\sqrt 2 }}m/{s^2}$ towards north-west
C
${1 \over {\sqrt 2 }}m/{s^2}$ towards north-east
D
${1 \over 2}m/{s^2}$ towards north

On those following papers in MCQ (Multiple Correct Answer)
Number in Brackets after Paper Indicates No. of Questions
JEE Advanced 2020 Paper 2 Offline (1)
keyboard_arrow_right
IIT-JEE 1999 Screening (1)
keyboard_arrow_right
IIT-JEE 1993 (1)
keyboard_arrow_right
IIT-JEE 1982 (1)
keyboard_arrow_right


text:
# Absolute Value: Equations & Inequalities

## Big Picture

Absolute value equations and inequalities are very similar to linear equations and inequalities. In both cases, the goal is to solve for a variable. However, unlike linear equations and linear inequalities, the variable is not a specific number. Instead, the variable represents a specific distance from zero. When solving absolute value equations and inequalities, two options need to be considered: when the expression inside the absolute value is not negative and when the expression inside the absolute value is negative.

## Key Terms

Absolute Value: The absolute value of a number is the distance of that number from 0.

## Absolute Value Equations

An absolute value equation is an equation that contains an absolute value expression

Example: $$|ax+b| = c, \text{ where } c ≥ 0$$

To solve an absolute value equation, split it into two equations and solve individually.

Example: $$|ax+b| = c$$, where $$c ≥ 0$$

• Split into two equations: $$ax+b = c$$ and $$ax+b = -c$$
• Solve: $$x = \frac{c-b}{a}$$ and $$x = \frac{c+b}{a}$$ are both solutions

Do not start to solve until the absolute value equation is splitinto two equations.

Example: $$|x-4| = 5$$

$$x-4 = 5$$
$$x = 9$$
and
$$x-4 = -5$$
$$x = -1$$

Plotted on the number line:

• The two solutions are both 5 units away from 4

## Absolute Value Inequalities

An absolute value inequality is an inequality that contains an absolute value expression

To solve an absolute value inequality, split into two inequalities, and solve individually.

Example: $$|ax + b| < c$$, where $$c ≥ 0$$

• Split into two inequalities: $$ax + b > -c$$ and $$ax + b < c$$ (can be rewritten as $$-c < ax + b < c$$)
• Absolute value inequalities can be rewritten as compound inequalities with “and”
• Solve: $$x > - \frac{c + b}{a}$$ and $$x < \frac{c - b}{a}$$ (can be rewritten as $$- \frac{c + b}{a} < x < \frac{c - b}{a}$$)

Example: $$|ax + b| > c$$, where $$c ≥ 0$$

• Split into two inequalities: $$ax + b < -c \text{ or } ax + b > c$$
• Absolute value inequalities can be rewritten as compound inequalities with “or”
• Solve:$$x < - \frac{c + b}{a}$$ or $$x > \frac{c - b}{a}$$

If the sign is less thAN, then it’s a compound inequality with AND. If the sign is greatER than, then it’s a compound equality with OR. Remember: less thAND, greatOR.

Example: $$|x + 12| > 2$$

$$x + 12 < -2$$
$$x < -14$$
or
$$x + 12 > 2$$
$$x > -10$$

Example: $$|4x + 5| ≤ 13$$

$$4x + 5 ≥ -13$$
$$4x ≥ -18$$
$$x ≥ - \frac{9}{2}$$
and
$$4x + 5 ≤ 13$$
$$4x ≤ 8$$
$$x ≤ 2$$


text:
# How do you solve and write the following in interval notation: x^2 + 15x > -50?

Dec 26, 2017

$x < - 10 \mathmr{and} x > - 5$

#### Explanation:

${x}^{2} + 15 x > - 50 \iff {x}^{2} + 15 x + 50 > 0$

Let $f \left(x\right) = {x}^{2} + 15 x + 50 = \left(x + 5\right) \left(x + 10\right)$

We can easily see that if $f \left(x\right) = 0 \implies x = - 5 \mathmr{and} x = - 10$
We can also see that 'a' is positive (the form of $y = a {x}^{2} + b x + c$)

This is the x axis:

---------------------0------------------>x

We put the (-5,0) and (-10,0):

---------(-10)---------(-5)-----------0-------->x

'a' is positive, ($\textcolor{red}{+} {x}^{2} + 15 x + 50$), so it is a "smiling parabola":

$\textcolor{b l u e}{- - -} \left(- 10\right) - - - \left(- 5\right) \textcolor{b l u e}{- - - 0 - - \to}$x

So the answer is $x < - 10 \mathmr{and} x > - 5$


text:
### Theory:

Measurement in olden days
In ancient times, people noticed some natural events that occurred regularly after a definite time interval.
Example:
Sunrise and sunset and occurrence of the full moon.

In olden days, people calculated the time of the day with the help of shadows. They also used different time measuring devices with different designs in various parts of the world. Sundial, sand clock and water clocks were the time measuring devices that were commonly used in olden days.

These devices were used before the introduction of pendulum clocks. But nowadays, clocks were used to measure the time intervals within a day.

Quartz clocks
Quartz clocks, consisting of an electric circuit with one or more cells, gives more accurate time than any other clocks. The inside view of quartz clock is shown in the picture.

Simple pendulum
The working of clocks are based on the concept of periodic motion. An important example of periodic motion is a simple pendulum.

It consists of a metallic ball or a stone piece, a thread and a rigid stand. The metallic ball is generally called as the bob of the pendulum. Initially, in the mean position, the bob is at rest. The bob begins to move to and fro when the pendulum is released from one side, which is an example of a periodic or an oscillatory motion.

Working

The bob starts from its mean position $$O$$ goes to one end $$A$$, then moves to the other end $$B$$ and back to the point $$O$$ in the middle. This to and fro motion is said to have completed one oscillation. The word 'time period' is the time taken by the pendulum to complete one oscillation.

Steps to measure the time period
1. Take a thread or a string of length $$1$$ $$metre$$ and fix it to the bob of the pendulum.
2. Make the bob of the pendulum to be at rest in its mean position. This mean position of the bob is marked on the floor or wall.
3. Now, hold the bob gently and move it to one side, to set it in motion. Note that the string should be in stretched position not in loose condition.
4. The bob is now released and not pushed from its displaced position.
5. A stopwatch, table clock or a wristwatch can be used to measure the time period of the pendulum. The time is noted when the bob is at its mean position or instead its extreme positions.
6. When the pendulum completes $$10$$ oscillations, the time is noted.
7. This process is repeated again and the observations are made in the given table format.
Length of the string = $$1$$ $$metre$$

 S.No Time taken for $$10$$ oscillations ($$s$$) Time period ($$s$$) 1. $$20$$ $$2$$ 2. $$40$$ $$4$$ 3. $$60$$ $$6$$

Calculation of time period of a pendulum

The time period or the time taken for one complete oscillation is calculated by dividing the $$10$$ oscillations by $$10$$. It is given as,

$$\text{Time period} = \frac{\text{Time taken for 10 oscillation}}{\text{10 oscillations}}$$

From this, it is observed that the time period of the pendulum is the same and it does not get affected by any change in the initial displacement.

Important!
"Time period of a pendulum is constant".
This discovery was first made by a famous scientist Galileo Galilei. He noticed a lamp suspended from the ceiling with a chain, while sitting in church. It was moving slowly from one side to the other completing one oscillation. He also found the pulse beat the same number of times in an interval. On seeing this, he experimented various pendulums to verify his observation. He observed that the pendulum takes the same time to complete one oscillation which led to the development of pendulum clocks. The refinements of the pendulum clocks were the winding clocks and wristwatches.


text:
# Regular polygons

In other words, a regular polygon is a polygon whose vertices all lie on one circle while its sides all touch a concentric circle. If the polygon is convex and has $n$ vertices, it is called an $n$-gon, and is denoted by $\{n\}$. If it is non-convex and its $n$ sides surround its centre $d$ times, it is called a star polygon, or a star $n$-gon of density $d$, and is denoted by $\{n/d\}$. For instance, the pentagram is $\{5/2\}$.


text:
# Finite level super classes over ZFC

My question is: "Is it possible to have a sound and rigorous legitimation of the following construction ?". This construction is:

0/ Let ZFC be the usuel set theory, and let us add to the language capital latin letters as names for classes.Let V={x/x=x} be the usual universal class (that is a proper class, directly by foundation, or by Russel's paradox and separation) and P(x)={y/y⊆x} be the usual Power set fonction.

1/ Let us now extend the domain of the power set fonction to all classes, so that P(A)={y/y⊆A} We have that P(A)is a set if A is a set by the power set axiom;but as F(x)={x} in an injection from A into P(A), we also hav}e that P(A) must be a proper class if A is such. So that P(A) is a set iff A is a set. The universal class V being transitive and well-founded, we have that V={x/x⊆V}={x/x⊆V}=P(V); So that: V=P(0,V)=P(V)=P(1,V)=P(P(n,V))=P(n+1,V). Let us also remark that for every class A, we have A⊆V, so tat V is the greater possible class.

2/ Now, let us recursively build the following Q construction: Q(0,V)=P(V)=V{x/x⊆V}=V and Q(n+1,V)={A/(B∈A-->B∈Q(n,V)}={A/A Q(n,V)} Moreover let the collection Q be the union of the collections Q(n,V): Q=∪〈n∈N〉Q(n,V);

By induction, we have Q(n,V)⊆Q(n+1,V). We already know that the elements of Q(0,V)=V are axactly sets, and that the elements of Q(1,V)={A/A⊆V} are exactly usual classes. So that Q(0,V)⊆Q(1,V); moreover, the elements of the difference Q(1,V)/Q(0,V) are exactly usual proper classes and V is such an element. We also have Q(n,V)⊆Q(n+1,V)-->Q(n+1,V)⊆Q(n+2,V) because A∈Q(n+1,V)<-->(∀B∈A(B∈Q(n,V)) and by hypothesis B∈Q(n,V)-->B∈Q(n+1,V), so that A∈Q(n+2,V).

It is now natural to name sets as level 0 super-classes, proper classes as level 1 super-classes, and more generally elements of the difference Q(n+1,V)/Q(n,V) as level (n+1) super-classes, and also members of Q as super-classes.

We already know that Q(0,V) and Q(1,V)/Q(0,V) are non-void. more generally we have that Q(n+1,V)/Q(n,V) is non-void. To see this, let A and B be two level n super-classes and consider R(A,B)={D∈Q(n,V)/A⊆D⊆B}. It is clear that R(A,B) is a level (n+1) super-class that is non-void as soon as A⊆B. Particularly R(∅,A)={B/B⊆A} and R(A,A)={A} are such level (n+1) super-classes. So, we have by induction that Q(n,V)⊆Q(n+1,V) and also that Q(n,V)∈Q(n+1,V); for every level n, Q(n,V) is the greater element of Q(n+1,V) for inclusion.

3/ We also obtain that the difference of two super-classes (of level n) is a super-class (of level n), and that the union (the intersection) of a finite (of any family, but what can be the collection of indices ?) family of super-classes (of level n) is a super-class (of level n; of level ≤n).

Gérard Lang

-
Please edit this question to add paragraphs and MathJax. It is almost unreadable in its current form. –  Michael Greinecker Sep 30 '12 at 15:03
What Michael said, sans "almost". –  Asaf Karagila Sep 30 '12 at 15:16
I agree that the current form of the text is (almost or without almost) unreadable. This was not the case of my original text, that had many paragraphs and was structured (notably by 0/, 1/,2/ and 3/) so as to be as readable as possible ! Gérard Lang –  Gérard Lang Sep 30 '12 at 15:55
You may want to get yourself better acquainted with the way the site parses the text. For example a single linebreak is ignored, much like in LaTeX, so if you wish to start a new paragraph you should use a double linebreak. Similarly, there is a nice support of basic LaTeX commands via $ symbols (and $$ for centered display math), but you need to sometimes add spaces, or use \lbrace instead of \{, to avoid conflicts with the parser. – Asaf Karagila Sep 30 '12 at 16:08 ## 1 Answer One of the easiest ways to justify your construction is this: Take an inaccessible cardinal$\kappa$. Then$V_\kappa$, the$\kappa$'th iterate of the powerset operation starting from the empty set and taking unions at limit steps, is a model of ZFC. Now consider a two-sorted structure with the underlying sets$V_\kappa$and$V_{\kappa+\omega}\setminus V_\kappa$. The elements of$V_\kappa$are your "sets", the elements of$V_{\kappa+\omega}\setminus V_\kappa$are the superclasses. If you want to be able to talk about the different levels, add unary predicates for the individual levels, or even a binary predicate that is satisfied by a superclass$C$and$n$if$C$is a superclass of the$n\$-th level.

Does this help?

-
Yes,thank you,this helps me very much, even if this wis not was I was dreaming of ! In fact, I hoped that there was some possible comparison with Ackermann's set theory with foundation as developped by Azriel Lévy, and further by Muller. –  Gérard Lang Sep 30 '12 at 16:06
After reflexion, it is clear that your model satisfies all the specifications of my construction. So maybe it fulfills most of my dream; anyway, I credit your answer, even if I would like some more comments. Gérard Lang –  Gérard Lang Oct 2 '12 at 15:47


text:
138 Answered Questions for the topic High School: Math

High School: Math Math Algebra 1 Statistics

06/28/17

You have been saving the same amount of money every week. If you have been saving five dollars more than a number for five weeks less than that number, how much money have you saved so far? Explain... more
High School: Math Math Algebra 1 Area Of Rectangle

06/28/17

06/24/17

#### Worded indicies problem- Find temperature of liquid

When a liquid is placed into a refrigerator, its temperature T°C at a time t minutes is given by the formula T=T*10^-kt The temperature is initially 100°C and drops to 40°C in 5 minutes. Find... more
High School: Math Math Algebra 1 Algebra

06/15/17

#### Wally blew 1/4 of his income last week on video games and 1/8 on fast foo. If he spent a combined $84 on these things, what was his income last week? Translate the word p into an equation then solve. Please help!! High School: Math Math Algebra 1 Algebra 06/15/17 #### Gisele has$5.90 in quarters and nickels. If she has 16 more nickels than quarters, how many quarters does she have?

High School: Math Math Algebra 1 Algebra

06/15/17

#### Two sports cars are 675 miles apart and traveling toward each other. The first is going 65 mph and the second is going 85 mph. How many hours will it be -

High School: Math Algebra 1 Algebra Word Problem

06/15/17

#### Mrs.Chandler invested $75,000. Some was invested in bonds that earned a 5% profit, and the rest was put into stocks that earned 8% profit. How much did- Mrs. Chandler invest in bonds if her total profit on both types of investments was$4,380?  Translate the word problem into an equation then solve. Please Help!!
High School: Math Math Algebra 1 Algebra 2

06/15/17

#### Two numbers have a sum of 24, and 7 times the first number minus the second number is equal to 16. What is the smallest number?

High School: Math Math Geometry Math Help

05/13/17

#### Find the sum of the interior angles in an octagon.

_____________________________________________
High School: Math Algebra 1 Question

05/08/17

Write x2 - 8x + 13 = 0 in the form (x-a)2 = b, where a and b are integers.
High School: Math Algebra 1 Approximate Values

05/08/17

#### What are the approximate solutions

What are the approximate solutions of 2x2 - 7x = 3 rounded to the nearest hundredth?    A. No real solutions  B. x = - 0.77 and x = 7.77 C. x = -0.39 and x = 3.89  D. x = -3.89 and x = 0.39  ... more
High School: Math Algebra 1 Functions Ninth Grade

05/08/17

#### Determine the reasonable domain

A food packet is dropped from a helicopter and is modeled by the function f(x) = -15x2+ 6000. The graph below shows the height f(x), in feet, of the food packet at different times x, in... more

05/02/17

#### At her latest concert, she was Bitsy was only able to sell 910 tickets for a total of $15,620 (barely enough to pay her agent). If regular seats cost$18.50 -

And mezzanine seats (the only other option) cost \$16.25, how many mezzanine tickets were sold?

05/02/17

#### Beachcomber #1, found only a few seashells along the shore. Beachcomber #2 found 7 more than Beachcomber #1. Beachcomber #3 was the best of all. He found 5 -

more than Beachcomber #2. If all three Beachcombers found a total of 82 seashells, how many did Beachcomber #1 find?

04/11/17

#### Transformations

Find a transformation that maps the square [0,1]X[0,1] onto the rectangle whose vertices are (0,1), (1,0), (4,3), and (3,4).
High School: Math Algebra 1 Maths Functions

04/10/17

#### Functions Math Question

If f(x) = (x-1)2, show that f(p+a) = f(1-p)   Please show me how to solve a problem as such, thank you!
High School: Math Geometry Maths

03/06/17

#### In a kite ABCD, AB=AD; BC = CD; CAD = 40 and CBD = 60. Calculate (a) WZY (b) XWZ (c) WYZ (plz answer fast.)

Please help me. first you need to draw the diagram of a kite and then find the answers  i need it ASAP for my school because it is a project which goes in the mid term test mark :(
High School: Math Algebra Equations Maths

02/26/17

#### Find f(x+h) given f(x)

High School: Math Math Algebra Inequalities

02/26/17

#### Solving an inequality

Solve the following: a) 25 ≤ x2 b) (2x-3)/(x+1) ≥ 1

02/26/17

#### Factorising

Factorise completely: a4-13a2+3b

02/06/17

#### Use differential equation and given point to find f(x)

Use the differential equation and the given point to find f(x).    dy/dx= (-48)/(3x+5)^2             Point: (-1,3)

02/02/17

#### Inverse proportion

4. At a constant temperature, the volume of a gas V is inversely proptional to its pressure p. By what percentage will the pressure of a gas change if its volume increases by 25%?   all I know is... more
High School: Math Math Pre Calculus Ap Calculus

01/04/17

#### The point (-3, 3) lies on the terminal side of an angle in standard position. Find the value of theta in degrees.

Anybody know how to solve it and what's the answer?

## Still looking for help? Get the right answer, fast.

Get a free answer to a quick problem.
Most questions answered within 4 hours.

#### OR

Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.


text:
vector spaces: how to prove the linear combination of $V_1$ and $V_2$ solve $z = ax+by$

I am working through a linear algebra book [1] that has a practice question for which I am a little lost. The question is:

"Let $a,b$ be real numbers. Consider the equation $z = ax+by$. Prove that there are two 3-vectors $\boldsymbol{v_1}$, $\boldsymbol{v_2}$ such that the set of points $[x, y, z]$ satisfying the equation is exactly the set of linear combinations of $\boldsymbol{v_1}$ and $\boldsymbol{v_2}$. (Hint: Specify the vectors using formulas involving a, b.)."

It makes sense to me that if we have the two 3-vectors $\boldsymbol{v_1}$ and $\boldsymbol{v_2}$ that are linearly independent, they can span any point $[x,y,z]$ in the field $\mathbb{R^3}$. However, I am missing something here to answer this proof.

[1] Klein, Philip. Coding the Matrix: Linear Algebra through Computer Science Applications (Page 204). Newtonian Press.

Two independent vectors do not span the whole space, only a plane. For example $v1=(1,0,0)$ and $v2=(0,1,0)$ span the $z=0$ plane only. In fact the equation that you are given is the equation of a plane going through origin. Suppose for now that $a\ne 0$ and $b\ne 0$. I can rewrite the equation as $ax+by-z=0$. One vector $v1$ can be chosen to have $x=1$, $y=0$, and $z=a$. Similarly, $v2=(0,1,b)$. Any linear combination of $v1$ and $v2$ can be written as $\alpha v1+\beta v2$, with $\alpha,\beta$ real numbers. Such a combination has the form $\alpha (1,0,a)+\beta(0,1,b)=(\alpha, \beta, \alpha a+\beta b)$. You can just plug this into your equation, to check that the linear combination is still part of the plane. Next step is to prove that any $(x,y,z)$ vector obeying your equation can be written in terms of $v1$ and $v2$. So all you need to do is find $\alpha$ and $\beta$. Hint: $\alpha=x$ and $\beta=y$. Make sure that the cases where $a$, or $b$ or both are 0 are still OK.
• To prove that any $[x,y,z]$ vector obeying the equation, $ax+by−z=0$, can be written in terms of v1 and v2. $\alpha[1,0,a]+\beta[0,1,b]=[x,y,z]$ $\alpha*1+\beta*0 = x$ $\alpha = x$ $\alpha*0+\beta*1 = y$ $\beta = y$ $\alpha a + \beta b = z$ substituting x for $\alpha$ and y for $\beta$ we get $ax + by = z$ – jeffalltogether Oct 21 '16 at 14:45
• I'm new to this game, apparently enter sends the comment immediately. Anyway, here is the first comment in a cleaner form: To prove that any $[x,y,z]$ vector obeying the equation: $ax+by−z=0$, can be written in terms of v1 and v2. We start with this form $\alpha[1,0,a]+\beta[0,1,b]=[x,y,z]$ showing that: $\alpha*1+\beta*0 = x$ or $\alpha = x$; $\alpha*0+\beta*1 = y$ or $\beta = y$; and $\alpha a + \beta b = z$. Finally, substituting x for $\alpha$ and y for $\beta$ we get the original equation $ax + by = z$. – jeffalltogether Oct 21 '16 at 14:50
• Because the problem states that $z=ax+by$. I can just move $z$ to the other side, and then $ax+by-z=0$. Now I want to write this as $ax+by+cz+d=0$. I can do that only if for every $(x,y,z)$ combination that obeys the first equation, it obeys the second one as well. So If I choose $x=y=0$ in the first equation, than $z=0$. When I plug in $x=y=z=0$ in the second equation I get $a0+b0+c0+d=0$, therefore $d=0$. I can now choose a random $x\ne0$, and $y$ in such a way that $ax+by=1$. Then $z=1$. Plug in, and you get $1+c1=0$, so $c=-1$ – Andrei Feb 17 '17 at 3:16


text:
New interface

# Xi-Learning: Successor Feature Transfer Learning for General Reward Functions

Abstract : Transfer in Reinforcement Learning aims to improve learning performance on target tasks using knowledge from experienced source tasks. Successor features (SF) are a prominent transfer mechanism in domains where the reward function changes between tasks. They reevaluate the expected return of previously learned policies in a new target task and to transfer their knowledge. A limiting factor of the SF framework is its assumption that rewards linearly decompose into successor features and a reward weight vector. We propose a novel SF mechanism, $\xi$-learning, based on learning the cumulative discounted probability of successor features. Crucially, $\xi$-learning allows to reevaluate the expected return of policies for general reward functions. We introduce two $\xi$-learning variations, prove its convergence, and provide a guarantee on its transfer performance. Experimental evaluations based on $\xi$-learning with function approximation demonstrate the prominent advantage of $\xi$-learning over available mechanisms not only for general reward functions, but also in the case of linearly decomposable reward functions.
Document type :
Preprints, Working Papers, ...

https://hal.inria.fr/hal-03426870
Contributor : Xavier Alameda-Pineda Connect in order to contact the contributor
Submitted on : Friday, November 12, 2021 - 4:08:17 PM
Last modification on : Wednesday, May 4, 2022 - 12:00:02 PM

### Identifiers

• HAL Id : hal-03426870, version 1
• ARXIV : 2110.15701

### Citation

Chris Reinke, Xavier Alameda-Pineda. Xi-Learning: Successor Feature Transfer Learning for General Reward Functions. {date}. ⟨hal-03426870⟩

Record views