mirror of
				https://github.com/gonum/gonum.git
				synced 2025-10-31 10:36:30 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			937 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			937 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright ©2018 The Gonum Authors. All rights reserved.
 | |
| // Use of this source code is governed by a BSD-style
 | |
| // license that can be found in the LICENSE file.
 | |
| 
 | |
| package hyperdual_test
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"gonum.org/v1/gonum/num/hyperdual"
 | |
| )
 | |
| 
 | |
| func ExampleNumber_fike() {
 | |
| 	// Calculate the value and first and second derivatives
 | |
| 	// of the function e^x/(sqrt(sin(x)^3 + cos(x)^3)).
 | |
| 	fn := func(x hyperdual.Number) hyperdual.Number {
 | |
| 		return hyperdual.Mul(
 | |
| 			hyperdual.Exp(x),
 | |
| 			hyperdual.Inv(hyperdual.Sqrt(
 | |
| 				hyperdual.Add(
 | |
| 					hyperdual.PowReal(hyperdual.Sin(x), 3),
 | |
| 					hyperdual.PowReal(hyperdual.Cos(x), 3)))))
 | |
| 	}
 | |
| 
 | |
| 	v := fn(hyperdual.Number{Real: 1.5, E1mag: 1, E2mag: 1})
 | |
| 	fmt.Printf("v=%.4f\n", v)
 | |
| 	fmt.Printf("fn(1.5)=%.4f\nfn'(1.5)=%.4f\nfn''(1.5)=%.4f\n", v.Real, v.E1mag, v.E1E2mag)
 | |
| 
 | |
| 	// Output:
 | |
| 	//
 | |
| 	// v=(4.4978+4.0534ϵ₁+4.0534ϵ₂+9.4631ϵ₁ϵ₂)
 | |
| 	// fn(1.5)=4.4978
 | |
| 	// fn'(1.5)=4.0534
 | |
| 	// fn''(1.5)=9.4631
 | |
| }
 | 
