我试图找到函数的根(即曲线交叉的地方):
def f1(x):
return np.cos(2 * np.pi * x) * np.exp(-x ** 2)
def f2(x):
return np.log(x + 2.2)
从查看这两个函数的图表我知道有两个根,其中-2&lt; x&lt; 2但我希望根> 0.5> x> 0(另一个根出现在x <0)
我做了一些研究,似乎scipy.optimize.brentq用于查找函数的根,但我不知道如何为两个函数的根执行它。
有什么建议吗?
答案 0 :(得分:2)
以我的拙见,最简单的方法是定义新功能,例如:
def difference(x):
return f1(x)-f2(x)
然后使用scipy.optimize.brentq
答案 1 :(得分:0)
使用lambda创建一个新函数,将值(x)传递给两个函数并减去它们并返回结果
import UIKit
import Firebase
import GoogleSignIn
class ViewController: UIViewController, GIDSignInUIDelegate, GIDSignInDelegate {
@IBOutlet weak var txtPassword: UITextField!
@IBOutlet weak var txtEmail: UITextField!
@IBOutlet weak var txtAuthStatus: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self
if let user = Auth.auth().currentUser {
self.txtAuthStatus.text = "Signed in as " + user.email!;
}
else {
self.txtAuthStatus.text = "";
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
print(error.localizedDescription)
return
}
try! Auth.auth().signOut()
}
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
print(error.localizedDescription)
return
}
let authentication = user.authentication
let credential = GoogleAuthProvider.credential(withIDToken: (authentication?.idToken)!, accessToken: (authentication?.accessToken)!)
Auth.auth().signIn(with: credential, completion: { (user, error) in
if error != nil {
print(error?.localizedDescription as Any)
return
}
print("User logged in with Google")
})
}
@IBAction func btnCreateUser(_ sender: Any) {
if let email:String = txtEmail.text, let pass:String = txtPassword.text {
Auth.auth().createUser(withEmail: email, password: pass) {
(user, error) in
if let error = error {
let errCode = AuthErrorCode(rawValue: error._code);
if (errCode == .emailAlreadyInUse) {
self.txtAuthStatus.text = "Error: user already exists";
} else {
self.txtAuthStatus.text = error.localizedDescription;
}
}
if let user = user {
self.txtAuthStatus.text = "Signed in as " + user.email!
self.txtEmail.text = nil;
self.txtPassword.text = nil;
}
}
}
}
@IBAction func btnSignIn(_ sender: Any) {
if let email:String = txtEmail.text, let pass:String = txtPassword.text {
Auth.auth().signIn(withEmail: email, password: pass) {
(user, error) in
if let error = error {
let errCode = AuthErrorCode(rawValue: error._code);
if (errCode == .userNotFound) {
self.txtAuthStatus.text = "Error: user not found";
}
else if (errCode == .wrongPassword) {
self.txtAuthStatus.text = "Error: wrong password";
}
else if (errCode == .userDisabled) {
self.txtAuthStatus.text = "Error: user account disabled";
}
else {
self.txtAuthStatus.text = error.localizedDescription;
}
}
if let user = user {
self.txtAuthStatus.text = "Signed in as " + user.email!
self.txtEmail.text = nil;
self.txtPassword.text = nil;
self.performSegue(withIdentifier: "signin", sender: self)
}
}
}
}
@IBAction func btnSignOut(_ sender: Any) {
try! Auth.auth().signOut();
self.txtAuthStatus.text = "Signed out";
}
}