Math / Science

The Math / Science topic primarily includes discussions of mathematics, physics, statistics and economic analysis, but also biology, chemistry and other sciences.

Share tech news, updates, or what's on your mind.

Sign up to Post

When we purchase storage, we typically are advertised storage of 500GB, 1TB, 2TB and so on. However, when you actually install it into your computer, your 500GB HDD will actually show up as 465GB. Why?
It has to do with the way people and computers use numbers and do math.
What does it mean to be "Always On"?
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

This article provides a brief introduction to tissue engineering, the process by which organs can be grown artificially. It covers the problems with organ transplants, the tissue engineering process, and the current successes and problems of the technology.
Lithium Evaporation Pools, Attacama Desert, Chile. 2015
Lithium-ion batteries area cornerstone of today's portable electronic devices, and even though they are relied upon heavily, their chemistry and origin are not of common knowledge. This article is about a device on which every smartphone, laptop, and tablet depends.

Expert Comment

Comment Utility
Very well written Article! Hope to see more of the same!

Expert Comment

Comment Utility
Great article--accessible to the public but appropriately technical!
This is a research brief on the potential colonization of humans on Mars.
We are taking giant steps in technological advances in the field of wireless telephony. At just 10 years since the advent of smartphones, it is crucial to examine the benefits and disadvantages that have been report to us.
A geothermal power station at the Geysers (EE.UU)
This article seeks to propel the full implementation of geothermal power plants in Mexico as a renewable energy source.
Have you ever thought of installing a power system that generates solar electricity to power your house? Some may say yes, while others may tell me no. But have you noticed that people around you are now considering installing such systems in their houses? Perhaps some still say no, but you must have learned that utility-scale solar power plants have been built across the world to power global citizens for a few years. As this trend updates, solar researches have gradually introduced home solar power that has already turned to one of the most important focuses for photovoltaic (PV) inverter manufacturers. There muse be stacks of reasons for this. Yes, indeed!

Home solar benefits for average house owners

As average house owners, if something installed can benefit them than their investment, they would love to choose it. According to this standard, the following reasons are predictable.

1. Solar power is plentiful and will never end in billions of years. Thus, solar energy can sustain average families’ long time energy consumption plan, and they don’t have to pay for the solar energy absorbed from the sun.

2. By going solar, an average family helps protect the environment. It is good for the family as well as for the whole nation or region.

3. By installing a solar power system at home, the house becomes more beautiful and valuable.

4. If one installs such a system at home, the person can now guard against extreme weather conditions such as snowstorms.…
LVL 22

Expert Comment

by:earth man2
Comment Utility
Don't forget direct water heating is more efficient.

Expert Comment

by:Tony Pitt
Comment Utility
I installed solar PV panels almost two years ago, on a predicted payback period of about 7-8 years.  In the UK, there is an official calculator that the installer must use to quote the returns you will get.  My installer also offered his own calculation, based on his experience in the area.  (The government calculator gave 8 year payback, whereas the installer's own gave 7 years.)  In practice, the performance in the first year was near the installer's prediction, and in the second year it has reached it.

I have no regrets with regard to the installation.  It has been a fantastic investment, even though our roof is not perfect - it faces south-east, so we only generate well during the morning.  Beyond that, we are helping in a small way to reducing global warming.

Foreword (May 2015)

This web page has appeared at Google.  It's definitely worth considering!

How to Know You are Making a Difference at EE

In August, 2013, one of my colleagues posted this, and it made my heart glad.

Grading Comment:
Thanks so much Ray!  I actually haven't posted in a while because at your suggestion I got a few books and spent the last couple of months reading and learning and it's made a world of difference, so thanks a ton for that suggestion as well!

"And by the way,... I am New to PHP"

So many PHP questions at Experts-Exchange include (or should include) that statement that it got me thinking about how to advise new programmers on ways to begin learning PHP.  The popularity of PHP is undeniable; it powers an overwhelming number of web sites, from the very smallest to the giants like Facebook, hundreds of thousands of WordPress blogs, and everything in between.  So it makes sense that any web developer would need to have some foundation in the PHP language.  And for many novice programmers, PHP is the first language they try to learn.

PHP came from humble beginnings; it was originally captioned "Personal Home Page" and was intended to be a language so easy to use, that "even Grandma could learn to use PHP."  And that was fine in the 1990's before the advent of object-oriented programming, hackers, spam, and web services.  But the online environment has grown up and PHP has been forced to grow up, too.  Today, while PHP can still perform simple tasks, PHP can also power enormous database-driven applications that build online communities and analyze mountains of information.

My favorite description of PHP, disarming in its elegance and simplicity, is "What PHP can do is convert a static website that has content that has to be changed by hand into a dynamic one that can display content based on any criteria you can think of."

Getting started with PHP can be daunting, especially if you do not have a background in computer science.  This article will give you some learning resources to get the background you need and will introduce several popular and effective ways to learn PHP.  But there is something you might want to read before you finish this article.  Every professional programmer I know thinks that this is an article of wisdom.  You can take it in if you have seven minutes.  Then come back and finish this article.

Getting the Right Foundation

If you really want to be a professional programmer, you probably want to go to college to major in computer science or electrical engineering.  Almost every major college and university teaches these subject, and the principles are not very hard to learn, but it takes time and practice to turn the learned principles into praxis.  Even if you're not sure about making a career in programming, if you're read this far you probably want to consider taking an Introduction to Computer Science class.  Fortunately, these classes are now available online, for free, using the same syllabus, curriculum and learning materials that the colleges use.  

As but one example, here is what M.I.T. offers:

If you're serious about learning programming, you will need a little math (but not very much).  This series of video lectures will give you a good foundation.

Learning to Think Like a Programmer

For a variety of reasons, you're unlikely to find a basic computer science class that teaches PHP.  PHP is "easy" and these classes are for scientists who like things hard (I'm only joking a little bit).  Expect to find C, Python, Java, JavaScript and similar highly structured programming languages in the beginning classes.  Don't worry about that -- every programmer who achieves anything noteworthy has written programs in many different languages.  The ideas from one language or another bring about a level of intellectual cross-pollination that helps you think about problems from different perspectives and map problems onto different computational frameworks.  And at the most basic levels, all programming languages share many common aspects.  The greatest difference is the written syntax we use to express our ideas.

Do Not Waste Time on Non-Working Code

A programming language is a tool that builds a sequence of instructions.  The instructions tell the computer what we want it to do.  For almost everything you might do with PHP, the thing we want the computer to do is manipulate data.  Each programming problem can be defined and understood in terms of an input and an output, with the computer programming being the intermediary that transforms the input into the output.  If you think about that for a little while, you will come to the same conclusion that almost every experienced programmer comes to: it does nobody any good to post code that does not work.  Instead define and post the data and you will be amazed how quickly you can find clear, easy-to-understand answers.

Expect to Spend a Lot of Time Debugging

You will find that you're human and the computer is not.  Problems expressed in human languages are turned into solutions expressed in computer languages.  This process is full of ambiguity, double-meanings, and confusion.  Humans share culture, but computers require precision at a sub-microscopic level.  Even a single character out of place can render a computer program useless (or worse, destructive).  It's very rare that a programmer can write more than a few lines of code without introducing an unwanted element.  The process of correcting and removing these unwanted elements is called "debugging" and until you have several years of programming experience, it will consume most of the time you spend programming.  More about programming and human factors, as well as many interesting observations from the trenches is available in Jeff Atwood's writings.

Deconstruct Problems Until They Are Small Enough to Solve at a Glance

Complex programs are made up of simpler programs, and simpler programs are made up of even simpler programs.  A mental process of deconstructing problems underlies all programming activities.  As you learn PHP, you will find that you deconstruct complex problems into several smaller problems that are readily solved using PHP programming solutions.

You may have heard of the phrase, "Hello World."  It is the name given to the simplest example of the solution to any programming problem, and it demonstrates success in some small aspect of building a more complex program.  In PHP, the "Hello World" exercise looks something like this.


<?php echo "Hello World.";

This simple PHP script proves that PHP is installed correctly and that it can produce output that is visible on a web browser.  More importantly, it removes many elements of confusion and ambiguity.  What if this script did not work?  Where would you look for a solution?  What symptoms of failure could you find?  Who can help?  All of these uncertainties and doubts impinge on the process of debugging.  And thus we come to the first and most important part of thinking like a programmer: Make the larger problems smaller by reducing each of the larger problems to a collection of smaller problems.

Do this iteratively until the smaller problems are so small that the solution is obvious.  The small solutions then become the building blocks of the larger solutions.  As you construct larger solutions from smaller building blocks, you will hide the details so that the result works like a vending machine - providing useful services to many clients (either programs or people).  Programmers often refer to such self-contained units as a "black box."

Learning the Language of Programmers

A shared culture has a shared language and many terms of art.  You can learn something of PHP without knowing much about general purpose programming, but your learning will be faster and easier if you understand the language that programmers use.  Many familiar words assume new meanings.  For example, the word class takes on a unique meaning when it's applied in the context of computer programming.

I am not suggesting that you need to read or memorize every term of art (a professional will) but you need some good references that you can use to look up words that are unfamiliar or are used in unfamiliar ways.  You might want to take an afternoon to browse these glossaries.


Henson's Glossary

Cal State CS202 TechTarget Programming Words

Learning the Techniques of Programmers

All good programmers have been forced at one time or another to research a subject that they know nothing about.  They have to find out numerous details (too many to remember) and develop code that handles these details.  It's a huge exercise in short-term memory, and it's a huge investment of time.  You wouldn't want to have to do it over again.

Unfortunately, some programmers are condemned to do it over and over again because they didn't write the code clearly, or they used thoughtless variable names, or they left out the comments.  And when they need to reuse that piece of code, they find themselves looking at it and wondering things like, "Did I test this enough?" or worse, "What was I thinking?"  You can avoid this problem by following a few simple rules.

Before you begin writing code, learn the "PSR" basics.  These are valuable standards.  They will make your programming easy to read and understand, and they will make your code look professional (highly valuable if you want to get a job as a programmer).  Here are the two links you should study.

1. Whenever you're required to solve a problem that you have never solved before, make a teaching example from the solution.  Collect a library of these.

2. Whenever possible use meaningful variable names, eg, if the value is "Today's date" name the variable $today instead of something useless like $x.

3. Use comments to say what your programming is intended to do.  Often you will find that simply writing the commentsfirst, before you write a single line of code, will help you consolidate your thinking.

4. Test iteratively as you build the code.  Don't write more than a few lines without testing.  Use the principles of Test-Driven Development.

5. Programming is all about the data.  Learn about var_dump() and make regular use of it!

6. Avoid copying code you find on the internet, especially code that has a lot of compound statements.  Instead of copying, deconstruct the code, taking a moment to ask, "why?" and rewriting the code in your own words, with your own explanatory comments.

7. Adopt a coding standard and adhere to it rigidly.  With discipline comes great power.

Learning How to Get Help: the SSCCE

Anyone who says he is a self-taught programmer is missing something.  You cannot make this stuff up - you have to learn it from a variety of sources, and one of the most important sources is the community of programmers who surround you.  Perhaps you're in a university class where you can learn from your colleagues and classmates.  Or perhaps you're a regular at Experts-Exchange and Stack Overflow.  In any learning community you need to know how to share ideas with others.  That's where the SSCCE comes in.  If the only thing you take away from this article is the SSCCE, it will have been worth my time to write it and worth your time to read it.  Follow the link, read the page (there is only one page) and embrace the principles!  The SSCCE is not alone in the universe, other authors have given voice to the same concept: a problem well stated is a problem half solved.

Think about the data - what do you have for input and what do you want for output.  Try to assemble that information before you ask the question.  Then you can say, "Here's what I've got and here's what I want."  That makes for a clear problem definition.  Clear problem definitions will save you an amazing amount of time.  As Charles Kettering said, "A problem well stated is a problem half solved."

Try to avoid complicating the situation with an unnecessary explanation, when an input/output example could be used instead.  This is an actual quote from a question posted here at EE: "take that number, split it into an array. so 25 would become [2,5], or 12 would become [1,2] then use those to determine which image to show in the basket count, then loop the array to determine which images to show"  What's the author trying to say?  Your guess is as good as mine.

Learning PHP from

Now that we have introduced the deep background stuff, and shown you how to frame a problem and ask for help, it's time to get into the part of this article that is about learning -- and using -- PHP.

A good place to start is with, where you will find the best online technical documentation in the world.

If you do not read the online documentation, you're robbing yourself, stealing valuable time from learning.  Instead of learning from the experience and writings of others, you'll be learning by trial and error, maybe from reading other people's programs.  That takes longer.  A lot longer.  And it's full of risk.  Trying to learn programming by trial and error is like trying to learn to bake by looking at an apple pie.  Sure you can appreciate the finished product, but looking at a pie will tell you nothing of the other ingredients, the processes and the tools used to make the pie.  Likewise, a finished program tells you nothing of the thought processes of the developers, nor of the assumptions they made or the test data they used.  So don't try to learn that way.  Instead, exploit the web site for all its worth.  Here is how.

New in 2014: PHP has an About the Manual page, including How to Read a Function Definition and links to Support for New Users.

PHP has a "getting started" page.

PHP has an introductory tutorial.  No excuses -- Just Do It!

PHP has an omnibus FAQ page.

PHP has its entire manual online!

PHP has its own Security page and it is required reading, no excuses!

PHP has the language reference online.   No excuses here either.  You must read these sections and every one of the associated links:

Basic Syntax






Control Structures


Predefined Variables

If you want to move beyond basic PHP programming and begin collaboration with others, you want to read these sections, too.

Classes and Objects



If you want to interact with software or data on other servers you need to read these sections.

Context Options

Protocols and Wrappers

If you want to learn from the collective wisdom of others, these FAQ pages are very helpful:

Using PHP


PHP and Databases

Part of what makes so valuable is the function reference.  PHP has, at this writing, over 1,500 built-in functions.  You can't memorize all of them, so you need a quick way to refer to them.  When I am programming I have a window open to at all times.  If you know the name of the function you want to use, just type a URL like this: and PHP will find the date() function.  Couldn't be easier!  And the magic doesn't end with the official PHP documentation.  Every function page has a section for user-contributed notes.  Often, seeing the way others have used a function (or learned from an unpleasant surprise) will give you great insights into the richness and power of the PHP language.  For example, see this:

If you don't know the name of the function you want to use, you can find the function reference table of contents.   Don't plan on reading all of this.  You might want to bookmark it.

The parts of the function reference that you want to read first are probably these:


Database, especially MySQL

File System







Learning PHP from Books

One of the really great things about tech people is that they like tech features, for example, the ability to write book reviews on If you find a popular and well-reviewed book (and it's not too old) it will probably make a valuable addition to your technical/professional library.  You can't have too many PHP books!  Here are some of the books that I own and recommend.  If you decide to get any of these, be sure to look for the latest editions, because PHP is a living language.

Beginner: Yank Ignore the hokey title -- it's a good book.

Beginner to intermediate: Welling/Thompson

Intermediate to Advanced: Powers

Intermediate to Advanced: Ullman

Advanced: Zandstra

Learning PHP from Online Resources

Most of these resources are 100% free:  Almost anything about PHP from SitePoint is worthwhile.  There are good introductory references at Tizag and W3Schools, however the Tizag PHP web site appears to have gone out of date.  Many of my students swear by CodeAcademy.  And of course there is a Wiki:

New in 2017: Stefan Priebsch curates this site on Software Craftsmanship (advanced)

New in 2016: Jeffrey Way brings his considerable teaching skills to a set of PHP courses here:

While you are mastering the basics of PHP you will have many questions that others have had before you.  This is a worthwhile resource for many of those questions.

Once you have mastered the basics of PHP, there is an excellent online resource from the authors of the Slim Framework.

A set of paid courses on PHP is available from  It is not clear to me whether these are up-to-date.

A set of paid courses on PHP, from active PHP experts, is available from PHP Architect.  The company also publishes books and newsletters, and runs conferences covering PHP topics from the most introductory "bootcamp" to advanced object-oriented design.  If you want to learn from the best in the business, this is the place to come.

Learning PHP from "That Guy" -- NOT!

You've heard the expression, "Don't be that guy."  I'm going to add a recommendation here: "Don't learn PHP from 'That Guy'."  The internet is littered with examples of terrible PHP code.  Mostly it's code from half-taught programmers who don't understand the principles of computer science, don't understand the principles of programming security and don't take the time to clean up after themselves.  It turns up in forums all the time.  It may be untested.  It's almost always undocumented.  And it's something you would use at your own peril.  It's usually worth exactly what you paid for it!  So just say "no" to that stuff and stick to the links published here.  It will save you a lot of grief.


Don't feel awkward or embarrassed if you're new to PHP.  Ignorance is no sin and we were all new to the language once.  Instead, embrace the learning resources documented here, build your own personal library of code examples, post plenty of PHP questions at Experts-Exchange and most importantly give yourself time to work with the language, so that you become familiar with the commonly used parts.  The gift of time and study is one that only you can give yourself, and it may be the most valuable gift of all. And if you're doing it right, learning PHP is fun.

Welcome to PHP!

Please give us your feedback!

If you found this article helpful, please click the "thumb's up" button below. Doing so lets the E-E community know what is valuable for E-E members and helps provide direction for future articles.  If you have questions or comments, please add them.  Thanks!


LVL 84

Expert Comment

by:Dave Baldwin
Comment Utility
Another thing that I have had to almost beat into some people's heads is that you can't 'logically' figure these things out.  While computers at the lowest levels operate logically, the things that people actually deal with like programming or even just using a program are based on the Choices made by someone somewhere.  You can't logically out-guess the choices made by someone else, you need to look them up in the documentation and find the rules that apply.  

The PHP developers are constantly trying to make function calls as uniform and predictable as they can... but there are a lot of things that have slipped in over the years.  And another truckload of things that are simply non-obvious.  Even those of us who write PHP code virtually every day have to do that.  People pay me to fix and modify other people's PHP code.  Like Ray, I have a browser window open to almost all the time.
LVL 111

Author Comment

by:Ray Paseur
Comment Utility
@DaveBaldwin: Yes, that is the way!  Just look at an apple pie and see if it can tell you how to bake an apple pie.  It's the same with any recipe and the same with computer code.  There is not always a light unto my feet and a path before me unless I care for the details along  the way.

How to Win a Jar of Candy Corn:
A Scientific Approach!

I love mathematics. If you love mathematics also, you may enjoy this tip on how to use math to win your own jar of candy corn and to impress your friends.

As I said, I love math, but I guess my recent encounters with Professor Keith Devlin (blog | twitter) and his massively open online course, Introduction to Mathematical Thinking, have made me overly prone to mathematical thinking. Hence, a simple game of "guess how much candy corn is in this container" turns into a mathematical excursion.

The winning method.
First attempt, the winner, was a straight-forward calculation of the volume of a cylinder, which is the product of the area of the circular surface — the top or bottom layer of candy corn — times the height of the cylinder. In other words, one must multiply the constant Pi times the squared radius, which is half the diameter, times the height.

Working from there, I approximated the jar to hold 10 candy corn both diagonally across (diameter) and deep (height). My 785 answer won the competition as it was closest to the "760" actual total.

 The Spoils of WarA more precise calculation.
Unsatisfied with the imprecision of my victory, I stared at my "spoils of war" until I noticed the jar curved inward at…
LVL 76

Expert Comment

by:Alan Hardisty
Comment Utility
Can't wait to use this on the guess the number of sweets in the jar competition at my kids Xmas fair at their school.  I'll let you know the outcome.

Yes vote from me too.

LVL 25

Expert Comment

by:Blue Street Tech
Comment Utility
Terrific job!

...Searching for the next party w/a guessing game is involved! I might just bring my own kettle corn game so I can claim victory! wwhahahah (evil laugh) but then that would seem as though i were the fireman starting a fire to then put out. (gulp) :/
Complex Numbers are funny things.  Many people have a basic understanding of them, some a more advanced.  The confusion usually arises when that pesky i (or j for Electrical Engineers) appears and understanding the meaning of a square root of a negative number.  Without having to understand all this, there is a way to do complex algebra (to an extent) without worrying about the i part of the equation.

Complex Matrix Representation
Many people have never used complex numbers in a matrix representation before.  This method allows for a different set of algebra possibilities.  For instance, if you want to divide a complex number by another complex number without going through the rigors of setting up the equation, simply multiply the inverse of the denominator complex times the numerator.  This is much simpler (for large sets of equations) than doing it by hand.

But where does this really help?  Software.  

It's much easier for a computer to deal with matrices than complex numbers.  Complex numbers require a separate class and defining all operators.  If you make complex numbers a matrix of real numbers, this process becomes ten times simpler to implement.

Granted there are some advantages to using complex numbers as a separate class.  Admittedly, performing certain operations on a matrix is difficult, like raising e to the matrix M power (in our case, a complex matrix).  Although, this is possible by the Taylor series, it's…
Technology Partners: We Want Your Opinion!
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

On a scale of 1 to 10, how would you rate our Product?
Many of us have answered that question time and time again. But only a few of us have had the pleasure of receiving a stack of the filled out surveys and being asked to do something with them. What could we try?

Certainly there are statistical methods to treat this sort of data, right? Perhaps a correlation study in order to find which question has the most influence on the overall satisfaction score? The sales manager has noticed that the overall score is 7.89, closest to that of satisfaction with his own department, scoring 7.97. That seems meaningful: doesn't it prove that sales is the most important factor in client satisfaction?

When searching for answers on the Internet, there doesn't seem to be any good introduction on methodology. Naturally, dozens of sophisticated methods are described at length with the most painful details, but it's never clear when and how to use them. And some words used on those pages are almost scary.

This article will show that the search for statistical methods is often misguided. One shouldn't look for parametric tests, but look for techniques of descriptive statistics and -- perhaps -- non-parametric tests. Furthermore, any useful interpretation will require more psychology and good sense than statistical expertise.

The first part describes what most people are likely to try: parametric statistics with little or no results. …
LVL 18

Expert Comment

by:Ravi Agrawal
Comment Utility
Excellent. Got my Yes Vote too


Expert Comment

Comment Utility
Hey, This is a great way of explaining. I am working on something similar, this has contributed to it.
Thanks a lot.

A Guide to the PMT, FV, IPMT and PPMT Functions

In MS Excel we have the PMT, FV, IPMT and PPMT functions, which do a fantastic job for interest rate calculations.  But what if you don't have Excel ?

This article is for programmers looking to reverse engineer the PMT, FV, IPMT and PPMT functions to incorporate them into other application(s) or programming language(s) as a guide to the behaviors and implementation logic of the afore-mentioned methods.  Non-programmers looking for a better understanding of the listed mortgage formulas found in popular office programs like MS Access, MS Excel and Calc (Spreadsheet), this article is for you too as I will keep the main content non-technical with clear segmentation on programming-specific concepts so that you can skip around easily if you are not interested in code.

I have done a series of testing and validation on my understanding as well as actual programmatic reproduction of the PMT, FV, IPMT and PPMT calculations; however, it is always prudent to fully  test within your own environment with your business's common scenarios (use cases), making sure you get what you would expect before using any code shown as examples in a production environment.

The correlation of the PMT, FV, IPMT and PPMT functions is their usage within fixed rate mortgage calculations; therefore, you can research FRM (info:

Expert Comment

by:Michael Bartosh
Comment Utility
Not true... On a lease contract, the future value is stated as the "residual".  The present value is the original cost (before payments, over the term of the contract, whether the discount rate is zero or some other value, are made). On a retail contract, the future value is zero, And the present value is the original cost (just like it is for the lease contract).

The discount rate will only tell you what amount of each payment is attributed to interest. On a discount rate of zero, the interest on each payment is zero.

Therefore,  for a  discount rate of zero; the PMT = ( PV - FV ) / nper  

Examples with a discount rate of zero include: 1) A lease with an original cost of $50000 and a future value of $14000 with a term of 3 years (36 monthly payments) = (50000 - 14000) / 36 = $1000 per month payment.  2) a retail contract with an original cost of $50000 will have a future value of $0, with the same 3 year term (36 monthly payments) = (50000 - 0) / 36 = $1,388.89 per month payment.

Expert Comment

by:Razib palash
Comment Utility
how to calculate excel financial formula " RATE" OR APR? can you tell me what is the algorithm of this formula?

Math / Science

The Math / Science topic primarily includes discussions of mathematics, physics, statistics and economic analysis, but also biology, chemistry and other sciences.