Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Solving exponential equations in C++

Posted on 2009-05-07
Medium Priority
1,208 Views
Is there a function or a library that can solve equations like: exp(constant*x) + exp(constant*x) = constant ?
If not , what is the best way to solve this equation in c++ ?

Thanks
0
Question by:Chrysaor
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 9

Expert Comment

ID: 24326232
Depends on what you mean by "exp"--what is this function supposed to do? Also, you can't assign a constant to anything but a constant, as far as I know. The entire expression must be a constant (unless x is a constant as well). Can you be a  bit more specific as to what exactly you're trying to accomplish?
0

LVL 9

Expert Comment

ID: 24346957
He is trying to solve the equation "e^mx + e^nx = k" for x; m, n & k are known.
0

Author Comment

ID: 24350226
Excactly as jhshukla said.. Any ideas?
0

LVL 1

Assisted Solution

MatrixDud earned 332 total points
ID: 24496538
If all values are known, as you mentioned jhshukla was right about, then I don't see what you are trying to do (function is already solved).

The standard library has the exp function (math.h). You'll have to break the algebra down to its simplest form and solve for what ever variable you're looking for. Standard C++ libraries won't do that for you. A library like MathCAD might. Unless you need to break down a lot of different equations then you would be better to just do it yourself.
0

LVL 8

Expert Comment

ID: 24533968

``````/* Newton's method example.
http://en.wikipedia.org/wiki/Newton%27s_method */
#include <stdio.h>
#include <math.h>

/* the function */
#define f(x)	exp(2*x)+exp(3*x)-5
/* the derivative on x */
#define f_(x)	2*exp(2*x)+3*exp(3*x)
/* the first quess */
#define x0	-1
/* precision */
#define epsilon	1e-9

int main()
{
double prev,curr,delta;
prev=curr=x0;
while(1)
{
curr = prev - (f(prev)/f_(prev));
delta = fabs(curr-prev);
printf(">> %.10f e=%.10f\n",curr,delta);
if (delta < epsilon)
break;
prev = curr;
}
printf("%.10f\n",curr);
return 0;
}
``````
0

LVL 8

Assisted Solution

JIEXA earned 336 total points
ID: 24534003
Sorry, wrong usage of macros, here is new code.
``````/* Newton's method example.
http://en.wikipedia.org/wiki/Newton%27s_method */
#include <stdio.h>
#include <math.h>

/* the function */
#define f(x)	exp(2*x)+exp(3*x)-5
/* the derivative on x */
#define f_(x)	2*exp(2*x)+3*exp(3*x)
/* the first guess */
#define x0	-1
/* precision */
#define epsilon	1e-9

int main()
{
double prev,curr,delta;
prev=curr=x0;
while(1)
{
curr = prev - (f(prev))/(f_(prev));
delta = fabs(curr-prev);
/*printf(">> %.10f e=%.10f\n",curr,delta);*/
if (delta < epsilon)
break;
prev = curr;
}
printf("root=%.10f, f(root)=%.10f\n",curr,(f(curr)));
return 0;
}
``````
0

LVL 40

Assisted Solution

evilrix earned 332 total points
ID: 24534010
>> Sorry, wrong usage of macros, here is new code.
Just a style tip, in C++ prefer to use in-line functions, macros have so many reasons for not being a good idea in C++ it's not even funny :)
0

LVL 9

Accepted Solution

jhshukla earned 1000 total points
ID: 24542526
substitute e^x = A
A^m + A^n = k
depending on the values of m & n, the equation may be unsolvable or you may end up with non-real roots (for A).

x = ln(A)

wikipedia has a variety of formulas for solving cubic & quartic equations
http://en.wikipedia.org/wiki/Cubic_equation
http://en.wikipedia.org/wiki/Quartic_equation
there is no set formula for solving higher order equations. you can use newton's method as jiexa showed.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more â€¦
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilationâ€¦
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relatâ€¦
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
###### Suggested Courses
Course of the Month11 days, 23 hours left to enroll