# Essays/Gauss-Bonnet/Bonnet01

### 1 References

1. 'Applications of the Absolute Differential Calculus' by A. J. McCONNELL.
2. 'Tensor Analysis' by I. S. Sokolnikoff (Second Edition, 1964).

### 2 Software

```NB. ... execute (ijx) ...

9!:14 ''
j602/beta/2007-09-19/23:00
```

### 3 Verbs

```NB. ... script (ijs) ...

NB. ... from 'numeric' ...
steps=:{.+(1&{-{.)*(i.@>:%])@{:

NB. ... identify coordinates ...
v1=:0{]
v2=:1{]

NB. ... open boxed elements ...
b0=:>@(0{])
b1=:>@(1{])
b2=:>@(2{])
b3=:>@(3{])

NB. ... tolerant 'set zero' (see 'Essays/Tolerant Comparison') ...
tsz=:\$@]\$[0:`(I.@([>!.0|@]))`]},@]
ts0=:(2^_44)&tsz
tz =:ts0@:

NB. ... tolerant 'equal' (see 'Essays/Tolerant Comparison') ...
teq=:*./@,@((b0|@:-b1)<:!.0[*b0>.&:|b1)

NB. ... verbs useful for tolerant comparison ...
nzmin  =:<./@:|@((0<!.0|)#])@,
nzmax  =:>./@:|@((0<!.0|)#])@,
nzcount=:+/@(0<!.0|)@,

NB. ... trig verbs ...
sin=:1&o.
cos=:2&o.

NB. ... axes sum ...
axs=:(b0|:b1)+/@(*"1)"1 _ b2|:b3

NB. ... see Vocabulary 'Determinant' ...
det=:-/ . *

NB. ... see Vocabulary 'Outfix' ...
minors=:1&(|:\.)"2^:2

NB. ... cofactors ...
Mcf=:(*/~@({.@\$\$1,_1:)*det@minors)"2

NB. ... derivative of determinant ...
detdv=:(Mcf@[+/@(+/)@:*])"2

NB. ... derivatives of cofactors ...
Mcfdv=:(*/~@({.@\$@[\$1,_1:)*detdv&minors)"2
```

### 4 A Surface

##### 4.1 Surface Coordinates

```NB. ... script (ijs) ...

NB. ... for v1 ...
s1=:1.43"_
f1=:2.10"_
i1=:10"_

NB. ... for v2 ...
s2=:0"_
f2=:2p1"_
i2=:56"_

vpgen=:steps@(s1,f1,i1)([,"0/])steps@(s2,f2,i2)
```

##### 4.2 Auxiliary Verbs

```NB. ... script (ijs) ...

p=:1.50"_
q=:1.65"_
```

```NB. ... script (ijs) ...

ga=:(v1*cos@v2)"1
gb=:(v1*sin@v2)"1
gc=:(-@(v1^p)+q*ga)"1
gx=:^@gc"1
```

##### 4.3 Cartesian Coordinates

```NB. ... script (ijs) ...

y1=:ga
y2=:gb
y3=:(ga*gx)"1
```

##### 4.4 Surface Plot
```NB. ... plot (ijs) ...

pd 'viewpoint _3 _5 0.7'
pd 'viewsize 1 1 0.5'

pd 'type surface'
pd (y1;y2;y3) vpgen''
pd 'pdf'
pd 'show'
```

 Figure 1: Surface

### 5 Derivatives

These derivatives can be used to calculate the intrinsic properties of the surface they describe.

##### 5.1 Auxiliary Verbs

```NB. ... script (ijs) ...

gav1=:cos@v2"1
gav2=:-@(v1*sin@v2)"1

```

```NB. ... execute (ijx) ...

1
```

```NB. ... script (ijs) ...

gav1v1=:0:"1
gav1v2=:-@sin@v2"1
gav2v1=:-@sin@v2"1
gav2v2=:-@(v1*cos@v2)"1

```

```NB. ... execute (ijx) ...

1
```

```NB. ... script (ijs) ...

gav1v1v1=:0:"1
gav1v1v2=:0:"1
gav1v2v1=:0:"1
gav1v2v2=:-@cos@v2"1

gav2v1v1=:0:"1
gav2v1v2=:-@cos@v2"1
gav2v2v1=:-@cos@v2"1
gav2v2v2=:(v1*sin@v2)"1

```

```NB. ... execute (ijx) ...

1
```

```NB. ... script (ijs) ...

gbv1=:sin@v2"1
gbv2=:(v1*cos@v2)"1

gbdv=:(gbv1,gbv2)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_20)&tsz@gbdv((2^_18)teq[;])(2^_20)&tsz@(gb D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gbv1v1=:0:"1
gbv1v2=:cos@v2"1
gbv2v1=:cos@v2"1
gbv2v2=:-@(v1*sin@v2)"1

gbdvdv=:((gbv1v1,gbv1v2),:gbv2v1,gbv2v2)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_20)&tsz@gbdvdv((2^_18)teq[;])(2^_20)&tsz@(0|:gbdv D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gbv1v1v1=:0:"1
gbv1v1v2=:0:"1
gbv1v2v1=:0:"1
gbv1v2v2=:-@sin@v2"1

gbv2v1v1=:0:"1
gbv2v1v2=:-@sin@v2"1
gbv2v2v1=:-@sin@v2"1
gbv2v2v2=:-@(v1*cos@v2)"1

gbdvdvdv=:(((gbv1v1v1,gbv1v1v2),:gbv1v2v1,gbv1v2v2),:(gbv2v1v1,gbv2v1v2),:gbv2v2v1,gbv2v2v2)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_20)&tsz@gbdvdvdv((2^_18)teq[;])(2^_20)&tsz@(0|:gbdvdv D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gcv1=:(-@(p*v1^p-1:)+q*gav1)"1
gcv2=:(q*gav2)"1

gcdv=:(gcv1,gcv2)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_19)&tsz@gcdv((2^_18)teq[;])(2^_19)&tsz@(gc D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gcv1v1=:((-@(p*p-1:)*v1^p-2:)+q*gav1v1)"1
gcv1v2=:(q*gav1v2)"1
gcv2v1=:(q*gav2v1)"1
gcv2v2=:(q*gav2v2)"1

gcdvdv=:((gcv1v1,gcv1v2),:gcv2v1,gcv2v2)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_20)&tsz@gcdvdv((2^_18)teq[;])(2^_20)&tsz@(0|:gcdv D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gcv1v1v1=:((-@(p*(p-1:)*p-2:)*v1^p-3:)+q*gav1v1v1)"1
gcv1v1v2=:(q*gav1v1v2)"1
gcv1v2v1=:(q*gav1v2v1)"1
gcv1v2v2=:(q*gav1v2v2)"1

gcv2v1v1=:(q*gav2v1v1)"1
gcv2v1v2=:(q*gav2v1v2)"1
gcv2v2v1=:(q*gav2v2v1)"1
gcv2v2v2=:(q*gav2v2v2)"1

gcdvdvdv=:(((gcv1v1v1,gcv1v1v2),:gcv1v2v1,gcv1v2v2),:(gcv2v1v1,gcv2v1v2),:gcv2v2v1,gcv2v2v2)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_19)&tsz@gcdvdvdv((2^_18)teq[;])(2^_19)&tsz@(0|:gcdvdv D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gxdv=:((gcv1,gcv2)*^@gc)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_19)&tsz@gxdv((2^_18)teq[;])(2^_19)&tsz@(gx D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gxt11=:(gcv1*gcv1)+gcv1v1
gxt12=:(gcv1*gcv2)+gcv1v2
gxt21=:(gcv2*gcv1)+gcv2v1
gxt22=:(gcv2*gcv2)+gcv2v2

gxdvdv=:(((gxt11,gxt12),:gxt21,gxt22)*^@gc)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_20)&tsz@gxdvdv((2^_10)teq[;])(2^_20)&tsz@(0|:gxdv D.1))"1) vpgen''
1
```

```NB. ... script (ijs) ...

gxt111=:(gcv1*gcv1*gcv1)+(gcv1v1*gcv1)+(gcv1*gcv1v1)+(gcv1v1*gcv1)+gcv1v1v1
gxt112=:(gcv1*gcv1*gcv2)+(gcv1v1*gcv2)+(gcv1*gcv1v2)+(gcv1v2*gcv1)+gcv1v1v2
gxt121=:(gcv1*gcv2*gcv1)+(gcv1v2*gcv1)+(gcv1*gcv2v1)+(gcv1v1*gcv2)+gcv1v2v1
gxt122=:(gcv1*gcv2*gcv2)+(gcv1v2*gcv2)+(gcv1*gcv2v2)+(gcv1v2*gcv2)+gcv1v2v2

gxt211=:(gcv2*gcv1*gcv1)+(gcv2v1*gcv1)+(gcv2*gcv1v1)+(gcv2v1*gcv1)+gcv2v1v1
gxt212=:(gcv2*gcv1*gcv2)+(gcv2v1*gcv2)+(gcv2*gcv1v2)+(gcv2v2*gcv1)+gcv2v1v2
gxt221=:(gcv2*gcv2*gcv1)+(gcv2v2*gcv1)+(gcv2*gcv2v1)+(gcv2v1*gcv2)+gcv2v2v1
gxt222=:(gcv2*gcv2*gcv2)+(gcv2v2*gcv2)+(gcv2*gcv2v2)+(gcv2v2*gcv2)+gcv2v2v2

gxdvdvdv=:((((gxt111,gxt112),:gxt121,gxt122),:(gxt211,gxt212),:gxt221,gxt222)*^@gc)"1
```

```NB. ... execute (ijx) ...

*./@(*./)@:(((2^_15)&tsz@gxdvdvdv((2^_09)teq[;])(2^_15)&tsz@(0|:gxdvdv D.1))"1) vpgen''
1
```