Hi all, I'm a senior undergraduate in US. My direction is in applied math and numerical analysis so I want to contribute to our suborg this year :) This is my first time to apply for GSoC. As I mentioned above, I've already had some background in related math and I have some experience in solving PDEs numerically with classical schemes. In the ideas list, I'm more interested in "implement scipy.diff (numerical differentiation)" and "improve the parabolic cylinder functions". For programming languages, I'm a intermediate learner in Python, MATLAB and R, also having some skills in C/C++. If anyone can give me some tips in the requirements of these two projects and proposal writing I'll be very appreciate, and if you have suggestions in choosing projects or developing ideas please let me know. Thanks! Best, Qianhui Qianhui Wan, senior Fall 2016 - Spring 2017, visiting, Math Department, University of Wisconsin, Madison, US Spring 2016, visiting, Math Department, University of California, Berkeley, US Fall 2013 - Spring 2017, Math School, Sun Yat-sen University, Guangzhou, China
Hi Qianhui, I'm Matt; I'll be co-mentoring the scipy.diff project if a proposal is selected, so my answer is geared towards that. It seems that you have found https://github.com/scipy/scipy/wiki/GSoC-2017-project-ideas as you wrote "implement scipy.diff (numerical differentiation)". If you haven't already followed the recommended reading links, I would continue with those. Read carefully, researching things you're not familiar with. I suggest that you adopt the liberal interpretation of 'numerical differentiation' - the evaluation of the numerical values of derivatives - rather than the more restrictive definition of 'finite differences'. Please research and consider the pros and cons of the various methods of evaluating the numerical values of derivatives, including automatic differentiation and complex step methods. Before writing a proposal, consider the following: What are some common applications that require numerical derivatives, what differentiation methods are most suitable for these applications, and how does that information suggest what capabilities scipy.diff should have? What algorithms can you find (in academic literature and textbooks), and under what determines which is best for a particular application? Which can you hope to implement, given constraints on time and expertise? (Your mentors may not be differentiation experts - I am not - so you might have to find answers about complicated algorithms on your own!) What existing code can you draw from, and what shortcomings of that code will you need to address? (Check bug reports, for example.) With all that in mind, synthesize a schedule for creating the most useful scipy.diff in the time you'll have available, and outline a path for future work. I'll say that I'm particularly interested in derivatives for nonlinear programming, especially for solving optimal control problems using direct methods. In particular, I have Python code for evaluating the objective function and constraints, and accurate derivates can greatly improve convergence rates, so automatic differentiation (AD) is the natural choice. However, other applications may have black box functions, in which case AD is not an option. Are there situations in which AD is not possible but complex step methods can be used and would outperform (real) finite differences? You can find more general thoughts about writing good GSoC proposals online; I but these are the things that come to my mind when I think about a scipy.diff proposal. Matt On Sat, Mar 18, 2017 at 7:32 PM, Qianhui Wan <stellamberv@gmail.com> wrote:
Hi all,
I'm a senior undergraduate in US. My direction is in applied math and numerical analysis so I want to contribute to our suborg this year :) This is my first time to apply for GSoC.
As I mentioned above, I've already had some background in related math and I have some experience in solving PDEs numerically with classical schemes. In the ideas list, I'm more interested in "implement scipy.diff (numerical differentiation)" and "improve the parabolic cylinder functions". For programming languages, I'm a intermediate learner in Python, MATLAB and R, also having some skills in C/C++.
If anyone can give me some tips in the requirements of these two projects and proposal writing I'll be very appreciate, and if you have suggestions in choosing projects or developing ideas please let me know. Thanks!
Best, Qianhui
Qianhui Wan, senior Fall 2016 - Spring 2017, visiting, Math Department, University of Wisconsin, Madison, US Spring 2016, visiting, Math Department, University of California, Berkeley, US Fall 2013 - Spring 2017, Math School, Sun Yat-sen University, Guangzhou, China
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org https://mail.scipy.org/mailman/listinfo/scipy-dev
-- Matt Haberland Assistant Adjunct Professor in the Program in Computing Department of Mathematics 7620E Math Sciences Building, UCLA
On Thu, Mar 23, 2017 at 11:35 AM, Matt Haberland <haberland@ucla.edu> wrote:
Hi Qianhui,
I'm Matt; I'll be co-mentoring the scipy.diff project if a proposal is selected, so my answer is geared towards that.
It seems that you have found https://github.com/ scipy/scipy/wiki/GSoC-2017-project-ideas as you wrote "implement scipy.diff (numerical differentiation)". If you haven't already followed the recommended reading links, I would continue with those. Read carefully, researching things you're not familiar with.
I suggest that you adopt the liberal interpretation of 'numerical differentiation' - the evaluation of the numerical values of derivatives - rather than the more restrictive definition of 'finite differences'. Please research and consider the pros and cons of the various methods of evaluating the numerical values of derivatives, including automatic differentiation and complex step methods.
I agree with the sentiment of looking at the big picture of differentiation methods first, but the discussion around https://github.com/scipy/ scipy/issues/2035#issuecomment-23638210 converged on automatic differentiation not being a priority. So I suggest quickly focusing on a finite differences / complex step approximation method. Note that complex-step is more or less a separate flavor of finite differences rather than a separate category of methods, and numdifftools does include it. Ralf
Before writing a proposal, consider the following: What are some common applications that require numerical derivatives, what differentiation methods are most suitable for these applications, and how does that information suggest what capabilities scipy.diff should have? What algorithms can you find (in academic literature and textbooks), and under what determines which is best for a particular application? Which can you hope to implement, given constraints on time and expertise? (Your mentors may not be differentiation experts - I am not - so you might have to find answers about complicated algorithms on your own!) What existing code can you draw from, and what shortcomings of that code will you need to address? (Check bug reports, for example.) With all that in mind, synthesize a schedule for creating the most useful scipy.diff in the time you'll have available, and outline a path for future work.
I'll say that I'm particularly interested in derivatives for nonlinear programming, especially for solving optimal control problems using direct methods. In particular, I have Python code for evaluating the objective function and constraints, and accurate derivates can greatly improve convergence rates, so automatic differentiation (AD) is the natural choice. However, other applications may have black box functions, in which case AD is not an option. Are there situations in which AD is not possible but complex step methods can be used and would outperform (real) finite differences?
You can find more general thoughts about writing good GSoC proposals online; I but these are the things that come to my mind when I think about a scipy.diff proposal.
Matt
On Sat, Mar 18, 2017 at 7:32 PM, Qianhui Wan <stellamberv@gmail.com> wrote:
Hi all,
I'm a senior undergraduate in US. My direction is in applied math and numerical analysis so I want to contribute to our suborg this year :) This is my first time to apply for GSoC.
As I mentioned above, I've already had some background in related math and I have some experience in solving PDEs numerically with classical schemes. In the ideas list, I'm more interested in "implement scipy.diff (numerical differentiation)" and "improve the parabolic cylinder functions". For programming languages, I'm a intermediate learner in Python, MATLAB and R, also having some skills in C/C++.
If anyone can give me some tips in the requirements of these two projects and proposal writing I'll be very appreciate, and if you have suggestions in choosing projects or developing ideas please let me know. Thanks!
Best, Qianhui
Qianhui Wan, senior Fall 2016 - Spring 2017, visiting, Math Department, University of Wisconsin, Madison, US Spring 2016, visiting, Math Department, University of California, Berkeley, US Fall 2013 - Spring 2017, Math School, Sun Yat-sen University, Guangzhou, China
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org https://mail.scipy.org/mailman/listinfo/scipy-dev
-- Matt Haberland Assistant Adjunct Professor in the Program in Computing Department of Mathematics 7620E Math Sciences Building, UCLA
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org https://mail.scipy.org/mailman/listinfo/scipy-dev
Hi Matt and Ralf, Thanks so much for your help and tips, now I've finished my draft proposal. Hope that you can give some comments to it. Here is the link: https://docs.google.com/document/d/1jYv4NTyZznT8DscyvYlfSt9eyzi-ytk1ANQOV6U7... Thanks, Qianhui Qianhui Wan, senior Fall 2016 - Spring 2017, visiting, Math Department, University of Wisconsin, Madison, US Spring 2016, visiting, Math Department, University of California, Berkeley, US Fall 2013 - Spring 2017, Math School, Sun Yat-sen University, Guangzhou, China 2017-03-26 2:55 GMT-05:00 Ralf Gommers <ralf.gommers@gmail.com>:
On Thu, Mar 23, 2017 at 11:35 AM, Matt Haberland <haberland@ucla.edu> wrote:
Hi Qianhui,
I'm Matt; I'll be co-mentoring the scipy.diff project if a proposal is selected, so my answer is geared towards that.
It seems that you have found https://github.com/scipy /scipy/wiki/GSoC-2017-project-ideas as you wrote "implement scipy.diff (numerical differentiation)". If you haven't already followed the recommended reading links, I would continue with those. Read carefully, researching things you're not familiar with.
I suggest that you adopt the liberal interpretation of 'numerical differentiation' - the evaluation of the numerical values of derivatives - rather than the more restrictive definition of 'finite differences'. Please research and consider the pros and cons of the various methods of evaluating the numerical values of derivatives, including automatic differentiation and complex step methods.
I agree with the sentiment of looking at the big picture of differentiation methods first, but the discussion around https://github.com/scipy/scipy/issues/2035#issuecomment-23638210 converged on automatic differentiation not being a priority. So I suggest quickly focusing on a finite differences / complex step approximation method.
Note that complex-step is more or less a separate flavor of finite differences rather than a separate category of methods, and numdifftools does include it.
Ralf
Before writing a proposal, consider the following: What are some common applications that require numerical derivatives, what differentiation methods are most suitable for these applications, and how does that information suggest what capabilities scipy.diff should have? What algorithms can you find (in academic literature and textbooks), and under what determines which is best for a particular application? Which can you hope to implement, given constraints on time and expertise? (Your mentors may not be differentiation experts - I am not - so you might have to find answers about complicated algorithms on your own!) What existing code can you draw from, and what shortcomings of that code will you need to address? (Check bug reports, for example.) With all that in mind, synthesize a schedule for creating the most useful scipy.diff in the time you'll have available, and outline a path for future work.
I'll say that I'm particularly interested in derivatives for nonlinear programming, especially for solving optimal control problems using direct methods. In particular, I have Python code for evaluating the objective function and constraints, and accurate derivates can greatly improve convergence rates, so automatic differentiation (AD) is the natural choice. However, other applications may have black box functions, in which case AD is not an option. Are there situations in which AD is not possible but complex step methods can be used and would outperform (real) finite differences?
You can find more general thoughts about writing good GSoC proposals online; I but these are the things that come to my mind when I think about a scipy.diff proposal.
Matt
On Sat, Mar 18, 2017 at 7:32 PM, Qianhui Wan <stellamberv@gmail.com> wrote:
Hi all,
I'm a senior undergraduate in US. My direction is in applied math and numerical analysis so I want to contribute to our suborg this year :) This is my first time to apply for GSoC.
As I mentioned above, I've already had some background in related math and I have some experience in solving PDEs numerically with classical schemes. In the ideas list, I'm more interested in "implement scipy.diff (numerical differentiation)" and "improve the parabolic cylinder functions". For programming languages, I'm a intermediate learner in Python, MATLAB and R, also having some skills in C/C++.
If anyone can give me some tips in the requirements of these two projects and proposal writing I'll be very appreciate, and if you have suggestions in choosing projects or developing ideas please let me know. Thanks!
Best, Qianhui
Qianhui Wan, senior Fall 2016 - Spring 2017, visiting, Math Department, University of Wisconsin, Madison, US Spring 2016, visiting, Math Department, University of California, Berkeley, US Fall 2013 - Spring 2017, Math School, Sun Yat-sen University, Guangzhou, China
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org https://mail.scipy.org/mailman/listinfo/scipy-dev
-- Matt Haberland Assistant Adjunct Professor in the Program in Computing Department of Mathematics 7620E Math Sciences Building, UCLA
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@scipy.org https://mail.scipy.org/mailman/listinfo/scipy-dev
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
participants (3)
-
Matt Haberland -
Qianhui Wan -
Ralf Gommers