text:
# Fight Finance

#### CoursesTagsRandomAllRecentScores

A text book publisher is thinking of asking some teachers to write a new textbook at a cost of $100,000, payable now. The book would be written, printed and ready to sell to students in 2 years. It will be ready just before semester begins. A cash flow of$100 would be made from each book sold, after all costs such as printing and delivery. There are 600 students per semester. Assume that every student buys a new text book. Remember that there are 2 semesters per year and students buy text books at the beginning of the semester.

Assume that text book publishers will sell the books at the same price forever and that the number of students is constant.

If the discount rate is 8% pa, given as an effective annual rate, what is the NPV of the project?

format: plain


text:
Darvish works on throwing strikes in 'pen session

Darvish works on throwing strikes in 'pen session

SAN FRANCISCO -- Yu Darvish threw the first of two bullpen sessions on Sunday. He will have a second one either Tuesday or Wednesday in preparation for his next start on Friday against the Astros.

The Rangers pushed Darvish back three days in the rotation to give him extra rest. It also gives him an extra session in the bullpen to work on some things. Pitching coach Mike Maddux said the goal on Sunday was to work on throwing strikes.

"It's that simple," Maddux said. "His good games ... he doesn't give up many hits. His batting average against is really good. We just can't let one hit give up three runs. He has such good swing-and-miss stuff, we just have to get him in counts where they have to swing."

Darvish, who threw 27 pitches in his bullpen, has allowed 8.17 hits per nine innings, the 15th-best ratio in the American League. But his 5.45 walks per nine innings is the third highest.

He also averages 9.54 strikeouts per nine innings, third highest in the league. But his 1.75 strikeout-to-walk ratio ranks 40th among 51 qualifying pitchers. Colby Lewis ranks No. 1 with 6.7 strikeouts per walk.


text:
What makes radians superior to turns/revolutions?

1. THE CONTEXT OF THE PROBLEM

This question came to me when I was exploring complex exponents. The key identity to computing expressions with complex exponents is the Euler's identity:

$$e^{i\theta}=\cos\theta+i\sin\theta$$

This enables us to compute, for example what $2^i$ is by some algebraic manipulation. The computation is as follows:

$$2^i=e^{\ln2^i}=e^{i\ln2}=\cos\ln2+i\sin\ln2\;\approx\;0.769+0.639i$$

2. THE PROBLEM

A question arises in my head. We compute sines and cosines with radian values. And since $\ln2\approx0.693$ then $\sin\ln 2$ will be the $y$ coordinate of the unit circle when the angle is $0.693$ radians. But if we use turns instead of radians, then $\sin\ln 2$ will be the $y$ coordinate of the unit circle when the angle is $0.693$ turns. So the value of sine when using turns or radians is different. Similarly, the value of cosine is different.

But that creates a problem. When using radians, $2^i$ computes to about $0.769+0.639i$. But when using turns, $2^i$ computes to about $0.994+0.110i$.

3. POSSIBLE IMPLICATIONS

The problem above illustrates that $2^i$ and any expression with complex exponent is a generalisation that directly depends on what units we use for angles.

There are only two possibilities of "the state of truth" that this fact implies. Either complex exponents are a concept completely made up by humans which would mean that expressions like these are really undefined to the code of the universe (we only make it defined because we think that radians are the true angle units), or there must be a unit that is the truest unit for measuring angles, whether that would be radians or something else.

If the first statement is true, then this would mean that we can accept $2^i$ to be $0.769+0.639i$. After all, this concept would be defined by radians only because we defined it like this.

However, if the second statement is true, then there are even more questions to be asked. If there is a "truest" unit for measuring angles then what is it? Perhaps radians are really the truest unit, meaning that $2^i$ is unambiguously $0.769+0.639i$, but if so, what justifies this fact? What makes radians truer than turns?

• there is no truest angle measure. Recommend Hartshorne, Geometry: Euclid and Beyond – Will Jagy May 21 '18 at 1:55
• Note that your step $\ln(2^i) = i \ln(2)$ is generally not correct. If we denote the principal branch of the complex logarithm with $Log(\cdot)$, then $0 = Log(1) = Log((-1)^2) \neq 2 Log(-1) = 2 i \pi$. However, your overall result is still correct because $2^i :=_{\text{per def.}} e^{i Log(2)} = e^{i\, \ln(2)}$ because $Log = \ln$ on the reals. – ComFreek May 21 '18 at 11:32

The actual definition of the complex exponential map is equivalently via an ODE ($f'=f$, $f(0)=1$) or via power series ($f(z)= \sum_{k\geq 0}\frac{z^k}{k!}$).

Similarly, cosine and sine functions are defined via power series above all. If you are to change the way you measure angles and therefore define a new, distorted version of sine and cosine, then the most natural thing to say would be that the Euler formula simply doesn't hold in your new settings. Or you could use it as a new definition for a distorted exponential map, but then what is more important for you: the fact that Euler holds, or the fact that $\exp$ satisfies the above ODE?

All of mathematics rely on the fact that we agree on axioms, language and definitions. How natural these are depend on how beautiful the resulting theorems seem to the trained eye.

• Interpreting $\exp$ and trigonometric functions as a series clears it all at once. Why didn't I think about it before? Thank you for that answer, that's what I was looking for essentially :) – KKZiomek May 21 '18 at 3:01
• @KKZiomek You're welcome. Thank you for this question of a very high quality. – Arnaud Mortier May 21 '18 at 3:05

The main issue here is that Euler's formula is correct for radians only. Your questions are arising from using it with turns instead of radians, but you're starting from a false premise.

Often, the order we learn things isn't equivalent to the most precise mathematical definition of things.

For example, at school we first learn exponentiation with natural exponents, then we generalize for integers and even rationals, but how about irrational exponents, for example? The best path to follow if you're looking for precise math (and that's what I suggest you do here) in this case is to consider the definition of the exponential function as the nonzero function that satisfies the property $f(x+y) = f(x)f(y)$. And then if you go further to complex numbers, you'll see that actually one needs to choose what is called a branch of the logarithm function, and so on.

In fact, $2^i$ can have more than one value, depending on the branch choice, but usually we take the so-called principal branch. Regardless, this is all a set-up to reiterate that if you go to the very definition of complex exponentiation / principal complex logarithm, you'll see that Euler's formula only applies to radians in the first place, so your premise is false.

While Arnaud Mortier provided very good answer, I'd like to make another very simple observation - that you consider blindly changing of the units of only some of the values, but forgot to check&update the formula/constants/etc.

This is a thing you always need to keep track of when dealing with physics, electronics, etc, where it's common to use various units for the same kind of values, and often we keep unit markings all the time (think Ohm: not just 10/0.5=10, but 5V/0.5A => 10Ohm, etc) especially to not forget and mix them up.

I see that you've tried to formalize the question, so forgive me if my answer is too naive or too lax..

But, let's see. For generic typical (planar/Euclid/..) triangle:

$${\alpha}+{\beta}+{\gamma} = {\pi}$$

If I use radians for all input angles, all's fine:

$$\pi/4+\pi+\pi/4 = {\pi}$$

But If I try to use turns or degrees, everything detoriates:

$$45+90+45 = {\pi}$$

That's unless the PI constant adapted to turns/degrees as well.

$$45+90+45 = 180$$

But that's the easy case. Sum is linear operation, so i.e. changing units ("scale", "multiplier", etc) on one side implies need for just changing units on the other side (a+b=c => (kx+ky)=c => x+y=c/k => x+y=z // a=kx,b=ky,c=kz, all units kept same, you may do it "blindly")

In your case, you started to wonder about using turns and degrees in:

$$e^{i\theta}=\cos\theta+i\sin\theta$$

but:

• first of all, there are some constants (e, i) and you have not even tried to update them to new units
• more importantly, some of the operations are not linear (exponent), hence units will not "just transfer to the other side"

This just reminds us to keep the formula up-to-date with our assumptions. Now, if we keep the units in mind, we might update the formula:

$$e^{i(\theta/2\pi)}=\cos(\theta/2\pi)+i\sin(\theta/2\pi)$$

which would work on turns.. I suppose that's pretty obvious and simplistic, but that's because I chose the simplest possible adaptation, just because I wanted to show the point why units matter.

Another thing I just noticed, you've said about the sine/cosine:

sin(ln2) will be the y coordinate of the unit circle when the angle is 0.693 radians. But if we use turns instead of radians, then sin(ln2) will be the y coordinate of the unit circle when the angle is 0.693 turns

IMHO, again, dropping units forced you into error.

If we define sin/cos in terms of abstract numerics, we often conventionally use radians. However, at least in my country, in primary school, concept of "pi" and "radian" is a bit too much, so they use degrees (0°-360°) and sin/cos are defined in terms of degrees (a.k.a "deg scale"), so sin(0) = sin(180) = sin(360) = 0, sin(90)=1, etc.

Note how that's ambigous to other readers? If I didn't state it explicitly, the 360 could be as well read as radians? It's easy to tell that 360 is probably degrees, but how about 1.123?

If we now truly keep units in mind, I should have written it unambiguosly, something like: sin(0°) = sin(180°) = sin(360°) = 0, sin(90°)=1, etc - if I assumed sin/cos to be defined in degs.

On the other hand, if I assumed sin/cos to be defined in rads, then I would have to translate all constants accordingly (0,π,2π,π/2), or "update the formula" and write sin(0°/(360°/2π)) = sin(180°/(360°/2π)) = sin(360°/(360°/2π)) = 0, because now passing a degree, or turn, would be out of its defined domain..

• If I'm not mistaken, "grad" scale is a rarely-used scale for angles which go from 0 to 100 instead of 0 to 360. I believe you mean "deg" instead of "grad". In my calculator, I have the three options, "deg", "rad" and "grad" where "deg" is the 0-360 one and "grad" is one that I never use. – Pedro A May 21 '18 at 22:21
• @Hamsterrific: aiiiiigh, of course, corrected, thank you, I don't know why I came up with "grad" while deg=degree.. probably some ghost memory from similar calculator :) – quetzalcoatl May 21 '18 at 22:22
• Just two notes. 1. Possible typo: 'update then' → 'update them'. 2. You can insert a degree symbol ° instead of an apostrophe by typing Alt+0176 on the numeric keypad (if you are using Windows with a full keyboard) in a plain text or with the LaTeX symbol \circ if you decide to swith to MathJax: \sin(180^\circ) → $\sin(180^\circ)$. – CiaPan May 22 '18 at 6:51
• @CiaPan: many thanks! yes, I often use apostrophe instead of degree, exactly because I'm used to reduced keyboard. Thanks for LaTeX tip! – quetzalcoatl May 22 '18 at 7:03
• @Hamsterrific. Just for clarity, grad has 400 units in a full circle. And, so far as I can see has no benefits, and several drawbacks over degrees or radians. – Alchymist May 22 '18 at 10:48

In some sense, $2^i$ is uniquely defined. If you accept the definition of $2^i= e^{\log(2)i}$, then we could use another definition of $e^x$ to compute the value. For instance, the Maclaurin expansion of $e^x$.

On the other hand, there is no true unit of measurement, but rather we make a choice to make happy coincidences work.

What makes radians truer than turns?

Well, if not truer, how about "more convenient"? In simple differential calculaus?

Draw some random angle. The sine of that angle has some fixed value. But the numerical value of the size of the angle itself will vary, depending on whether you're using degrees, or grads, or radians, or revolutions, or any other niche unit.

So the value of the ratio $$\frac{\sin (\theta)}\theta$$will depend on the units used.

If you carry out this exercise for smaller and smaller angles, this ratio approaches $1$ only if radians are used.

Finally, if you try to apply the fundamental definition for the derivative of a function as a limit to the sine function, this same ratio is left messing up the result. So convenient to just hand-wave it away as equal to $1$.

• Radians are more convenient in some applications, but units of 2pi radians are more practical in others. I'm boggled, for example, why the designers of HTML5 graphics decided that the "rotate" transform should use radians rather than degrees, since it means that any kind of rotation--even 90 degrees--is likely to introduce rounding errors which may become visible if the action is repeated enough times. – supercat May 21 '18 at 22:46

The length of an arc of a circle is $r\theta$ when $\theta$ is measured in radians. This conveniently avoids any conversion factors.

If turns, $\tau$, were used, the length of an arc of a circle would be $2\pi r\tau$, which might be useful somewhere.


text:
#### Vol. 6, No. 5, 2011

 Download this article For screen For printing
 Recent Issues
 The Journal About the Journal Editorial Board Subscriptions Submission Guidelines Submission Form Policies for Authors Ethics Statement ISSN: 1559-3959 Author Index To Appear Other MSP Journals
Study of multiply-layered cylinders made of functionally graded materials using the transfer matrix method

### Y. Z. Chen

Vol. 6 (2011), No. 5, 641–657
##### Abstract

This paper provides a general solution for a multiply-layered cylinder made of functionally graded materials. The Young’s modulus is assumed to be an arbitrary function of $r$, and the Poisson’s ratio takes a constant value. The first step is to study the single-layer case ($a). A transfer matrix is defined, relating the values of radial stress and displacement at the initial point ($r=a$) to those at the end point ($r=b$). The matrix is evaluated on the basis of two fundamental solutions, which are evaluated numerically. The final solution is obtained by using many transfer matrices for layers, continuation conditions between layers, and boundary conditions at inner and outer boundaries. Several numerical examples are provided.

##### Keywords
composites, layered structure, nonlinear behavior, transfer matrix method, strength
##### Milestones
Received: 4 March 2010
Revised: 11 May 2010
Accepted: 12 May 2010
Published: 9 September 2011
##### Authors
 Y. Z. Chen Division of Engineering Mechanics Jiangsu University Xue Fu Road 301 Jiangsu, 212013 China


text:
# Data Model#

Argilla is built around a few simple concepts. This section clarifies what those concepts are. Let’s take a look at Argilla’s data model:

## Dataset#

A dataset is a collection of records of a common type. You can programmatically build datasets with the Argilla client and log them to the web app. In the web app you can dive into your dataset to explore and annotate your records. You can also load your datasets back to the client and export it into various formats, or prepare it for training a model.

## Record#

A record is a data item composed of text inputs and, optionally, predictions and annotations.

Think of predictions as the classification that your system made over that input (for example: ‘Virginia Woolf’), and think of annotations as the ground truth that you manually assign to that input (because you know that, in this case, it would be ‘William Shakespeare’). Records are defined by the type of task they are related to. Let’s see three different examples:

### Examples#

#### Text classification record#

Text classification deals with predicting in which categories a text fits. As if you’re shown an image you could quickly tell if there’s a dog or a cat in it, we build NLP models to distinguish between a Jane Austen’s novel or a Charlotte Bronte’s poem. It’s all about feeding models with labelled examples and seeing how they start predicting over the very same labels.

Let’s see examples of a spam classifier.

record = rg.TextClassificationRecord(
text="Access this link to get free discounts!",

prediction = [('SPAM', 0.8), ('HAM', 0.2)],
prediction_agent = "link or reference to agent",

annotation = "SPAM",
annotation_agent= "link or reference to annotator",

"split": "train"
},
)

#### Multi-label text classification record#

Another similar task to Text Classification, but yet a bit different, is Multi-label Text Classification. Just one key difference: more than one label may be predicted. While in a regular Text Classification task we may decide that the tweet “I can’t wait to travel to Egypts and visit the pyramids” fits into the hastag #Travel, which is accurate, in Multi-label Text Classification we can classify it as more than one hastag, like #Travel #History #Africa #Sightseeing #Desert.

record = rg.TextClassificationRecord(
text="I can't wait to travel to Egypts and visit the pyramids",

multi_label = True,

prediction = [('travel', 0.8), ('history', 0.6), ('economy', 0.3), ('sports', 0.2)],
prediction_agent = "link or reference to agent",

annotation = ['travel', 'history'],
annotation_agent= "link or reference to annotator",
)

#### Token classification record#

Token classification kind-of-tasks are NLP tasks aimed to divide the input text into words, or syllables, and assign certain values to them. Think about giving each word in a sentence its grammatical category, or highlight which parts of a medical report belong to a certain speciality. There are some popular ones like NER or POS-tagging.

record = rg.TokenClassificationRecord(
text = "Michael is a professor at Harvard",
tokens = ["Micheal", "is", "a", "professor", "at", "Harvard"],

# Predictions are a list of tuples with all your token labels and its starting and ending positions
prediction = [('NAME', 0, 7), ('LOC', 26, 33)],
prediction_agent = "link or reference to agent",

# Annotations are a list of tuples with all your token labels and its starting and ending positions
annotation = [('NAME', 0, 7), ('ORG', 26, 33)],
annotation_agent = "link or reference to annotator",

"split": "train"
},
)

#### TextGeneration record#

TextGeneration tasks, like text generation, are tasks where the model receives and outputs a sequence of tokens. Examples of such tasks are machine translation, text summarization, paraphrase generation, etc.

record = rg.TextGenerationRecord(
text = "Michael is a professor at Harvard",

# The prediction is a list of texts or tuples if you want to add a score to a prediction
prediction = ["Michael es profesor en Harvard", "Michael es un profesor de Harvard"],
prediction_agent = "link or reference to agent",

# The annotation a strings representing the expected output text for the given input text
annotation = "Michael es profesor en Harvard"
)

### Annotation#

An annotation is a piece information assigned to a record, a label, token-level tags, or a set of labels, and typically by a human agent.

### Prediction#

A prediction is a piece information assigned to a record, a label or a set of labels and typically by a machine process.


text:
## Abstract and Applied Analysis

### Two New Efficient Iterative Regularization Methods for Image Restoration Problems

#### Abstract

Iterative regularization methods are efficient regularization tools for image restoration problems. The IDR($s$) and LSMR methods are state-of-the-arts iterative methods for solving large linear systems. Recently, they have attracted considerable attention. Little is known of them as iterative regularization methods for image restoration. In this paper, we study the regularization properties of the IDR($s$) and LSMR methods for image restoration problems. Comparative numerical experiments show that IDR($s$) can give a satisfactory solution with much less computational cost in some situations than the classic method LSQR when the discrepancy principle is used as a stopping criterion. Compared to LSQR, LSMR usually produces a more accurate solution by using the $L$-curve method to choose the regularization parameter.

#### Article information

Source
Abstr. Appl. Anal., Volume 2013 (2013), Article ID 129652, 9 pages.

Dates
First available in Project Euclid: 27 February 2014

https://projecteuclid.org/euclid.aaa/1393511953

Digital Object Identifier
doi:10.1155/2013/129652

Mathematical Reviews number (MathSciNet)
MR3073472

Zentralblatt MATH identifier
1371.68315

#### Citation

Zhao, Chao; Huang, Ting-Zhu; Zhao, Xi-Le; Deng, Liang-Jian. Two New Efficient Iterative Regularization Methods for Image Restoration Problems. Abstr. Appl. Anal. 2013 (2013), Article ID 129652, 9 pages. doi:10.1155/2013/129652. https://projecteuclid.org/euclid.aaa/1393511953

#### References

• P. C. Hansen, J. G. Nagy, and D. P. O'Leary, Deblurring Images: Matries, Spectra and Filtering, Society for Industrial and Applied Mathematics, Philadelphia, Pa, USA, 2006.
• R. J. Hanson, “A numerical method for solving Fredholm integral equations of the first kind using singular values,” SIAM Journal on Numerical Analysis, vol. 8, pp. 616–622, 1971.
• P. C. Hansen, Rank-Deficient and Discrete Ill-Posed Problems: Numerical Aspects of Linear Inversion, Society for Industrial and Applied Mathematics, Philadelphia, Pa, USA, 1998.
• Y. Saad, Iterative Methods for Sparse Linear Systems, Society for Industrial and Applied Mathematics, Philadelphia, Pa, USA, 2nd edition, 2003.
• R. Plato, “Optimal algorithms for linear ill-posed problems yield regularization methods,” Numerical Functional Analysis and Optimization, vol. 11, no. 1-2, pp. 111–118, 1990.
• P. C. Hansen, Discrete Inverse Problems: Insight and Algorithms, Society for Industrial and Applied Mathematics, Philadelphia, Pa, USA, 2010.
• D. Calvetti, B. Lewis, and L. Reichel, “On the regularizing properties of the GMRES method,” Numerische Mathematik, vol. 91, no. 4, pp. 605–625, 2002.
• D. Calvetti, B. Lewis, and L. Reichel, “Krylov subspace iterative methods for nonsymmetric discrete ill-posed problems in image restoration,” in Advanced Signal Processing: Algorithms, Architectures and Implementations XI, vol. 4474 of Proceedings of SPIE, pp. 224–233, The International Society for Optical Engineering, Bellingham, Wash, USA, August 2001.
• P. Brianzi, P. Favati, O. Menchi, and F. Romani, “A framework for studying the regularizing properties of Krylov subspace methods,” Inverse Problems, vol. 22, no. 3, pp. 1007–1021, 2006.
• P. Sonneveld and M. B. van Gijzen, “IDR(s): a family of simple and fast algorithms for solving large nonsymmetric systems of linear equations,” SIAM Journal on Scientific Computing, vol. 31, no. 2, pp. 1035–1062, 2008.
• D. C.-L. Fong and M. Saunders, “LSMR: an iterative algorithm for sparse least-squares problems,” SIAM Journal on Scientific Computing, vol. 33, no. 5, pp. 2950–2971, 2011.
• M. B. van Gijzen and P. Sonneveld, “An elegant IDR(s) variant that efficiently exploits bi-orthogonality properties,” Tech. Rep. 08-21, Department of Applied Mathematical Analysis, Delft University of Technology, Delft, The Netherlands, 2008.
• V. Simoncini and D. B. Szyld, “Interpreting IDR as a Petrov-Galerkin method,” SIAM Journal on Scientific Computing, vol. 32, no. 4, pp. 1898–1912, 2010.
• M. Hanke, Conjugate Gradient Type Methods for Ill-Posed Problems, vol. 327 of Pitman Research Notes in Mathematics Series, Longman, Harlow, UK, 1995.
• T. K. Jensen and P. C. Hansen, “Iterative regularization with minimum-residual methods,” BIT, vol. 47, no. 1, pp. 103–120, 2007.
• P. Sonneveld, “On the convergence behaviour of IDR(s),” Tech. Rep. 10-08, Department of Applied Mathematical Analysis, Delft University of Technology, Delft, The Netherlands, 2010.
• M. Donatelli and S. Serra-Capizzano, “On the regularizing power of multigrid-type algorithms,” SIAM Journal on Scientific Computing, vol. 27, no. 6, pp. 2053–2076, 2006.
• M. Donatelli and S. Serra-Capizzano, “Filter factor analysis of an iterative multilevel regularizing method,” Electronic Transactions on Numerical Analysis, vol. 29, pp. 163–177, 2007/08.
• V. A. Morozov, “On the solution of functional equations by the method of regularization,” Soviet Mathematics. Doklady, vol. 7, pp. 414–417, 1966.
• P. C. Hansen, “Analysis of discrete ill-posed problems by means of the \emphL-curve,” SIAM Review, vol. 34, pp. 658–672, 1992.
• G. Wahba, “Practical approximate solutions to linear operator equations when the data are noisy,” SIAM Journal on Numerical Analysis, vol. 14, no. 4, pp. 651–667, 1977.
• I. Hnětynková, M. Plešinger, and Z. Strakoš, “The regularizing effect of the Golub-Kahan iterative bidiagonalization and revealing the noise level in the data,” BIT, vol. 49, no. 4, pp. 669–696, 2009.
• L. Reichel and G. Rodriguez, “Old and new parameter choice rules for discrete ill-posed problems,” Numerical Algorithms, vol. 63, no. 1, pp. 65–87, 2013.
• P. C. Hansen, T. K. Jensen, and G. Rodriguez, “An adaptive pruning algorithm for the discrete \emphL-curve criterion,” Journal of Computational and Applied Mathematics, vol. 198, no. 2, pp. 483–492, 2007.
• P. C. Hansen, “The \emphL-curve and its use in the numerical treatment of inverse problems,” in Computational Inverse Problems in Electrocardiology, P. Johnston, Ed., pp. 119–142, WIT Press, Southampton, Ceremonial, 2001.
• C. R. Vogel, “Non-convergence of the \emphL-curve regularization parameter selection method,” Inverse Problems, vol. 12, no. 4, pp. 535–547, 1996.
• M. Hanke, “Limitations of the \emphL-curve method in ill-posed problems,” BIT, vol. 36, no. 2, pp. 287–301, 1996.
• D. C. L. Fong, Minimum-residual methods for sparse least-squares using golub-kahan bidiagonalization [Ph.D. thesis], Stanford University, Stanford, Calif, USA, 2011.
• P. C. Hansen, “Regularization tools: a Matlab package for analysis and solution of discrete ill-posed problems,” Numerical Algorithms, vol. 6, no. 1-2, pp. 1–35, 1994.


text:
# Dreami's Blog

## Thoughts and notes of a geek

Hi! I’ts been almost 4 years now on this WordPress blog and it’s time to move now. I’m going for hugo, a static site generator, and since all the links break anyway, I chose to move to a new domain.

You can find my new blog at https://blog.lroellin.ch/. For my followers, there’s an RSS option, but you won’t receive anything by email or twitter.

I hope you still read my blog after moving 🙂 thanks!

If you ever come across a hotel TV that only supports Component (the one with 5 cables) but you want to hook up something AV (3 cables), check it out more closely. At our Samsung HG39EB670 it does support AV on the menu, so a close look at the back revealed that the top most jack is for the single picture cable (the yellow one)

I’m currently in the process of learning Python. What I know is Java and C# and some script languages like PowerShell. I want to tell about my journey a bit since you’re getting in a kind of culture shock when going from Java to Python

In Java, the compiler does a great job at keeping you from doing stupid things. In Python, that’s up to you since the script is loaded as needed (not exactly in the technical meaning) and run from top to bottom (again, not exactly technically). And because all that happens quite fast and you don’t spend much time on it, the compiler won’t check such stuff for you before this code is executed.

I found a nice quote about this from The Benevolent Dictator: “We’re all consenting adults”. So it’s your job to keep an eye on what you access and if that’s possible. However keep in mind that IDEs do a great job of telling you these things, but it’s not the default for a Python instalation.

Now for the first thing we’re gonna look at: getter and setter. This will be me paraphrasing this video.

In Java, again, you write a class and put in private attributes. You then write a constructor and public getter and setter for that (ok, your IDE does). This is to stop you from breaking the encapsulation. And if you want to validate something on the setter, then you have a single place to change.

However, how many times did you actually change the setter? For me, coming from C# (which sorta has what I’m gonna show you for Python, Properties), getter and setter are noise in a class. I skip them while reading your class and that means I will skip your validation scheme on one important attribute.

Now the alternative would be to set it all public and when the time comes, change it to a private attribute and a public getter and setter. But now you have to change all client code (code that calls your class) and that can turn into a nightmare, especially if you’re developing a library and now every single piece of code using the updated version has to change. There sure are better methods, tools or frameworks for this, but I currently don’t know any.

In Python, the story is a bit different. You don’t actually declare your attributes, since (what I’ve grasped so far), definition is declaration in Python. So what you’ll do is initialize your parameters in the constructor just so you have a name you can all agree on. Then you’ll just access those attributes from the outside.

Now what if you have to validate your attribute on a later version: well, Python has you covered there. You simply define your attribute as a property, define getter and setter for that, and store the actual attribute as _attribute. The underscore is the convention that others should not touch your attribute. Remember, we’re all consenting adults. Then, no client code needs to be touched (except of course when it now breaks your validation but it’s no syntax error or the like.

How do you do that? Let me close this post with just a bit of code coming straight from StackOverflow

Before

BigX C(object):
def __init__(self):
self.x = None

# Getting and setting
o = BigX
o.x
o.x = 5

After:

class BigX(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
print "getter of x called"
return self._x
@x.setter
def x(self, value):
print "setter of x called"
self._x = value

# Getting and setting
o = BigX
o.x # "getter of x called"
o.x = 5 # "setter of x called"

We’re currently doing a student project which I hope to show off in the future. However, yesterday I ran into a problem where I want to document the fix.

We have a repository method that is marked as @Transactional to delete a certain row. At first, we called that in a loop, from a method from one of our @Service classes and it worked fine.

We then refactored it and added a method to the repository, which accepts a list and then does the looping for us, calling the other repository method in the loop. Then stuff broke.

We got a lot of the following messages:

org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread – cannot reliably process ‘remove’ call
The part “No EntityManager with actual transaction available for current thread” points to a transaction problem, which happens when you don’t use @Transactional. But we did. So what happens?

Remember that annotations are worked out by using reflection. And reflection is, sometimes, a bit magic. And here it failed.

The problem was, that the @Transactional on the actual remove method wasn’t picked up, when it was called from another method in the repository. So no transaction was started.

To fix this, you have to add @Transactional to the method you call from outside your class – the one that accepted the list. That fixed the problem!

I recently changed my email address from a @somelocalproviderinswitzerland.ch to a @gmail.com address. Mainly because I’m using Google’s software anyway and because I can enjoy a much better email client online then. That meant, obviously, changing it on a lot of sites.

Fortunately, I’m using a password manager, so I at least had a listing of accounts I’m still using. Most of the time, it went like this:

4. Done

I also took the opportunity and added +domain to the address I registered, so if I reveice spam I at least know where I got it from. Apparently, some sites don’t like that and I had to enter just the normal email address. That’s because a regex for email is hard.

Some other accounts are quite deeply embedded into your actual operating system. I didn’t try changing my Microsoft or my Apple account, nor my PSN account since I feared of geting logged out and losing my purchases. Maybe it works, but I don’t have much trust in it.

On other occassions, I simply could not change my address. On one site I got into a weird account state where it wouldn’t let me confirm my address (it’s already confirmed) but I couldn’t log in too (you need to confirm it). So it seems that that part of the site is not as thoroughly tested…

Some other sites apparently use mail distributors for things like newsletters. This is ok, but it took a while until those distributors got my new address or it hasn’t happened yet aswell. So updating an address needs to go through everywhere.

Some sites just don’t let you change your address. I think they’ve used it as an ID in some database so they can’t change it. The only way here is to create a new account.

You also need to know that you won’t get rid of your old address soon. It’s still around in my GitHub account and will be for years, linking commits signed with my old address to my account. These are hardcoded and can’t be changed.

What I propose (even though I don’t think this will be implemented in the future): a standard interface for changing an e-mail address (and your password while you’re at it). On every site, I spent at least some 10 seconds to 2 minutes to actually finding the screen where I could change it.

I think you’ve all been in this situation: you send an email and after some time, you want to follow up. Maybe you didn’t receive a reply, maybe you forgot something. So how do you send an email with the exact same receiver(s) easily, probably with the same subject?

It turns out, that for some reason, Reply to All does exactly that. I actually got no logical explanation for that, since the normal Reply just composes a message back to you.

If anyone knows the reason for that behavior, I’m really interested!

I’m using Google Rewards on my phone. It’s an app where you can fill out surveys and get Google Play credits. It’s all fine and made by Google.

The weird thing about it, is how much you get. Usually, it’s about 0.35 CHF which is not much, but with enough surveys you can buy small games or even a book.

Now the problem is, you don’t always earn the same and it’s based on your answers. Typically, it goes like this:

• To which of these shops (X, Y and Z) have you been lately?
• When was the last time you were in shop X?
• How was your impression in shop X?

You can also select None on the first page, but guess what – you’ll only get 0.10 CHF for that and the survey is over.

I think this wouldn’t be that much of a problem if there were 10 each day, but it’s more like 1-2 each week. So you can either earn 0.20 or 0.70 CHF each week – guess what people do after some time.

My idea: smooth this out a bit. Right now the ratio is 1:3.5, it should go towards 1:2. That way, your answers get less biased.

We recently had a very weird issue considering HA config sync and failover. The failover was not working when we set the slave’s priority higher to the master’s and we found configuration sync issues. This was all done on FortiOS 5.2, so I can’t really say anything about any later versions, but I think this still applies.

By the way, all the commands here are in my little cheat sheet aswell. You can find that on a GitHub repo I have set up for cheatsheets like this.

We could see that the config was not the same on both cluster members. You can see this with a simple command: diag sys ha cluster-csum. This shows the configuration checksums. This showed the following (taken from the Fortinet page about config sync issues):

================== FG100D3G13xxxxxx =================
is_manage_master()=0, is_root_master()=0

debugzone
global: 89 f2 f0 0b e8 eb 0d ee f8 55 8b 47 27 7a 27 1e
root: cf 85 55 fe a7 e5 7c 6f a6 88 e5 a9 ea 26 e6 92
all: f4 62 b2 ce 81 9a c9 04 8f 67 07 ec a7 44 60 1f

checksum
global: 89 f2 f0 0b e8 eb 0d ee f8 55 8b 47 27 7a 27 1e
root: cf 85 55 fe a7 e5 7c 6f a6 88 e5 a9 ea 26 e6 92
all: f4 62 b2 ce 81 9a c9 04 8f 67 07 ec a7 44 60 1f

================== FG100D3G12xxxxxx ==================
is_manage_master()=1, is_root_master()=1

debugzone
global: 89 f2 f0 0b e8 eb 0d ee f8 55 8b 47 27 7a 27 1e
root: d8 f5 57 46 f0 b8 45 1e 00 be 45 92 a2 07 14 90
all: a7 8d cc c7 32 b5 81 a2 55 49 52 21 57 f9 3c 3b

checksum
global: 89 f2 f0 0b e8 eb 0d ee f8 55 8b 47 27 7a 27 1e
root: d8 f5 57 46 f0 b8 45 1e 00 be 45 92 a2 07 14 90
all: a7 8d cc c7 32 b5 81 a2 55 49 52 21 57 f9 3c 3b

As you can see, the cluster members have a difference in the root VDOM and therefore also in the all view. As you can see on that page, you can drill down the various levels with diagnose system ha showsum LEVEL. However, as far as I remember, there were no differences. A colleague then diff-ed the whole config and we found no differences – except in the config system ha part. As you know, Fortinet does not sync everything since there obviously are parts that don’t have the same settings on both cluster members. In that part, this is also the case since values like the priority should obviously be different.

However, it seems that while that whole part is not synced, some settings still go into that checksum calculation!

We then changed another parameter, set override enable on the slave (this was already set on the master). This basically changes the Master election algorithm to favor Priority before Uptime. So with this setting, a higher priority wins, without that, a higher uptime wins. In easy terms, it allows overriding the Master election via the priority.

After setting that configuration, we set the priority of the slave higher than the master and we had an immediate failover (like we wanted). We then checked the checksums again, and everything was fine! Setting the slave’s priority back to lower than the master’s triggered another wanted failover.

What we found out: some config parts are not synced, but they are still part of the configuration checksum. Keep that in mind when having similar issues.

UPDATE: we checked it in the lab and apparently, override is not part of the checksum calculation. So we can’t really pin it down to what actually fixed it, but it’s now ok.

This is a follow-up to my older post How to take notes as a CS student. Not everything in there is still valid.

First, I switched to a Mac starting this semester. The reason being that I need a Unix-like system but Linux is sometimes just too cumbersome. I also like that for certain tools, there’s just a “Mac” section instead of one for every kind of package manager out there.

The problem started when I saw, that OneNote is really not up to the job on the Mac. My usually 50 pages (read: images) long lectures and notes along them, are just laggy to load and scroll. It’s really not an issue on my other notebook which has about the same CPU specs as my MacBook Pro (I bought the old one for reasons).

# What I now do is the following

For every lecture we have, I copy it from my sync folder to a special lecture notes folder. I then open it in Preview and annotate it with notes from the lecture.

After the lecture, there’s a step I didn’t do before. In the evening or on the weekend, I go through the pages and write a summary for the current lecture. I think I’ll still have to go through the actual lectures in my study period before the exams, but it’s more a step of rethinking and maybe following up on things I didn’t have time during the lecture. You can find these at GitHub. To actually find them useful, you should be able to read German, but I think you’ll see the way it works.

To actually type up these summaries, I use Typora. Some reasons I particularly chose this:

In Typora, you type in WYSIWYG but it’s still Markdown and you see just a live rendering. This helps me spot errors as I type. It does support Markdown syntax (so you can also type an asterisk and it’ll create a list), but also menu items/keyboard shortcuts for choosing your formatting as you would in a word processor. It also supports Github Flavored Markdown, a flavor I personally see as the de-facto standard.

The feature that’s made it stand out the most, is picture pasting from the clipboard. See, some graphics are best simply copied from the lecture. Typora supports this very easily. You specify a folder where Typora can copy the picture files to (should be a folder in the same folder as your Markdown file). Whenever you paste an image, Typora will save the image in that folder and automatically add that image to your Markdown.

Additionally, it supports LaTeX Math Mode inline and block-style. This is not GHF, but as it’s enabled by $$/$$ (as in LaTeX), anyone rendering it on GitHub will just see what looks like LaTeX and can then figure out what that means. I think this is reasonable, as LaTeX is also the de-facto standard for typing up math. And anyone not fluent in LaTeX will still see the intention and meaning of a \frac{x}{y}. Why not switch to full-blown LaTeX you ask? I tried that and have typed up summaries in LaTeX but it’s just too much friction and that’s what you gotta keep down when learning a new habit.

Also, the live rendering switches to Markdown on certain parts, like inline code rendering, when you set the cursor to it. And it’s quite intelligent, so it doesn’t do this on list asterisks. And of course, you can always switch to Source Mode and fix those pesky errors you get when importing weirdly formatted stuff.

Is this the ultimate solution? Probably not. But as last time, it works for now!

I’m recently involved in translating the old German comments in the LibreOffice codebase to English ones. It’s quite a challenge, since you need your translation brain and also your coder brain. The end result should be a comment that is technically correct while still sounding English.

I ran into a small problem I made myself: at first, I used the web editor when I started, a week ago. I didn’t do any work since then until today, where I picked up again. Of course, someone else has made changes to that file, although in a different area.

Since I didn’t like the editor, I cloned the whole repo and used the setup scripts to commit and publish from my local machine.

Now instead of downloading the diff from the web version, I downloaded the whole file as-is and replaced the git version with that one. I then went on with my translations, eventually publishing it (applying for code review).

Now you might already know what I did wrong. When you commit in git, you essentially create a linked list of diff patches, all pointing to each other. So when I just downloaded and re-applied my complete version, my patch included reversing the change. Oops.

Of course, a code reviewer saw this, so nothing really happened. Now I still needed to fix this. My plan was:

• Put my complete new file in a new branch based on master
• Get a diff from that change someone else made
• Apply that diff
• Publish the new version where the patch is just my changes

And that worked out. To get a diff for a specific commit and only the part for a specific file:

git format-patch -1 <sha> specific/file.cxx

Then you just apply the patch via:

 patch < file.patch

Note that this may not work completely, so check for the error messages patch provides. For me, I had to manually apply a small edit where it couldn’t find the surroundings. Now, if this were multiple commits, you would just apply each patch sequentially, in the right order.

And then you can safely add, commit and publish as usual.


text:
Dissertation

2019

#### Degree Name

Doctor of Philosophy

Statistics

#### Major

Statistics; Applied Mathematics

Li Wang

Steve (Lisheng) Hou

#### Abstract

In this thesis, I study estimations and inferences for semiparametric spatial regression models and generalized geoadditive models (GgAMs). I use the bivariate penalized spline over triangulation (BPST) method in these models to incorporate the spatial information when it is available. There are three topics in the thesis.

In the first topic, we try to develop a sparse-partially linear spatial regression model ($\mathcal{S}$-PLSM) using a doubly penalized estimator to select and estimate the most significant linear covariates. We apply BPST to approximate a bivariate function over a spatial domain. A standard error formula is constructed to estimate the standard deviation of the estimators, which is tested by simulation studies. We show the consistency of our sparse estimator with asymptotic normality. An application to United States mortality illustrates improvements in estimation and prediction from the use of our estimator relative to other methods.

In the second topic, a generalized version of PLSM (GPLSM) is developed to allow a nonlinear link function relating the covariates to the mean of the response variables. This extension allows our method to deal with non-continuous response variables, such as count and binary variables. The iteratively reweighted least square (IRLS) algorithm helps to achieve the computational efficiency of our estimator. The consistency of the proposed estimator is proved with a convergence rate. A standard error formula is developed to construct confidence intervals for the linear estimator. A crash frequency real data analysis demonstrates the accuracy in estimation and prediction for GPLSM.

In the last topic, I build an \textsf{R} package, \textbf{GgAM}, which integrates model structure identification process, estimation methods, statistical inference tools of GgAMs together. We develop a semiparametric version of GgAM by adding a linear part into nonparametric GgAMs. This model shares the benefits from univariate splines, bivariate splines and local polynomials. A penalized quasi-likelihood estimator is firstly derived through the IRLS algorithm and then a spline-backfitted local polynomial estimator is obtained.

We propose a standard error formula for the parametric estimator in the model as well. Simultaneous confidence bands are developed to measure the accuracy of the univariate spline estimators.

A model structure identification process is contained before model fitting to better identify the function form (linearity/nonlinearity) of the continuous covariates.

Simulation studies are conducted to show the estimation accuracy and predictive power of our GgAM. The datasets of Georgia education attainment, Sydney housing prices, and Florida crash frequency are included to show the convenient and flexible uses of functions in the \textbf{GgAM} package.

In this thesis, I aim to develop computational algorithms to get accurate estimators and propose efficient inference tools to better interpret the results for GgAMs. These tools can be widely used in social, economic, and geographic applications with spatial data to draw perceptive conclusions.

Jue Wang

en

application/pdf

129 pages

COinS


text:
Copied to
clipboard

## G = C2×C32⋊D9order 324 = 22·34

### Direct product of C2 and C32⋊D9

Series: Derived Chief Lower central Upper central

 Derived series C1 — C3×C9 — C2×C32⋊D9
 Chief series C1 — C3 — C32 — C3×C9 — C32⋊C9 — C32⋊D9 — C2×C32⋊D9
 Lower central C3×C9 — C2×C32⋊D9
 Upper central C1 — C2

Generators and relations for C2×C32⋊D9
G = < a,b,c,d,e | a2=b3=c3=d9=e2=1, ab=ba, ac=ca, ad=da, ae=ea, dbd-1=ebe=bc=cb, cd=dc, ece=c-1, ede=d-1 >

Subgroups: 511 in 83 conjugacy classes, 26 normal (18 characteristic)
C1, C2, C2 [×2], C3 [×2], C3 [×2], C3 [×2], C22, S3 [×8], C6 [×2], C6 [×2], C6 [×4], C9 [×2], C32 [×2], C32 [×4], D6 [×4], C2×C6, D9 [×2], C18 [×2], C3×S3 [×8], C3⋊S3 [×2], C3×C6 [×2], C3×C6 [×4], C3×C9, C3×C9, C33, D18, S3×C6 [×4], C2×C3⋊S3, C9⋊S3 [×2], C3×C18, C3×C18, C3×C3⋊S3 [×2], C32×C6, C32⋊C9, C2×C9⋊S3, C6×C3⋊S3, C32⋊D9 [×2], C2×C32⋊C9, C2×C32⋊D9
Quotients: C1, C2 [×3], C3, C22, S3, C6 [×3], D6, C2×C6, D9, C3×S3, D18, S3×C6, C3×D9, C32⋊C6, C9⋊C6 [×2], C6×D9, C2×C32⋊C6, C2×C9⋊C6 [×2], C32⋊D9, C2×C32⋊D9

Smallest permutation representation of C2×C32⋊D9
On 54 points
Generators in S54
(1 25)(2 26)(3 27)(4 19)(5 20)(6 21)(7 22)(8 23)(9 24)(10 32)(11 33)(12 34)(13 35)(14 36)(15 28)(16 29)(17 30)(18 31)(37 54)(38 46)(39 47)(40 48)(41 49)(42 50)(43 51)(44 52)(45 53)
(2 36 44)(3 45 28)(5 30 38)(6 39 31)(8 33 41)(9 42 34)(11 49 23)(12 24 50)(14 52 26)(15 27 53)(17 46 20)(18 21 47)
(1 35 43)(2 36 44)(3 28 45)(4 29 37)(5 30 38)(6 31 39)(7 32 40)(8 33 41)(9 34 42)(10 48 22)(11 49 23)(12 50 24)(13 51 25)(14 52 26)(15 53 27)(16 54 19)(17 46 20)(18 47 21)
(1 2 3 4 5 6 7 8 9)(10 11 12 13 14 15 16 17 18)(19 20 21 22 23 24 25 26 27)(28 29 30 31 32 33 34 35 36)(37 38 39 40 41 42 43 44 45)(46 47 48 49 50 51 52 53 54)
(1 24)(2 23)(3 22)(4 21)(5 20)(6 19)(7 27)(8 26)(9 25)(10 45)(11 44)(12 43)(13 42)(14 41)(15 40)(16 39)(17 38)(18 37)(28 48)(29 47)(30 46)(31 54)(32 53)(33 52)(34 51)(35 50)(36 49)

G:=sub<Sym(54)| (1,25)(2,26)(3,27)(4,19)(5,20)(6,21)(7,22)(8,23)(9,24)(10,32)(11,33)(12,34)(13,35)(14,36)(15,28)(16,29)(17,30)(18,31)(37,54)(38,46)(39,47)(40,48)(41,49)(42,50)(43,51)(44,52)(45,53), (2,36,44)(3,45,28)(5,30,38)(6,39,31)(8,33,41)(9,42,34)(11,49,23)(12,24,50)(14,52,26)(15,27,53)(17,46,20)(18,21,47), (1,35,43)(2,36,44)(3,28,45)(4,29,37)(5,30,38)(6,31,39)(7,32,40)(8,33,41)(9,34,42)(10,48,22)(11,49,23)(12,50,24)(13,51,25)(14,52,26)(15,53,27)(16,54,19)(17,46,20)(18,47,21), (1,2,3,4,5,6,7,8,9)(10,11,12,13,14,15,16,17,18)(19,20,21,22,23,24,25,26,27)(28,29,30,31,32,33,34,35,36)(37,38,39,40,41,42,43,44,45)(46,47,48,49,50,51,52,53,54), (1,24)(2,23)(3,22)(4,21)(5,20)(6,19)(7,27)(8,26)(9,25)(10,45)(11,44)(12,43)(13,42)(14,41)(15,40)(16,39)(17,38)(18,37)(28,48)(29,47)(30,46)(31,54)(32,53)(33,52)(34,51)(35,50)(36,49)>;

G:=Group( (1,25)(2,26)(3,27)(4,19)(5,20)(6,21)(7,22)(8,23)(9,24)(10,32)(11,33)(12,34)(13,35)(14,36)(15,28)(16,29)(17,30)(18,31)(37,54)(38,46)(39,47)(40,48)(41,49)(42,50)(43,51)(44,52)(45,53), (2,36,44)(3,45,28)(5,30,38)(6,39,31)(8,33,41)(9,42,34)(11,49,23)(12,24,50)(14,52,26)(15,27,53)(17,46,20)(18,21,47), (1,35,43)(2,36,44)(3,28,45)(4,29,37)(5,30,38)(6,31,39)(7,32,40)(8,33,41)(9,34,42)(10,48,22)(11,49,23)(12,50,24)(13,51,25)(14,52,26)(15,53,27)(16,54,19)(17,46,20)(18,47,21), (1,2,3,4,5,6,7,8,9)(10,11,12,13,14,15,16,17,18)(19,20,21,22,23,24,25,26,27)(28,29,30,31,32,33,34,35,36)(37,38,39,40,41,42,43,44,45)(46,47,48,49,50,51,52,53,54), (1,24)(2,23)(3,22)(4,21)(5,20)(6,19)(7,27)(8,26)(9,25)(10,45)(11,44)(12,43)(13,42)(14,41)(15,40)(16,39)(17,38)(18,37)(28,48)(29,47)(30,46)(31,54)(32,53)(33,52)(34,51)(35,50)(36,49) );

G=PermutationGroup([(1,25),(2,26),(3,27),(4,19),(5,20),(6,21),(7,22),(8,23),(9,24),(10,32),(11,33),(12,34),(13,35),(14,36),(15,28),(16,29),(17,30),(18,31),(37,54),(38,46),(39,47),(40,48),(41,49),(42,50),(43,51),(44,52),(45,53)], [(2,36,44),(3,45,28),(5,30,38),(6,39,31),(8,33,41),(9,42,34),(11,49,23),(12,24,50),(14,52,26),(15,27,53),(17,46,20),(18,21,47)], [(1,35,43),(2,36,44),(3,28,45),(4,29,37),(5,30,38),(6,31,39),(7,32,40),(8,33,41),(9,34,42),(10,48,22),(11,49,23),(12,50,24),(13,51,25),(14,52,26),(15,53,27),(16,54,19),(17,46,20),(18,47,21)], [(1,2,3,4,5,6,7,8,9),(10,11,12,13,14,15,16,17,18),(19,20,21,22,23,24,25,26,27),(28,29,30,31,32,33,34,35,36),(37,38,39,40,41,42,43,44,45),(46,47,48,49,50,51,52,53,54)], [(1,24),(2,23),(3,22),(4,21),(5,20),(6,19),(7,27),(8,26),(9,25),(10,45),(11,44),(12,43),(13,42),(14,41),(15,40),(16,39),(17,38),(18,37),(28,48),(29,47),(30,46),(31,54),(32,53),(33,52),(34,51),(35,50),(36,49)])

42 conjugacy classes

 class 1 2A 2B 2C 3A 3B 3C 3D 3E 3F 3G 3H 6A 6B 6C 6D 6E 6F 6G 6H 6I 6J 6K 6L 9A ··· 9I 18A ··· 18I order 1 2 2 2 3 3 3 3 3 3 3 3 6 6 6 6 6 6 6 6 6 6 6 6 9 ··· 9 18 ··· 18 size 1 1 27 27 2 2 2 2 3 3 6 6 2 2 2 2 3 3 6 6 27 27 27 27 6 ··· 6 6 ··· 6

42 irreducible representations

 dim 1 1 1 1 1 1 2 2 2 2 2 2 2 2 6 6 6 6 type + + + + + + + + + + + image C1 C2 C2 C3 C6 C6 S3 D6 D9 C3×S3 D18 S3×C6 C3×D9 C6×D9 C32⋊C6 C9⋊C6 C2×C32⋊C6 C2×C9⋊C6 kernel C2×C32⋊D9 C32⋊D9 C2×C32⋊C9 C2×C9⋊S3 C9⋊S3 C3×C18 C32×C6 C33 C3×C6 C3×C6 C32 C32 C6 C3 C6 C6 C3 C3 # reps 1 2 1 2 4 2 1 1 3 2 3 2 6 6 1 2 1 2

Matrix representation of C2×C32⋊D9 in GL8(𝔽19)

 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 18
,
 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 18 18 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 18 18
,
 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 18 18 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 18 18 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 18 18 0 0 0 0 0 0 1 0
,
 14 2 0 0 0 0 0 0 17 12 0 0 0 0 0 0 0 0 0 0 0 0 18 18 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 18 18 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 18 18 0 0
,
 14 2 0 0 0 0 0 0 7 5 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 18 0 0 0 0 1 1 0 0 0 0 0 0 0 18 0 0 0 0 1 1 0 0 0 0 0 0 0 18 0 0 0 0

G:=sub<GL(8,GF(19))| [1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,18],[1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,18,1,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,1,18],[1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,18,1,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,18,1,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,18,1,0,0,0,0,0,0,18,0],[14,17,0,0,0,0,0,0,2,12,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,1,18,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,1,18,0,0,18,1,0,0,0,0,0,0,18,0,0,0,0,0],[14,7,0,0,0,0,0,0,2,5,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,18,0,0,0,0,1,0,0,0,0,0,0,0,1,18,0,0,0,0,1,0,0,0,0,0,0,0,1,18,0,0,0,0] >;

C2×C32⋊D9 in GAP, Magma, Sage, TeX

C_2\times C_3^2\rtimes D_9
% in TeX

G:=Group("C2xC3^2:D9");
// GroupNames label

G:=SmallGroup(324,63);
// by ID

G=gap.SmallGroup(324,63);
# by ID

G:=PCGroup([6,-2,-2,-3,-3,-3,-3,3171,303,453,2164,7781]);
// Polycyclic

G:=Group<a,b,c,d,e|a^2=b^3=c^3=d^9=e^2=1,a*b=b*a,a*c=c*a,a*d=d*a,a*e=e*a,d*b*d^-1=e*b*e=b*c=c*b,c*d=d*c,e*c*e=c^-1,e*d*e=d^-1>;
// generators/relations

׿
×
𝔽


text:
# Cohen's d for dependent sample t-test

Quick question: I've seen Cohen's d calculated two different ways for a dependent samples t-test (e.g., within-samples design testing the efficacy of a medication with pre/post timepoints).

1. Using the standard deviation of the change score in the denominator of the equation for Cohen's d.
2. Using the standard deviation of the pretest score in the denominator of the equation for Cohen's d.

I've found very little literature actually delineating which to use and/or when to use either option.

Any quick thoughts?

• did you discover how to calculate Cohen's d for paired sample t-test? Sep 4, 2016 at 14:36
• @user552231 There're open source R code for Cochen's D. Have you looked? Sep 5, 2016 at 6:32
• Jul 18, 2017 at 19:52

Geoff Cumming has a few comments on the matter (taken from Cumming, 2013):

In many cases, however, the best choice of standardizer is not the SD needed to conduct inference on the effect in question. Consider, for example, the paired design, such as a simple pre–post experiment in which a single group of participants provide both pretest and posttest data. The most appropriate standardizer is virtually always (Cumming, 2012, pp. 290–294; Cumming & Finch, 2001, pp. 568–570) an estimate of the SD in the pretest population, perhaps $$s_1$$, the pretest SD in our data. By contrast, inference about the difference requires $$s_{diff}$$, the SD of the paired differences—whether for a paired t test or to calculate a CI on the difference (Cumming & Finch, 2005). To the extent the pretest and posttest scores are correlated, $$s_{diff}$$ will be smaller than $$s_1$$, our experiment will be more sensitive, and a value of d calculated erroneously using $$s_{diff}$$ as standardizer will be too large.

The primary reason for choosing $$s_{pre}$$ as standardizer in the paired design is that the pretest population SD virtually always makes the best conceptual sense as a reference unit. Another important reason is to get d values that are likely to be comparable to d values given by other paired-design experiments possibly having different pretest–posttest correlations and by experiments with different designs, including the independent-groups design, all of which examine the same effect. The d values in all such cases are likely to be comparable because they use the same standardizer—the control or pretest SD. Such comparability is essential for meta-analysis, as well as for meaningful interpretation in context.

I found the formal answer in Frontiers in Psychology. If $$t$$ is the test statistic, and $$N$$ is the number observations, then:
$$d ≈ 2* \frac{t}{\sqrt{N}}$$

But be aware that some report a slightly different formula, namely $$d ≈ 2* \frac{t}{\sqrt{N-2}} ≈ 2* \frac{t}{\sqrt{df}}$$ See here, for example.

• Note that this will give you the standardized mean change where the mean change is standardized in terms of the the standard deviation of the change scores (what is denoted as 1. in the question). Sep 5, 2016 at 15:24
• The paper you cite says d ≈ 2*t/sqrt(N), not d ≈ t/sqrt(N) as is written in your answer
– user248711
Nov 3, 2020 at 10:08

Here is a suggested R function that compute Hedges' g (the unbiased version of Cohen's d) along with its confidence interval for either between or within-subject design:

gethedgesg <-function( x1, x2, design = "between", coverage = 0.95) {
# mandatory arguments are x1 and x2, both a vector of data

require(psych) # for the functions SD and harmonic.mean.

# store the columns in a dataframe: more convenient to handle one variable than two
X <- data.frame(x1,x2)

# get basic descriptive statistics
ns  <- lengths(X)
mns <- colMeans(X)
sds <- SD(X)

# get pairwise statistics
ntilde <- harmonic.mean(ns)
dmn    <- abs(mns[2]-mns[1])
sdp    <- sqrt( (ns[1]-1) *sds[1]^2 + (ns[2]-1)*sds[2]^2) / sqrt(ns[1]+ns[2]-2)

# compute biased Cohen's d (equation 1)
cohend <- dmn / sdp

# compute unbiased Hedges' g (equations 2a and 3)
eta     <- ns[1] + ns[2] - 2
J       <- gamma(eta/2) / (sqrt(eta/2) * gamma((eta-1)/2) )
hedgesg <-  cohend * J

# compute noncentrality parameter (equation 5a or 5b depending on the design)
lambda <- if(design == "between") {
hedgesg * sqrt( ntilde/2)
} else {
r <- cor(X)[1,2]
hedgesg * sqrt( ntilde/(2 * (1-r)) )
}

# confidence interval of the hedges g (equations 6 and 7)
tlow <- qt(1/2 - coverage/2, df = eta, ncp = lambda )
thig <- qt(1/2 + coverage/2, df = eta, ncp = lambda )

dlow <- tlow / lambda * hedgesg
dhig <- thig / lambda * hedgesg

# all done! display the results
cat("Hedges'g = ", hedgesg, "\n", coverage*100, "% CI = [", dlow, dhig, "]\n")

}

Here is how it could be used:

x1 <- c(53, 68, 66, 69, 83, 91)
x2 <- c(49, 60, 67, 75, 78, 89)

# using the defaults: between design and 95% coverage
gethedgesg(x1, x2)

# changing the defaults explicitely
gethedgesg(x1, x2, design = "within", coverage = 0.90 )

I hope it helps.


text:
# Gustavo Bandeira

less info
reputation
7
bio website goo.gl/LXAe1 location Recife, Brazil age 24 member for 1 year seen Feb 7 at 2:21 profile views 4

# Hello!

I am self-learning mathematics at the moment. My interest on mathematics was completely destroyed in high-school, after years ignoring it I've discovered it's interesting and beautiful. Now I'm planning to study it on university and even pursue a masters and a Ph.D! Yay!

I am very grateful for your $Time \cup Patience \cup Answers$. If my question is too stupid, blame these answerers.

Sometimes I do ask somethings that must be understood as obvious - this is perfectly normal: Some time ago I presumed that the factorial of $0$ is $0$, because I was following the pattern: $3!=6$, $2!=2$, $1!=1$ - $0!$ had to be $0$. I even thought that the guy who wrote the article saying that $0!=1$ was a complete dumbass, then I discovered I was the dumbass. This made me accept that I know nothing and things that are regarded as obvious sometimes aren't - I prefer to ask such obvious stuff than to carry a wrong intuition about it.

If you want to talk, you can e-mail me: $gioxis@gmail \cdot com$

I am also a pseudo musician, I study piano and I used to make music with my computer.

# 5 Questions

 3 How to make DD make a copy of my iPod's harddrive into my computer? 2 Is it possible to use DD to obtain splited images from a hard-drive? 1 What's the meaning of: /dev/rdisk0s1 and /dev/rdisk0s2s1? 0 How to mention a folder in a network? 0 Why is this happening?

# 133 Reputation

 +15 How to make DD make a copy of my iPod's harddrive into my computer? +10 Is it possible to use DD to obtain splited images from a hard-drive? +5 What's the meaning of: /dev/rdisk0s1 and /dev/rdisk0s2s1?

This user has not answered any questions

# 9 Tags

 0 dd × 3 0 networking 0 ssh × 3 0 desktop-environments 0 openssh × 2 0 gvfs 0 hard-drive 0 .desktop 0 calibre

# 46 Accounts

 Mathematics 3,463 rep 11356 Mathematica 1,080 rep 222 Stack Overflow 454 rep 39 Philosophy 261 rep 110 Android Enthusiasts 223 rep 110


text:
# Does any rotation matrix in 3-d space have only one non-zero eigenvector?

I know that in 2-dimension, a rotation matrix has no non-zero eigenvector. But in 3-d space, I can only imagine the rotation axis to be an eigenvector, and it looks like that the rotation angle can't be represent through eigenvectors or eigenvalues. So I guess in 3-dimension, any rotation matrix has and only has one eigenvector. Am I right?

-
What if the matrix rotates $180^{o}$? Consider 2D and 3D cases. –  Thomas E. Jan 26 '12 at 14:16

The general situation is: by the spectral theorem, after rotating coordinates your matrix has a basis of orthonormal eigenvectors $v_1... v_n$ with corresponding eigenvalues $\lambda_1 ... \lambda_n$. If $\lambda_i$ is not real then $\bar{\lambda}_i$ will be the eigenvalue corresponding to $\bar{v_i}$ (take complex conjugates of each component). Then $Re(v_i) = {v_i + \bar{v_i} \over 2}$ and $Im(v_i) = {v_i - \bar{v_i} \over 2i}$ will be a real basis for the space spanned by $v_i$ and $\bar{v_i}$, and $M$ acts as a rotation on that two-dimensional subspace which is neither 0 nor 180 degrees (since it has no real eigenvectors in that subspace).

So in general, after rotating coordinates $M$ is a direct sum of 1 by 1 and 2 by 2 matrices, where the 2 by 2's are all rotation matrices, not by 0 or 180 degrees, and the 1 by 1's have to be either 1 or -1 since the eigenvectors of a rotation have magnitude 1. In 3 dimensions we thus have the following possibilities after rotating coordinates, keeping in mind that a rotation has to have determinant 1:

1) M is the identity matrix.

2) M is a diagonal matrix with two -1's and one 1 along the diagonal.

3) M has an eigenvector $v$ (the axis of rotation) and is a rotation in the two perpendicular directions that is neither 0 nor 180 degrees.

-

You are right, but to be more precise it only has one real eigenvector. Rotations in 2 dimensions have the eigenvectors $(-i,1)$ and $(i,1)$ associated with the eigenvalues $\cos(t) - i \sin(t)$ and $\cos(t) + i \sin(t)$.

-
This is not quite correct in general; rotate the $xy$ plane by 180 degrees; then $(1,0,0)$ and $(0,1,0)$ are eigenvectors with eigenvalue $-1$, and $(0,0,1)$ is an eigenvector with eigenvalue $1$. –  Arturo Magidin Jan 26 '12 at 16:16

In two dimension the result you quoted is false as stated: the matrix $$\begin{pmatrix} -1 & 0 \\ 0 & -1\end{pmatrix} = \begin{pmatrix} \cos \pi & \sin \pi \\ -\sin \pi & \cos \pi \end{pmatrix}$$ is a rotation matrix. And every vector is an eigenvector.

It is true, however, if you explicitly disallow this particular case.

In three dimensions, note that since rotations preserves vector norms, you have that if $v$ is an eigenvector of a rotation $A$ you must have $Av = \pm v$. Now supposing you have two linearly independent eigenvectors $v$ and $w$. Let $u$ be the unique vector orthogonal to $v$ and $w$. Then you have $$(Au)^Tv = u^T A v = u^T (\pm v) = 0$$ and similarly $$(Au)^Tw = 0$$ and hence you get that $Au$ is proportional to $u$, and hence you must have $u$ is an eigenvector also.

This means that if a rotation matrix has more than 1 eigendirections, it must have a set of three linearly independent eigendirections.

-
In two dimensions, $I$ is also a rotation matrix. –  Stefan Smith Mar 28 '13 at 22:39


text:
# Books for chemistry..........

please suggest me some good books for chemistry which will be useful for all..as well as me.....

6 years, 8 months ago

This discussion board is a place to discuss our Daily Challenges and the math and science related to those challenges. Explanations are more than just a solution — they should explain the steps and thinking strategies that you used to obtain the solution. Comments should further the discussion of math and science.

When posting on Brilliant:

• Use the emojis to react to an explanation, whether you're congratulating a job well done , or just really confused .
• Ask specific questions about the challenge or the steps in somebody's explanation. Well-posed questions can add a lot to the discussion, but posting "I don't understand!" doesn't help anyone.
• Try to contribute something new to the discussion, whether it is an extension, generalization or other idea related to the challenge.

MarkdownAppears as
*italics* or _italics_ italics
**bold** or __bold__ bold
- bulleted- list
• bulleted
• list
1. numbered2. list
1. numbered
2. list
Note: you must add a full line of space before and after lists for them to show up correctly
paragraph 1paragraph 2

paragraph 1

paragraph 2

[example link](https://brilliant.org)example link
> This is a quote
This is a quote
    # I indented these lines
# 4 spaces, and now they show
# up as a code block.

print "hello world"
# I indented these lines
# 4 spaces, and now they show
# up as a code block.

print "hello world"
MathAppears as
Remember to wrap math in $$ ... $$ or $ ... $ to ensure proper formatting.
2 \times 3 $2 \times 3$
2^{34} $2^{34}$
a_{i-1} $a_{i-1}$
\frac{2}{3} $\frac{2}{3}$
\sqrt{2} $\sqrt{2}$
\sum_{i=1}^3 $\sum_{i=1}^3$
\sin \theta $\sin \theta$
\boxed{123} $\boxed{123}$

Sort by:

Chemical formula of alkaline

- 1 year ago

For Inorganic chemistry, i would go for JD Lee. Organic chemistry - Solomons-Fryhle or KS Verma. P Bahadur for Physical Chemistry

- 6 years, 8 months ago

The Chromium Group

- 6 years, 8 months ago

Arnold F. Holleman, Egon Wiber, Nils Wiberg

- 6 years, 8 months ago

- 6 years, 8 months ago

for physical or inorganic chemistry?

- 6 years, 8 months ago

For physical chemistry.

- 6 years, 8 months ago

Modern Approach to Chemical Calculations by R C Mukherjee is a good one for problems, and it also gives a brief explanation of topics before the problems.

- 6 years, 8 months ago

friends,plse suggest me some more (especially) for inorganic and physical chemistry

- 6 years, 8 months ago

RC Mukerjee is good for physical chemistry. You may also try out Essential Physical Chemistry by Ranjeet Shahi. JD Lee is by far the best for inorganic. For analytical chemistry, Vogel's is the best book.

- 6 years, 8 months ago

also peter sykes

- 6 years, 8 months ago

- 6 years, 8 months ago

i like this

- 6 years, 8 months ago

elements of physical chemistry by atkins and paula concise inorganic chemistry by J.D.Lee jr wade singh,pearson publications for organic chemistry

- 6 years, 8 months ago

Peter Atkins for Physical Chemistry, Solomons-Fryhle for Organic Chemistry.

- 6 years, 8 months ago

Water technology

- 1 year ago

zumdahl zumdahl

- 6 years, 8 months ago

next itself, i want to ask this but u did more faster than me.....

- 6 years, 8 months ago


text:
By introducing a new variable solve biquadratic equation:

$- x 4 +277 x2 -15876=0$

Correct result:

x1 =  9
x2 =  -9
x3 =  14
x4 =  -14

#### Solution:

$y=x^2 \ \\ \ \\ -y^2 +277y -15876 =0 \ \\ y^2 -277y +15876 =0 \ \\ \ \\ a=1; b=-277; c=15876 \ \\ D = b^2 - 4ac = 277^2 - 4\cdot 1 \cdot 15876 = 13225 \ \\ D>0 \ \\ \ \\ y_{1,2} = \dfrac{ -b \pm \sqrt{ D } }{ 2a } = \dfrac{ 277 \pm \sqrt{ 13225 } }{ 2 } \ \\ y_{1,2} = \dfrac{ 277 \pm 115 }{ 2 } \ \\ y_{1,2} = 138.5 \pm 57.5 \ \\ y_{1} = 196 \ \\ y_{2} = 81 \ \\ \ \\ \text{ Factored form of the equation: } \ \\ (y -196) (y -81) = 0 \ \\ \ \\ \ \\ x_1 = +\sqrt{y_2} = 9 \ \\ x_2 = -\sqrt{y_2} = -9 \ \\ x_3 = +\sqrt{y_1} = 14 \ \\ x_4 = -\sqrt{y_1} = -14$

We would be pleased if you find an error in the word problem, spelling mistakes, or inaccuracies and send it to us. Thank you!

Tips to related online calculators
Looking for help with calculating roots of a quadratic equation?
Do you have a linear equation or system of equations and looking for its solution? Or do you have quadratic equation?

## Next similar math problems:

• Land boundary
The land has the shape of a right triangle. The hypotenuse has a length of 30m. The circumference of the land is 72 meters. What is the length of the remaining sides of the land boundary?
• Faces diagonals
If a cuboid's diagonals are x, y, and z (wall diagonals or three faces), then find the cuboid volume. Solve for x=1.3, y=1, z=1.2
• Two chords
Calculate the length of chord AB and perpendicular chord BC to circle if AB is 4 cm from the center of the circle and BC 8 cm from the center of the circle.
• Geometric progressiob
If the sum of four consective terms of geometric progression is 80 and arithmetic mean of second and fourth term is 30 then find terms?
• Three members GP
The sum of three numbers in GP (geometric progression) is 21 and the sum of their squares is 189. Find the numbers.
• Diamond diagonals
Find the diamond diagonal's lengths if the area is 156 cm2 and side is 13 cm long.
• Substitution method
Solve goniometric equation: sin4 θ - 1/cos2 θ=cos2 θ - 2
• MO Z8-I-1 2018
Fero and David meet daily in the elevator. One morning they found that if they multiply their current age, they get 238. If they did the same after four years, this product would be 378. Determine the sum of the current ages of Fero and David.
• Right triangle eq2
Find the lengths of the sides and the angles in the right triangle. Given area S = 210 and perimeter o = 70.
• Diamond diagonals
Calculate the diamonds' diagonals lengths if the diamond area is 156 cm square, and the side length is 13 cm.
• Cuboid
Cuboid with edge a=6 cm and space diagonal u=31 cm has volume V=900 cm3. Calculate the length of the other edges.
• Sequences AP + GP
The three numbers that make up the arithmetic sequence have the sum of 30. If we subtract from the first 5, from the second 4 and keep the third, we get the geometric sequence. Find AP and GP members.
• Eq2 2
Solve following equation with quadratic members and rational function: (x2+1)/(x-4) + (x2-1)/(x+3) = 23
• The cylinder
In a rotating cylinder it is given: the surface of the shell (without bases) S = 96 cm2 and the volume V = 192 cm cubic. Calculate the radius and height of this cylinder.
• Hyperbola equation
Find the hyperbola equation with the center of S [0; 0], passing through the points: A [5; 3] B [8; -10]
• Rotary cylinder
In the rotary cylinder it is given: surface S = 96 cm2 and volume V = 192 cm cubic. Calculate its radius and height.


text:
1900

Calculation and Analysis of Efficiencies and Annual Performances of Power-to-Gas Systems

Abstract

This paper describes a generic and systematic method to calculate the efficiency and the annual performance for Power-to-Gas (PtG) systems. This approach gives the basis to analytically compare different PtG systems using different technologies under different boundary conditions. To have a comparable basis for efficiency calculations, a structured break down of the PtG system is done. Until now, there has not been a universal approach for efficiency calculations. This has resulted in a wide variety of efficiency calculations used in feasibility studies and for business-case calculations. For this, the PtG system is divided in two sub-systems: the electrolysis and the methanation. Each of the two sub-systems consists of several subsystem boundary levels. Staring from the main unit, i.e. the electrolysis stack and/or methanation reactor, further units that are required to operate complete PtG system are considered with their respective subsystem boundary conditions. The paper provides formulas how the efficiency of each level can be calculated and how efficiency deviations can be integrated which are caused by the extended energy flow calculations to and from energy users and thermal losses. By this, a sensitivity analysis of the sub-systems can be gained and comprehensive goal functions for optimizations can be defined. In a second step the annual performance of the system is calculated as the ratio of useable output and energetic input over one year. The input is the integral of the annual need of electrical and thermal energy of a PtG system, depending on the different operation states of the plant. The output is the higher heating value of the produced gas and – if applicable – heat flows that are used externally. The annual performance not only evaluates the steady-state operating efficiency under full load, but also other states of the system such as cold standby or service intervals. It is shown that for a full system operation assessment and further system concept development, the annual performance is of much higher importance than the steady-state system efficiency which is usually referred to. In a final step load profiles are defined and the annual performance is calculated for a specific system configuration. Using this example, different operation strategies are compared.

Keywords:
Related subjects:
Countries:


text:
## Cryptology ePrint Archive: Report 2001/063

Resettably-Sound Zero-Knowledge and its Applications

Boaz Barak and Oded Goldreich and Shafi Goldwasser and Yehuda Lindell

Abstract: Resettably-sound proofs and arguments remain sound even when the prover can reset the verifier, and so force it to use the same random coins in repeated executions of the protocol. We show that resettably-sound zero-knowledge {\em arguments} for NP exist if collision-resistant hash functions exist. In contrast, resettably-sound zero-knowledge {\em proofs} are possible only for languages in P/poly.

We present two applications of resettably-sound zero-knowledge arguments. First, we construct resettable zero-knowledge arguments of knowledge for NP, using a natural relaxation of the definition of arguments (and proofs) of knowledge. We note that, under the standard definition of proofs of knowledge, it is impossible to obtain resettable zero-knowledge arguments of knowledge for languages outside BPP. Second, we construct a constant-round resettable zero-knowledge argument for NP in the public-key model, under the assumption that collision-resistant hash functions exist. This improves upon the sub-exponential hardness assumption required by previous constructions.

We emphasize that our results use non-black-box zero-knowledge simulations. Indeed, we show that some of the results are {\em impossible} to achieve using black-box simulations. In particular, only languages in BPP have resettably-sound arguments that are zero-knowledge with respect to black-box simulation.

Category / Keywords: foundations / zero-knowledge, resettable zero-knowledge, resettable soundness, proofs of knowledge, public-key model

Publication Info: To appear in 42nd FOCS, 2001.

Date: received 7 Aug 2001, last revised 30 Mar 2006

Contact author: lindell at cs biu ac il

Available format(s): Postscript (PS) | Compressed Postscript (PS.GZ) | PDF | BibTeX Citation

[ Cryptology ePrint archive ]