difficult inequality to solve

abs((cos(x)+1/2*x^2)-1)*x^4)<=1/24, does anybody have any idea how to solve this on matlab or write down some possible codes?

 Risposta accettata

Niels
Niels il 25 Gen 2017
Modificato: Niels il 25 Gen 2017
since your function is even it is symmetric and it is monotone for x>0 or x<0
use fzero
>> f=@(x)((cos(x)+1./2.*x.^2)-1).*x.^4 - 1/24 % subtract the value to transform it into an issue of roots
>> solution=abs(fzero(f,0))
solution =
1.0042
>> range=[-solution solution]
range =
-1.0042 1.0042

19 Commenti

bk97
bk97 il 25 Gen 2017
i didn't undertand what you did here. Can you be more accurate please?
Niels
Niels il 25 Gen 2017
if f(x)=b then subtract b so that f(x)-b=0 make this your new function
after that you can use fzero, cause the value you are looking for is the root of the new created function.
if you are wondering about the @(x) read this
bk97
bk97 il 25 Gen 2017
Modificato: bk97 il 25 Gen 2017
i made a mistake my friend the inequation is this abs(((cos(x)+1/2*x^2)-1)*x^4)<=1/24
Niels
Niels il 25 Gen 2017
you are missing a * before x^4
Niels
Niels il 25 Gen 2017
and the abs does not change anything
bk97
bk97 il 25 Gen 2017
yes i'm sorry and looking forward to your answer!
Niels
Niels il 25 Gen 2017
the answer is still the same
Niels
Niels il 25 Gen 2017
maybe you meant
(cos(x)+1./ ->(2.*x.^2)<-)-1
and not
(cos(x)+ (1./2) .*x.^2)-1 ??
bk97
bk97 il 25 Gen 2017
no if you put absolute to your first line it gives an error!
nope
it does not:
>> f=@(x)abs(((cos(x)+1./2.*x.^2)-1).*x.^4) - 1/24 % subtract the value to transform it into an issue of roots
solution=abs(fzero(f,0))
range=[-solution solution]
f =
function_handle with value:
@(x)abs(((cos(x)+1./2.*x.^2)-1).*x.^4)-1/24
solution =
1.0042
range =
-1.0042 1.0042
Niels
Niels il 25 Gen 2017
since your function is >0 for all x the abs does not change anything anyway, so it is pretty unnecessary
bk97
bk97 il 25 Gen 2017
alright thank you a lot my friend. Whenever you have time check another question that i made because i get an error in this link:http://www.mathworks.com/matlabcentral/answers/321923-runge-kutta-4th-order
The abs() makes a difference if you are expecting complex numbers for input.
bk97
bk97 il 25 Gen 2017
so what you propose?
Are you looking for real valued solutions or complex valued solutions?
bk97
bk97 il 26 Gen 2017
complex valued
There are an infinity of complex solutions, symmetric in positive and negative real components, and symmetric in positive and negative imaginary components. The boundaries on the imaginary components are +/- -.9958714409867068 approximately and the boundaries on the real components are +/- -1.004205445912837 approximately.
The area is not circular in real and imaginary components, but it is approximately circular.
For any given real component inside the given range, there are two imaginary components that lead to solution; likewise for any given imaginary component within the range, there are two real components that lead to solution.
When I talk about infinity of solutions, I am referring just to the boundary; because if the inequality, everything within the boundary is included too.
The boundary is the solutions for
(1/2)*sqrt((2*cosh(2*b)+2*cos(2*a)+(4*a^2-4*b^2-8)*cos(a)*cosh(b)-8*a*b*sin(a)*sinh(b)+a^4+(2*b^2-4)*a^2+b^4+4*b^2+4)*(a^2+b^2)^4)-1/24
where a is the real component and b is the imaginary component.
bk97
bk97 il 26 Gen 2017
alright thank you for the code about complex value! So could you please tell me if the code with the abs that @Niels has written before does work correctly for real solutions? And what is the conclusion for that
The +/- -1.004205445912837 I show occurs when the imaginary component is 0. It is a higher precision version of the value that Niels posted. The code Niels posted is fine.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Centro assistenza e File Exchange

Richiesto:

il 25 Gen 2017

Commentato:

il 26 Gen 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by