skip to main content
Power BI
    • What is Power BI
    • Why Power BI
    • Customer stories
    • Data visuals
    • Security
    • Power BI Desktop
    • Power BI Pro
    • Power BI Premium
    • Power BI Mobile
    • Power BI Embedded
    • Power BI Report Server
  • Pricing
    • Azure + Power BI
    • Microsoft 365 + Power BI
    • Dynamics 365 + Power BI
      • Energy
      • Healthcare
      • Manufacturing
      • Media
      • Retail
    • For analysts
    • For IT
      • Overview
      • Embedded analytics
      • Power BI visuals
      • Automation
      • Documentation
      • Community
    • Partners Overview
    • Solutions Partners
    • BI Specialized Partners
    • Power BI CSOs
    • Fabric Partner Community
    • Training
    • Getting started
      • Overview
      • Self-guided learning
      • Webinars
      • Documentation
      • Roadmap
      • Overview
      • Issues
      • Give feedback
    • Blog
    • Business intelligence topics
    • Overview
    • Forums
    • Galleries
    • Submit ideas
    • Events
    • User groups
    • Community blog
    • Register
    • ·
    • Sign in
    • ·
    • Help
    Go To
    • Power BI forums
    • Updates
    • News & Announcements
    • Get Help with Power BI
    • Desktop
    • Service
    • Report Server
    • Power Query
    • Mobile Apps
    • Developer
    • DAX Commands and Tips
    • Custom Visuals Development Discussion
    • Health and Life Sciences
    • Power BI Spanish forums
    • Translated Spanish Desktop
    • Power Platform Integration - Better Together!
    • Power Platform Integrations
    • Power Platform and Dynamics 365 Integrations
    • Training and Consulting
    • Instructor Led Training
    • Galleries
    • Community Connections & How-To Videos
    • COVID-19 Data Stories Gallery
    • Themes Gallery
    • Data Stories Gallery
    • R Script Showcase
    • Webinars and Video Gallery
    • Quick Measures Gallery
    • 2021 MSBizAppsSummit Gallery
    • 2020 MSBizAppsSummit Gallery
    • 2019 MSBizAppsSummit Gallery
    • Events
    • Ideas
    • Custom Visuals Ideas
    • Issues
    • Issues
    • Events
    • Upcoming Events
    • Community Engagement
    • T-Shirt Design Challenge 2023
    • Community Blog
    • Power BI Community Blog
    • Custom Visuals Community Blog
    • Community Support
    • Community Accounts & Registration
    • Using the Community
    • Community Feedback
    cancel
    Turn on suggestions
    Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
    Showing results for 
    Search instead for 
    Did you mean: 

    Fabric is Generally Available. Browse Fabric Presentations. Work towards your Fabric certification with the Cloud Skills Challenge.

    • Power BI forums
    • Galleries
    • Quick Measures Gallery
    • Runge-Kutta

    Runge-Kutta

    05-05-2018 15:12 PM - last edited 03-05-2019 17:34 PM

    Super User Greg_Deckler
    Super User
    2391 Views
    LinkedIn LinkedIn Facebook Facebook Twitter Twitter
    Greg_Deckler
    Super User Greg_Deckler
    Super User
    • Mark as New
    • Bookmark
    • Subscribe
    • Mute
    • Subscribe to RSS Feed
    • Permalink
    • Print
    • Report Inappropriate Content

    Runge-Kutta

    ‎05-05-2018 03:12 PM

    The deeper I dig into @Phil_Seamark's fantastic new book, Beginning DAX with Power BI: The SQL Pro’s Guide to Better Business Intelligence, the more cool stuff I find. This time it is Nested VAR statements. Who knew? Well, the cool part about finding this particular nugget of wisdom is that it finally allowed me to more elegantly solve another rather vexing problem that I blogged about in my article Runge-Kutta and the Limits of DAX. 

     

    Because of the localization of variables but with the ability to intelligently reference variables at higher levels in the nesting, I was finally able to come up with a much more elegant single measure solution to Runge-Kutta that allows me to keep my variable names consistent throughout the calculation. 

     

    The calculation below takes a table of time intervals, 0, .5, 1, 1.5, 2 (h=0.5) and the following two definitions:

    y' = y−t^2 + 1

    y(0) = 0.5

     

     

    m_w = 
    VAR tCurrent = MAX(RK4[t])
    VAR t=0
    VAR w = 0.5
    VAR h = 0.5
    VAR step1 = IF(
                    tCurrent=0,
                    w,
                    VAR k1t = t
                    VAR t = t+h
                    VAR k1w = w
                    VAR k1 = h*(k1w - k1t^2 + 1)
                    VAR k2t = k1t + h/2
                    VAR k2w = k1w + k1/2
                    VAR k2 = h*(k2w - k2t^2 + 1)
                    VAR k3t = k1t + h/2
                    VAR k3w = k1w + k2/2
                    VAR k3 = h*(k3w - k3t^2 + 1)
                    VAR k4t = k1t + h
                    VAR k4w = k1w + k3
                    VAR k4 = h*(k4w - k4t^2 + 1)
                    VAR w = k1w + (k1 + 2*k2 + 2*k3 + k4)/6
    
                    VAR step2 = IF(
                                    tCurrent=h,
                                    w,
                                    VAR k1t = t
                                    VAR t = t+h
                                    VAR k1w = w
                                    VAR k1 = h*(k1w - k1t^2 + 1)
                                    VAR k2t = k1t + h/2
                                    VAR k2w = k1w + k1/2
                                    VAR k2 = h*(k2w - k2t^2 + 1)
                                    VAR k3t = k1t + h/2
                                    VAR k3w = k1w + k2/2
                                    VAR k3 = h*(k3w - k3t^2 + 1)
                                    VAR k4t = k1t + h
                                    VAR k4w = k1w + k3
                                    VAR k4 = h*(k4w - k4t^2 + 1)
                                    VAR w = k1w + (k1 + 2*k2 + 2*k3 + k4)/6
    
                                    VAR step3 = IF(
                                                    tCurrent=2*h,
                                                    w,
                                                    VAR k1t = t
                                                    VAR t = t+h
                                                    VAR k1w = w
                                                    VAR k1 = h*(k1w - k1t^2 + 1)
                                                    VAR k2t = k1t + h/2
                                                    VAR k2w = k1w + k1/2
                                                    VAR k2 = h*(k2w - k2t^2 + 1)
                                                    VAR k3t = k1t + h/2
                                                    VAR k3w = k1w + k2/2
                                                    VAR k3 = h*(k3w - k3t^2 + 1)
                                                    VAR k4t = k1t + h
                                                    VAR k4w = k1w + k3
                                                    VAR k4 = h*(k4w - k4t^2 + 1)
                                                    VAR w = k1w + (k1 + 2*k2 + 2*k3 + k4)/6
    
                                                    VAR step4 = IF(
                                                                    tCurrent=3*h,
                                                                    w,
                                                                    VAR k1t = t
                                                                    VAR t = t+h
                                                                    VAR k1w = w
                                                                    VAR k1 = h*(k1w - k1t^2 + 1)
                                                                    VAR k2t = k1t + h/2
                                                                    VAR k2w = k1w + k1/2
                                                                    VAR k2 = h*(k2w - k2t^2 + 1)
                                                                    VAR k3t = k1t + h/2
                                                                    VAR k3w = k1w + k2/2
                                                                    VAR k3 = h*(k3w - k3t^2 + 1)
                                                                    VAR k4t = k1t + h
                                                                    VAR k4w = k1w + k3
                                                                    VAR k4 = h*(k4w - k4t^2 + 1)
                                                                    VAR w = k1w + (k1 + 2*k2 + 2*k3 + k4)/6
                                                                    RETURN w
                                                                )
                                                    RETURN step4
                                                )
                                    RETURN step3
                                )
                RETURN step2
            )
    RETURN step1

     

     

    Thanks again @Phil_Seamark!!

     

     

     

     

    eyJrIjoiYzdmYjUxNDEtZDQ1YS00NGRkLWI2N2QtOGQ1ZDUzZWFlZTg2IiwidCI6IjRhMDQyNzQzLTM3M2EtNDNkMi04MjdiLTAwM2Y0YzdiYTFlNSIsImMiOjN9


    @ me in replies or I'll lose your thread!!!
    Instead of a Kudo, please vote for this idea
    Become an expert!: Enterprise DNA
    External Tools: MSHGQM
    YouTube Channel!: Microsoft Hates Greg
    Latest book!:
    Mastering Power BI 2nd Edition

    DAX is easy, CALCULATE makes DAX hard...
    RRK4.pbix
    51 KB
    Labels:
    • Labels:
    • Mathematical
    • Other
    Message 1 of 1
    2,391 Views
    0
    Reply
    • All forum topics
    • Previous Topic
    • Next Topic

    Power Platform

    • Overview
    • Power BI
    • Power Apps
    • Power Pages
    • Power Automate
    • Power Virtual Agents

    • Sign in
    • Sign up

    Browse

    • Solutions
    • Partners
    • Consulting Services

    Downloads

    • Power BI Desktop
    • Power BI Mobile
    • Power BI Report Server
    • See all downloads

    Learn

    • Guided learning
    • Documentation
    • Support
    • Community
    • Give feedback
    • Webinars
    • Developers
    • Blog
    • Newsletter

    © 2023 Microsoft

    Follow Power BI

    • Privacy & cookies
    • Manage cookies
    • Terms of use
    • Trademarks
    Consumer Privacy Act (CCPA) Opt-Out Icon Your Privacy Choices