# Implementation implicit Gauss method

**URL:** https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912
**Category:** General Usage
**Tags:** question, nlsolve
**Created:** [September 1, 2024, 9:30pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912 "2024-09-01T21:30:41Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![khaledharizb](https://avatars.discourse-cdn.com/v4/letter/k/57b2e6/32.png) [@khaledharizb](https://discourse.julialang.org/u/khaledharizb)
#### Post date: [September 1, 2024, 9:30pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912/1 "2024-09-01T21:30:41Z")

</div>

I would like to implement Runge Kutta Gauss method. This method is implicit and need a nonlinear solver to do so. For that I define a fixed point solver `FixIter`, then the function `Gauss(f::Function,u₀,h,N)`

```julia
using LinearAlgebra
function FixIter(fun,u,tol)
    while true
        uold = u
        u = fun(u)
        norm(uold - u) > tol || break
    end
    return u
end
function Gauss(f::Function,u₀,h,N)
A = [0.25 0.25-√3/6 ; 0.25+√3/6 0.25]

b = [0.5, 0.5] ;
u = zeros(length(u₀),N+1)
u[:,1] = u₀;
        
for i in 1:size(u,2)-1; 
 g(K) = [f(u[:,i]+ h * (A[1,1] * K[1] + A[1,2] * K[2])),f(u[:,i]+ h * (A[2,1] * K[1] + A[2,2] * K[2]))]
    K = FixIter(g,f(u[:,i]),1e-12);
 u[:,i+1] = u[:,i] + h * b[1] * K[1] + h * b[2] * K[2];
end
    return u; 
end

```

My example is a pendulum problem with the vector field X = (y, \sin(x))

```julia
f(u) = [u[2], -sin(u[1])];
h=0.05; N=100;
x0=[1.,0.]
u = Gauss(f,x0,h,N)

```

However I get the following error

 ![Screenshot from 2024-09-01 23-27-47](https://global.discourse-cdn.com/julialang/original/3X/6/c/6c7e2a4673ea852791c3fedd9d64b69c280d3fe2.png)

I appreciate any help you can provide.

---

<div class="post-metadata">

### Author: ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)
#### Post date: [September 1, 2024, 10:30pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912/2 "2024-09-01T22:30:58Z")

</div>

if I’m understanding correctly, I believe this is just RadauIIA3 from OrdinaryDiffEq.jl

---

<div class="post-metadata">

### Author: ![khaledharizb](https://avatars.discourse-cdn.com/v4/letter/k/57b2e6/32.png) [@khaledharizb](https://discourse.julialang.org/u/khaledharizb)
#### Post date: [September 1, 2024, 10:32pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912/3 "2024-09-01T22:32:41Z")

</div>

No, this is 2-stages Gauss method [https://en.wikipedia.org/wiki/Gauss%E2%80%93Legendre\_method](https://en.wikipedia.org/wiki/Gauss%E2%80%93Legendre_method)

---

<div class="post-metadata">

### Author: ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)
#### Post date: [September 1, 2024, 11:15pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912/4 "2024-09-01T23:15:45Z")

</div>

> [@khaledharizb](#):
>
> `u[:,i+1] = u[:,i] + h * b[1] * K[1] + h * b[2] * K[2]`

You are adding a vector to a scalar here?

PS. Please don’t post screenshots of text. Post quoted text.

---

<div class="post-metadata">

### Author: ![khaledharizb](https://avatars.discourse-cdn.com/v4/letter/k/57b2e6/32.png) [@khaledharizb](https://discourse.julialang.org/u/khaledharizb)
#### Post date: [September 1, 2024, 11:32pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912/6 "2024-09-01T23:32:10Z")

</div>

I solve it but still not working

---

<div class="post-metadata">

### Author: ![khaledharizb](https://avatars.discourse-cdn.com/v4/letter/k/57b2e6/32.png) [@khaledharizb](https://discourse.julialang.org/u/khaledharizb)
#### Post date: [September 1, 2024, 11:34pm UTC](https://discourse.julialang.org/t/implementation-implicit-gauss-method/118912/7 "2024-09-01T23:34:18Z")

</div>

This code is also working but still give me a wrong result

```julia
function RKStep(f,x0,h,A,b)
 x=[] ; push!(x,x0);
tol = 1e-12;  
for i in 1:N-1; 
g(K) = f(x0 + h * A * K);
K = FixIter(g,x0,tol)
        x0 = x0 .+ h * b'* K;  
push!(x,x0);
end    
    return stack(x, dims=1)
end

```
