Resolución numérica de una ecuación potencial exponencial

seen from Malaysia

seen from United Kingdom
seen from China
seen from Russia
seen from United States

seen from United States
seen from Portugal

seen from Australia
seen from United States

seen from Brazil
seen from Saudi Arabia
seen from China
seen from United States

seen from United States
seen from Ireland
seen from Türkiye
seen from United States
seen from United Kingdom

seen from United States

seen from United States
Resolución numérica de una ecuación potencial exponencial

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
You know it is.
Particularly the Newton-Raphson method. It's so good.
Tarea 01: Derivadas y optimización
Tarea 01: Derivadas y optimización body, td { font-family: sans-serif; background-color: white; font-size: 12px; margin: 8px; } tt, code, pre { font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace; } h1 { font-size:2.2em; } h2 { font-size:1.8em; } h3 { font-size:1.4em; } h4 { font-size:1.0em; } h5 { font-size:0.9em; } h6 { font-size:0.8em; } a:visited { color: rgb(50%, 0%, 50%); } pre { margin-top: 0; max-width: 95%; border: 1px solid #ccc; white-space: pre-wrap; } pre code { display: block; padding: 0.5em; } code.r, code.cpp { background-color: #F8F8F8; } table, td, th { border: none; } blockquote { color:#666666; margin:0; padding-left: 1em; border-left: 0.5em #EEE solid; } hr { height: 0px; border-bottom: none; border-top-width: thin; border-top-style: dotted; border-top-color: #999999; } @media print { * { background: transparent !important; color: black !important; filter:none !important; -ms-filter: none !important; } body { font-size:12pt; max-width:100%; } a, a:visited { text-decoration: underline; } hr { visibility: hidden; page-break-before: always; } pre, blockquote { padding-right: 1em; page-break-inside: avoid; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page :left { margin: 15mm 20mm 15mm 10mm; } @page :right { margin: 15mm 10mm 15mm 20mm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } pre .operator, pre .paren { color: rgb(104, 118, 135) } pre .literal { color: rgb(88, 72, 246) } pre .number { color: rgb(0, 0, 205); } pre .comment { color: rgb(76, 136, 107); } pre .keyword { color: rgb(0, 0, 255); } pre .identifier { color: rgb(0, 0, 0); } pre .string { color: rgb(3, 106, 7); } var hljs=new function(){function m(p){return p.replace(/&/gm,"&").replace(/"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(x,y,v){if(x.compiled){return}var u;var s=[];if(x.k){x.lR=f(y,x.l||hljs.IR,true);for(var w in x.k){if(!x.k.hasOwnProperty(w)){continue}if(x.k[w] instanceof Object){u=x.k[w]}else{u=x.k;w="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}x.k[r]=[w,u[r]];s.push(r)}}}if(!v){if(x.bWK){x.b="\\b("+s.join("|")+")\\s"}x.bR=f(y,x.b?x.b:"\\B|\\b");if(!x.e&&!x.eW){x.e="\\B|\\b"}if(x.e){x.eR=f(y,x.e)}}if(x.i){x.iR=f(y,x.i)}if(x.r===undefined){x.r=1}if(!x.c){x.c=[]}x.compiled=true;for(var t=0;t<x.c.length;t++){if(x.c[t]=="self"){x.c[t]=x}q(x.c[t],y,false)}if(x.starts){q(x.starts,y,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].dM,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function q(r,M){for(var L=0;L<M.c.length;L++){if((M.c[L].bR.exec(r)||[null])[0]==r){return M.c[L]}}}function v(L,r){if(D[L].e&&D[L].eR.test(r)){return 1}if(D[L].eW){var M=v(L-1,r);return M?M+1:0}return 0}function w(r,L){return L.i&&L.iR.test(r)}function K(N,O){var M=[];for(var L=0;L<N.c.length;L++){M.push(N.c[L].b)}var r=D.length-1;do{if(D[r].e){M.push(D[r].e)}r--}while(D[r+1].eW);if(N.i){M.push(N.i)}return f(O,M.join("|"),true)}function p(M,L){var N=D[D.length-1];if(!N.t){N.t=K(N,E)}N.t.lastIndex=L;var r=N.t.exec(M);return r?[M.substr(L,r.index-L),r[0],false]:[M.substr(L),"",true]}function z(N,r){var L=E.cI?r[0].toLowerCase():r[0];var M=N.k[L];if(M&&M instanceof Array){return M}return false}function F(L,P){L=m(L);if(!P.k){return L}var r="";var O=0;P.lR.lastIndex=0;var M=P.lR.exec(L);while(M){r+=L.substr(O,M.index-O);var N=z(P,M);if(N){x+=N[1];r+='<span class="'+N[0]+'">'+M[0]+""}else{r+=M[0]}O=P.lR.lastIndex;M=P.lR.exec(L)}return r+L.substr(O,L.length-O)}function J(L,M){if(M.sL&&e[M.sL]){var r=d(M.sL,L);x+=r.keyword_count;return r.value}else{return F(L,M)}}function I(M,r){var L=M.cN?'<span class="'+M.cN+'">':"";if(M.rB){y+=L;M.buffer=""}else{if(M.eB){y+=m(r)+L;M.buffer=""}else{y+=L;M.buffer=r}}D.push(M);A+=M.r}function G(N,M,Q){var R=D[D.length-1];if(Q){y+=J(R.buffer+N,R);return false}var P=q(M,R);if(P){y+=J(R.buffer+N,R);I(P,M);return P.rB}var L=v(D.length-1,M);if(L){var O=R.cN?"":"";if(R.rE){y+=J(R.buffer+N,R)+O}else{if(R.eE){y+=J(R.buffer+N,R)+O+m(M)}else{y+=J(R.buffer+N+M,R)+O}}while(L>1){O=D[D.length-2].cN?"":"";y+=O;L--;D.length--}var r=D[D.length-1];D.length--;D[D.length-1].buffer="";if(r.starts){I(r.starts,"")}return R.rE}if(w(M,R)){throw"Illegal"}}var E=e[B];var D=[E.dM];var A=0;var x=0;var y="";try{var s,u=0;E.dM.buffer="";do{s=p(C,u);var t=G(s[0],s[1],s[2]);u+=s[0].length;if(!t){u+=s[1].length}}while(!s[2]);if(D.length>1){throw"Illegal"}return{r:A,keyword_count:x,value:y}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:m(C)}}else{throw H}}}function g(t){var p={keyword_count:0,r:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.r>r.keyword_count+r.r){r=s}if(s.keyword_count+s.r>p.keyword_count+p.r){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g," ")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v){y=d(v,x)}else{return}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"";t=p.firstChild.firstChild;p.firstChild.cN=s.cN;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.r};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.r}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.ER="(?![\\s\\S])";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.cpp=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1,restrict:1,_Bool:1,complex:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};return{dM:{k:a,i:"</",c:[hljs.CLCM,hljs.CBLCLM,hljs.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},hljs.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:a,r:10,c:["self"]}]}}}();hljs.LANGUAGES.r={dM:{c:[hljs.HCM,{cN:"number",b:"\\b0[xX][0-9a-fA-F]+[Li]?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+(?:[eE][+\\-]?\\d*)?L\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+\\.(?!\\d)(?:i\\b)?",e:hljs.IMMEDIATE_RE,r:1},{cN:"number",b:"\\b\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"keyword",b:"(?:tryCatch|library|setGeneric|setGroupGeneric)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\.",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\d+(?![\\w.])",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\b(?:function)",e:hljs.IMMEDIATE_RE,r:2},{cN:"keyword",b:"(?:if|in|break|next|repeat|else|for|return|switch|while|try|stop|warning|require|attach|detach|source|setMethod|setClass)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"literal",b:"(?:NA|NA_integer_|NA_real_|NA_character_|NA_complex_)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"literal",b:"(?:NULL|TRUE|FALSE|T|F|Inf|NaN)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"identifier",b:"[a-zA-Z.][a-zA-Z0-9._]*\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"<\\-(?!\\s*\\d)",e:hljs.IMMEDIATE_RE,r:2},{cN:"operator",b:"\\->|<\\-",e:hljs.IMMEDIATE_RE,r:1},{cN:"operator",b:"%%|~",e:hljs.IMMEDIATE_RE},{cN:"operator",b:">=|<=|==|!=|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||\\$|:",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"%",e:"%",i:"\\n",r:1},{cN:"identifier",b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"paren",b:"[[({\\])}]",e:hljs.IMMEDIATE_RE,r:0}]}}; hljs.initHighlightingOnLoad();
Tarea 01: Derivadas y optimización
Solución de derivadas con R
Una de las ventajas de R es encontrar una solución analítica para derivadas comunes mediante lenguaje simbólico. La siguiente es una función que debe ser corrida antes:
mi.derivada <- function(funcion.matematica, var) { temp <- substitute(funcion.matematica) name <- deparse(substitute(var)) D(temp, name) }
Por ejemplo, la solución para la función:
\[ f(X) = aX^b \]
es la siguiente:
\[ f(X)' = abX^{b-1} \]
Para comprobar se debe ejecutar la siguiente instrucción
mi.derivada(a * X^b, X)
## a * (X^(b - 1) * b)
A usted se le pide obtener la derivada de las siguientes funciones: \[ f(x)=(x^2+5x)^3 \] \[ f(x)=exp(x^2) \] \[ f(x)=k*(1-x^q) \] \[ f(x)=log(1-x)^2 \] \[ f(x)=k*exp(-k*x) \] \[ f(x)=(1-exp(-k*x)) \] \[ f(x)=a*x*exp(-b*x) \] \[ f(x)=a*(1-exp(-(b*(x-c))))^3 \]
Newton-Raphson
Uno de los métodos más utilizados para buscar la solución numérica de derivativas es la formula de Newton-Raphson, que está representado por: \[ X_{i+1}=X_{i} - f(X)'/f(X)'' \] donde \( X_{i+1} \) es el valor de X actualizado, el subíndice \( i \) denota iteración, \( f(X)' \) es la primera derivada de la función y \( f(X)'' \) es la segunda derivada de la función.
Ejemplo
Se pide buscar el valor de X que minimiza la siguiente función \( f(x)=exp(-x)+x^4 \).
# Se escribe la función f <- function(x) { exp(-x) + x^4 } # Esta función tiene la siguiente forma: curve(f, from = -1, to = 3)
Sabemos que la primera derivada de la función es \( f(x)= -exp(-x)+4*x^3 \), y que la segunda derivada es \( f(x)''=exp(-x)+12*x^2 \).
Para buscar la solución, aplicamos Newton-Raphson en R:
# Primera y segunda derivada de la función: fprima <- function(x) -exp(-x) + 4 * x^3 fprima2 <- function(x) exp(-x) + 12 * x^2 # Para la solución con 6 iteraciones se necesita evaluar la funcion en # cada valor de x (se comienza con x=1), i.e., x <- c(1, rep(NA, 6)) feval <- rep(NA, 7) fprimaeval <- rep(NA, 7) fprimaeval2 <- rep(NA, 7) # Se realizan 6 iteraciones: for (i in 1:6) { feval[i] <- f(x[i]) fprimaeval[i] <- fprima(x[i]) fprimaeval2[i] <- fprima2(x[i]) x[i + 1] <- x[i] - fprimaeval[i]/fprimaeval2[i] } data.frame(x, feval, fprimaeval, fprimaeval2)
## x feval fprimaeval fprimaeval2 ## 1 1.0000 1.3679 3.632e+00 12.368 ## 2 0.7063 0.7424 9.161e-01 6.480 ## 3 0.5650 0.6703 1.529e-01 4.399 ## 4 0.5302 0.6675 7.678e-03 3.962 ## 5 0.5283 0.6675 2.276e-05 3.938 ## 6 0.5283 0.6675 2.019e-10 3.938 ## 7 0.5283 NA NA NA
Se pude observar que la solución es \( x=0.5283 \).
A usted se le pide encontrar el máximo rendimiento sostenido para una pesquería, sabiendo que la función de rendimiento es:
\[ f(x)=100*x-10*x^2 \]
Es una función cuadrática, i.e,
f <- function(x) { 100 * x - 10 * x^2 } curve(f, from = 0, to = 10)
A usted se le pide que busque la primera y segunda derivada, y encuentre el valor de x que maximiza la función con el método de Newton-Raphson.
Instrucciones
Trabaje en RStudio, script Markdown y entre los resultados (archivo *.Rmd) por email. No se olvide de incluir su nombre.
Curso Herramientas Cuantitativas en Ecología
Luis A. Cubillos
Biólogo Pesquero
blog: HCE
blog: code4fisheries
twitter: @LuisCubillos
Implied Volatility - Implementation
Question:
What is implied volatility? Write an implementation for calculating the implied volatility of an option.
Solution:
Implied Volatility:
Implied Volatility is obtained by plugging in quoted option price into Black-Scholes formula or your option pricing formula to solve for volatility. We can look at implied volatility as the volatility in the underlying as implied by the option prices - a market view or perceived future volatility of the underlying.
More theory on the relation between Implied Volatility and Option Prices
Implementation:
This implementation is part of the COptionPricingBlackScholes class, the rest of which can be found at Option Pricing Black Scoles
// Implied Volatility Calculation - Newton-Raphson method // // COptionPricingBlackScholes::GetImpliedVol // Calculates the Implied Volatility of an option using Newton-Raphson method // // Input Parameters: // OptionType - The type of option we are trying to find the IV for // Asset - Asset Price // Premium - Option Quoted Premimum // DivYld - Asset Dividend Yield // IntRate - Risk-free Interest Rate // Strike - Option Strike // Expiry - Option Expiry // Seed - Initial Seed for Implied Volatility // Precision - The acceptable difference from the Quoted Premium // MaxSteps - Numner of Iterations to perform // // Output Parameters: // Vol - Implied Volatility from the calculations // // Return Values: // True - If the Volatility Calculation Converges // False - IF the Volatility Calclulation doesn't converge // for the given steps and precision // // BOOLEAN COptionPricingBlackScholes::GetImpliedVol( __in OPTION_TYPE OptionType, __in DOUBLE Asset, __in DOUBLE Premium, __in DOUBLE DivYld, __in DOUBLE IntRate, __in DOUBLE Strike, __in DOUBLE Expiry, __in DOUBLE Seed, __in DOUBLE Precision, __out DOUBLE &Vol, __in ULONG MaxSteps ) { BOOLEAN bConverged = true; DOUBLE Err = 1; ULONG NSteps = 0; Vol = Seed; while (Err > Precision && NSteps++ < MaxSteps) { DOUBLE BSPrice = GetOptionValue(OptionType, Asset, Vol, DivYld, IntRate, Strike, Expiry); Err = BSPrice - Premium; DOUBLE Vega = GetOptionVega(OptionType, Asset, Vol, DivYld, IntRate, Strike, Expiry); Vol = Vol - Err/Vega; } if (Err > Precision) { bConverged = false; } return bConverged; }
4:02 AM
Still awake, solving our ChE 106 probset all night. 3/5 done! Yay! :) I was already feeling productive until I got stuck at Newton Raphson's Method for Simultaneous Nonlinear Equations which I thought would be the easiest one. :| I just don't quite get it right now. :((
For the meantime, Tumblrin' first to reward myself. :D

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming