• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
Question by cxode · Aug 15, 2017 at 03:36 AM · c#math

How can I numerically solve an equation in Unity c#?

Specifically, I need to solve for x given values of y, a, u and n using this equation:

y = sqrt(a^3 / u) * (x - n * sin(x))

But I haven't even completed high school and I have no idea where to start. I found something called the Newton-Raphson method that seems to do what I want. Can I translate that method into C#? Is there a more performance-mindful way to do it?

Any help is super appreciated... I've been working on this for days and I still have no idea what I'm doing...

Edit: to future googlers, u/Romestus on reddit made this awesome script that solves the equation using Newton's method. I hope it can help you too!

Comment

People who like this

0 Show 3
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image bolt5 · Aug 15, 2017 at 06:00 AM -1
Share

You can check the Mathf Class

avatar image cxode bolt5 · Aug 15, 2017 at 09:57 PM 0
Share

nothing there

avatar image elenzil cxode · Aug 15, 2017 at 10:09 PM 0
Share

yeah - mathf is comparatively primitive stuff like abs(), sin(), etc. nothing remotely like this.

2 Replies

· Add your reply
  • Sort: 
avatar image

Answer by elenzil · Aug 15, 2017 at 06:45 PM

newton-raphson is what i was going to suggest.

i believe for NR you need the derivative of the function as well. that would be a second function you calculate by hand on paper. this is a moderately complex function to take the derivative of!

fortunately it looks like it can be simplified a bit.

let's replace all of sqrt(a^3/u) by a constant k.

so now

 y = k * (x - n * sin(x)).
 
 y = (k * x)  - (k * n * sin(x)).
 
 y' = [(k * x)  - (k * n * sin(x))]'.
 
 y' = (k * x)' - (k * n * sin(x))'.
 
 y' = k - k * n * cos(x).
 
 y' = k * (1 - n * cos(x)).
 
 ^----- that's your derivative, where k = sqrt(a^3/u).

Then you could either implement NR yourself, or if you google C# Newton Raphson it looks like there's a fair number of examples.

Comment
cxode
Bunny83

People who like this

2 Show 5 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image cxode · Aug 15, 2017 at 07:48 PM 0
Share

Thank you. I see wolfram alpha can also calculate derivatives for me.

if you google C# Newton Raphson it looks like there's a fair number of examples.

None that I can understand and none that I can figure out how to get working in Unity. I think I'm going to try my own implementation, but I don't have high hopes...

avatar image elenzil cxode · Aug 16, 2017 at 04:32 AM 0
Share

i was thinking about this a bit more, and realized that with this equation, depending on the values of n, you're going to have either 1, 2, 3, 4, or arbitrarily many corresponding values of x. the value of k (the sqrt) doesn't matter in that respect.

for example, here's the graph with n = 10. you can see that for y = 0, there's 7 different values of x. http://imgur.com/a/TkK3o

in that situation, newton-raphson or any solver which produces a single value is going to give you results which might not be what you want. a solver which yields all the intersections of Y with the function might be what you want, but those are harder to come by. Newton-Raphson will return an approximation of one of the intersection points, depending on the initial value you seed it with.

are you sure you know what you want ?

avatar image cxode elenzil · Aug 16, 2017 at 06:53 AM 0
Share

Yeah, I forgot to mention it in the OP, but the value of n is always between 0 and 1.

I'm good now though. u/Romestus from reddit made a script for me that does exactly what I want!

Show more comments
avatar image

Answer by M-G-Production · Aug 16, 2017 at 05:16 PM

I would probably look like that:

 y = Mathf.Sqrt(Mathf.Pow(a, 3)/u) * (x - n * Mathf.Sin(x))
Comment

People who like this

0 Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image elenzil · Aug 16, 2017 at 05:38 PM 0
Share

the question is not how to express the formula in C#,

it's how to solve for X given Y.

avatar image M-G-Production elenzil · Aug 16, 2017 at 07:56 PM 0
Share

Ohh! Sorry :S

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

372 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Predict the hit position 0 Answers

How to get an object to turn to point to a direction using the shortest path. E.g. 15° to 345° in 30° instead of 330°. 0 Answers

Unity Math is Wrong for Some Reason 0 Answers

Check if a point is on the right or left of a vector? 2 Answers

Money-system for decillionare game 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges